Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
private to_store(serialised: ArrayBuffer | string): string {
return Encoder.toBase64(serialised).asString;
}
private async sendExternalGenericMessage(
sendingClientId: string,
conversationId: string,
asset: EncryptedAsset,
preKeyBundles: UserPreKeyBundleMap
): Promise {
const {cipherText, keyBytes, sha256} = asset;
const messageId = ConversationService.createId();
const externalMessage = this.protocolBuffers.External.create({
otrKey: new Uint8Array(keyBytes),
sha256: new Uint8Array(sha256),
});
const base64CipherText = Encoder.toBase64(cipherText).asString;
const customTextMessage = this.protocolBuffers.GenericMessage.create({
external: externalMessage,
messageId,
});
const plainTextBuffer: Buffer = this.protocolBuffers.GenericMessage.encode(customTextMessage).finish();
const recipients = await this.cryptographyService.encrypt(plainTextBuffer, preKeyBundles as UserPreKeyBundleMap);
const message: NewOTRMessage = {
data: base64CipherText,
recipients,
sender: sendingClientId,
};
return this.apiClient.conversation.api.postOTRMessage(sendingClientId, conversationId, message);
private to_store(serialised: ArrayBuffer | string): string {
return Encoder.toBase64(serialised).asString;
}
}
private async encryptPayloadForSession(
sessionId: string,
plainText: Uint8Array,
base64EncodedPreKey: string,
): Promise {
this.logger.log(`Encrypting Payload for session ID "${sessionId}"`);
let encryptedPayload;
try {
const decodedPreKeyBundle: Uint8Array = Decoder.fromBase64(base64EncodedPreKey).asBytes;
const payloadAsBuffer: ArrayBuffer = await this.cryptobox.encrypt(
sessionId,
plainText,
decodedPreKeyBundle.buffer,
);
encryptedPayload = Encoder.toBase64(payloadAsBuffer).asString;
} catch (error) {
this.logger.error(`Could not encrypt payload: ${error.message}`);
encryptedPayload = '💣';
}
return {sessionId, encryptedPayload};
}