0
0
mirror of https://github.com/signalapp/libsignal.git synced 2024-09-20 03:52:17 +02:00

Merge pull request #233 from signalapp/jack/self-send-indicator

Have TS binding return null on a sealed sender self-send
This commit is contained in:
Jack Lloyd 2021-03-03 16:10:41 -05:00 committed by GitHub
commit 4d0557c6c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 9 deletions

View File

@ -1217,7 +1217,7 @@ export async function sealedSenderDecryptMessage(
identityStore: IdentityKeyStore,
prekeyStore: PreKeyStore,
signedPrekeyStore: SignedPreKeyStore
): Promise<SealedSenderDecryptionResult> {
): Promise<SealedSenderDecryptionResult | null> {
const ssdr = await SC.SealedSender_DecryptMessage(
message,
trustRoot,
@ -1230,6 +1230,9 @@ export async function sealedSenderDecryptMessage(
prekeyStore,
signedPrekeyStore
);
if (ssdr == null) {
return null;
}
return SealedSenderDecryptionResult._fromNativeHandle(ssdr);
}

View File

@ -93,7 +93,7 @@ export function SealedSenderDecryptionResult_GetDeviceId(obj: Wrapper<SealedSend
export function SealedSenderDecryptionResult_GetSenderE164(obj: Wrapper<SealedSenderDecryptionResult>): string | null;
export function SealedSenderDecryptionResult_GetSenderUuid(obj: Wrapper<SealedSenderDecryptionResult>): string;
export function SealedSenderDecryptionResult_Message(obj: Wrapper<SealedSenderDecryptionResult>): Buffer;
export function SealedSender_DecryptMessage(message: Buffer, trustRoot: Wrapper<PublicKey>, timestamp: number, localE164: string | null, localUuid: string, localDeviceId: number, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<SealedSenderDecryptionResult>;
export function SealedSender_DecryptMessage(message: Buffer, trustRoot: Wrapper<PublicKey>, timestamp: number, localE164: string | null, localUuid: string, localDeviceId: number, sessionStore: SessionStore, identityStore: IdentityKeyStore, prekeyStore: PreKeyStore, signedPrekeyStore: SignedPreKeyStore): Promise<SealedSenderDecryptionResult | null>;
export function SealedSender_DecryptToUsmc(ctext: Buffer, identityStore: IdentityKeyStore): Promise<UnidentifiedSenderMessageContent>;
export function SealedSender_EncryptMessage(destination: Wrapper<ProtocolAddress>, senderCert: Wrapper<SenderCertificate>, ptext: Buffer, sessionStore: SessionStore, identityStore: IdentityKeyStore): Promise<Buffer>;
export function SenderCertificate_Deserialize(buffer: Buffer): SenderCertificate;

View File

@ -804,10 +804,14 @@ describe('SignalClient', () => {
bSPreK
);
assert.deepEqual(bPlaintext.message(), aPlaintext);
assert.deepEqual(bPlaintext.senderE164(), aE164);
assert.deepEqual(bPlaintext.senderUuid(), aUuid);
assert.deepEqual(bPlaintext.deviceId(), aDeviceId);
assert(bPlaintext != null);
if (bPlaintext != null) {
assert.deepEqual(bPlaintext.message(), aPlaintext);
assert.deepEqual(bPlaintext.senderE164(), aE164);
assert.deepEqual(bPlaintext.senderUuid(), aUuid);
assert.deepEqual(bPlaintext.deviceId(), aDeviceId);
}
});
it('AES-GCM-SIV test vector', () => {
// RFC 8452, appendix C.2

View File

@ -1081,8 +1081,8 @@ async fn SealedSender_DecryptMessage(
identity_store: &mut dyn IdentityKeyStore,
prekey_store: &mut dyn PreKeyStore,
signed_prekey_store: &mut dyn SignedPreKeyStore,
) -> Result<SealedSenderDecryptionResult> {
sealed_sender_decrypt(
) -> Result<Option<SealedSenderDecryptionResult>> {
let result = sealed_sender_decrypt(
message,
trust_root,
timestamp,
@ -1095,7 +1095,13 @@ async fn SealedSender_DecryptMessage(
signed_prekey_store,
None,
)
.await
.await;
match result {
Ok(r) => Ok(Some(r)),
Err(SignalProtocolError::SealedSenderSelfSend) => Ok(None),
Err(e) => Err(e),
}
}
#[bridge_fn(