You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
| /* global libsignal, libloki, textsecure, StringView, dcodeIO */
 | |
| 
 | |
| '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 fallback messages', async () => {
 | |
|       const buffer = new ArrayBuffer(10);
 | |
|       const { type } = await fallbackCipher.encrypt(buffer);
 | |
|       assert.strictEqual(
 | |
|         type,
 | |
|         textsecure.protobuf.Envelope.Type.FALLBACK_MESSAGE
 | |
|       );
 | |
|     });
 | |
| 
 | |
|     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 bufferBody = dcodeIO.ByteBuffer.wrap(
 | |
|         body,
 | |
|         'binary'
 | |
|       ).toArrayBuffer();
 | |
|       const result = await fallbackCipher.decrypt(bufferBody);
 | |
|       assert.deepEqual(result, arr.buffer);
 | |
|     });
 | |
|   });
 | |
| });
 |