/* global libsignal, libloki, textsecure, StringView */ 'use strict'; describe('Crypto', () => { describe('FallBackSessionCipher', () => { let fallbackCipher; let identityKey; let address; const store = textsecure.storage.protocol; before(async () => { clearDatabase(); identityKey = await libsignal.KeyHelper.generateIdentityKeyPair(); store.put('identityKey', identityKey); const key = libsignal.crypto.getRandomBytes(32); const pubKeyString = StringView.arrayBufferToHex(key); address = new libsignal.SignalProtocolAddress(pubKeyString, 1); fallbackCipher = new libloki.crypto.FallBackSessionCipher(address); }); it('should encrypt fallback cipher messages as friend requests', async () => { const buffer = new ArrayBuffer(10); const { type } = await fallbackCipher.encrypt(buffer); assert.strictEqual( type, textsecure.protobuf.Envelope.Type.FRIEND_REQUEST ); }); it('should encrypt and then decrypt a message with the same result', async () => { const arr = new Uint8Array([1, 2, 3, 4, 5]); const { body } = await fallbackCipher.encrypt(arr.buffer); const result = await fallbackCipher.decrypt(body); assert.deepEqual(result, arr.buffer); }); }); });