123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- * Copyright 2018 Scytl Secure Electronic Voting SA
- *
- * All rights reserved
- *
- * See our extended copyright notice in *file 'Copyright.txt' which is part of this source code package
- */
- describe('Symmetric service...', function() {
- 'use strict';
- describe('should be able to ..', function() {
- it('return a secret key for encryption', function() {
- cryptolib('symmetric.service', function(box) {
- var secretKey = box.symmetric.service.getSecretKeyForEncryption();
- expect(secretKey).toBeDefined();
- });
- });
- it('return a secret key for mac', function() {
- cryptolib('symmetric.service', function(box) {
- var secretKey = box.symmetric.service.getSecretKeyForMac();
- expect(secretKey).toBeDefined();
- });
- });
- it('encrypt and decrypt', function() {
- cryptolib('symmetric.service', 'commons.utils', function(box) {
- // generate a secret key
- var secretKeyB64 = box.symmetric.service.getSecretKeyForEncryption();
- // encrypt and decrypt data
- var converters = new box.commons.utils.Converters();
- var dataB64 = converters.base64Encode('anyString');
- var encryptedDataBase64 =
- box.symmetric.service.encrypt(secretKeyB64, dataB64);
- var decryptedDataBase64 =
- box.symmetric.service.decrypt(secretKeyB64, encryptedDataBase64);
- expect(dataB64 === decryptedDataBase64).toBeTruthy();
- });
- });
- it('compute a MAC and verify it', function() {
- cryptolib('symmetric.service', 'commons.utils', function(box) {
- // generate a secret key
- var secretKeyB64 = box.symmetric.service.getSecretKeyForMac();
- // encrypt and decrypt data
- var converters = new box.commons.utils.Converters();
- var dataB64 = converters.base64Encode('anyString');
- var macB64 = box.symmetric.service.getMac(secretKeyB64, [dataB64]);
- var verified =
- box.symmetric.service.verifyMac(macB64, secretKeyB64, [dataB64]);
- expect(verified).toBeTruthy();
- });
- });
- });
- describe('bug #90835', function() {
- it('if the original message contains spaces, they should be preserved',
- function() {
- cryptolib('symmetric.service', 'commons.utils', function(box) {
- var text = 'text with some spaces';
- var secretKeyB64 = box.symmetric.service.getSecretKeyForEncryption();
- // encrypt and decrypt data
- var converters = new box.commons.utils.Converters();
- var dataB64 = converters.base64Encode(text);
- var encryptedDataBase64 =
- box.symmetric.service.encrypt(secretKeyB64, dataB64);
- var decryptedDataBase64 =
- box.symmetric.service.decrypt(secretKeyB64, encryptedDataBase64);
- var decryptedData = converters.base64Decode(decryptedDataBase64);
- // Verify that data was successfully decrypted.
- expect(decryptedData).toEqual(text);
- });
- });
- it('if the original message contains only spaces, they should be preserved',
- function() {
- cryptolib('symmetric.service', 'commons.utils', function(box) {
- var text = ' ';
- var secretKeyB64 = box.symmetric.service.getSecretKeyForEncryption();
- // encrypt and decrypt data
- var converters = new box.commons.utils.Converters();
- var dataB64 = converters.base64Encode(text);
- var encryptedDataBase64 =
- box.symmetric.service.encrypt(secretKeyB64, dataB64);
- var decryptedDataBase64 =
- box.symmetric.service.decrypt(secretKeyB64, encryptedDataBase64);
- var decryptedData = converters.base64Decode(decryptedDataBase64);
- // Verify that data was successfully decrypted.
- expect(decryptedData).toEqual(text);
- });
- });
- });
- });
|