123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- * 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
- */
- // Test HMAC message digester with SHA-256 hash function.
- describe('HmacDigest with SHA-256 hash function ...', function() {
- 'use strict';
- var _testString = 'Ox2fUJq1gAbX';
- var _hmacSecretKeyBase64 = 'lFoxPuafE3Kk4jcqqHAatdwfsRS8ZcaF9N4gg+85KoA=';
- var _hmacMessageDigestBase64 = '6qiFgZH6VWXti+ltAqmBO9CryybDJC6oHDJsD4bxVlI=';
- describe('should be able to ..', function() {
- it('verify identity when using identical data.', function() {
- cryptolib('symmetric.mac', 'commons.utils', function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var converters = new box.commons.utils.Converters();
- var hmacSha256Digester = macFactory.create();
- var dataB64 = converters.base64Encode(_testString);
- var arrayDataB64 = [dataB64];
- var macB64 =
- hmacSha256Digester.generate(_hmacSecretKeyBase64, arrayDataB64);
- var verified = hmacSha256Digester.verify(
- macB64, _hmacSecretKeyBase64, arrayDataB64);
- // Verify that new message digest is equal to original.
- expect(verified).toBeTruthy();
- });
- });
- it('generate identical message digests when using identical data.',
- function() {
- cryptolib('symmetric.mac', 'commons.utils', function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var converters = new box.commons.utils.Converters();
- var hmacSha256Digester = macFactory.create();
- var dataB64 = converters.base64Encode(_testString);
- var arrayDataB64 = [dataB64];
- var macB64_1 =
- hmacSha256Digester.generate(_hmacSecretKeyBase64, arrayDataB64);
- var macB64_2 =
- hmacSha256Digester.generate(_hmacSecretKeyBase64, arrayDataB64);
- // Verify that new message digest is equal to original.
- expect(macB64_1).toBe(macB64_2);
- });
- });
- });
- it('generate different message digests when using different data.',
- function() {
- cryptolib('symmetric.mac', 'commons.utils', function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var converters = new box.commons.utils.Converters();
- var hmacSha256Digester = macFactory.create();
- var dataB64 = converters.base64Encode(_testString);
- var arrayDataB64 = [dataB64];
- var macB64_1 =
- hmacSha256Digester.generate(_hmacSecretKeyBase64, arrayDataB64);
- dataB64 = converters.base64Encode(_testString + 'x');
- arrayDataB64 = [dataB64];
- var macB64_2 =
- hmacSha256Digester.generate(_hmacSecretKeyBase64, arrayDataB64);
- // Verify that new message digest is equal to original.
- expect(macB64_1).not.toBe(macB64_2);
- });
- });
- it('generate message digest identical to that generated using Java HMACwithSHA256.',
- function() {
- cryptolib('symmetric.mac', 'commons.utils', function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var converters = new box.commons.utils.Converters();
- var hmacSha256Digester = macFactory.create();
- var dataB64 = converters.base64Encode(_testString);
- var arrayDataB64 = [dataB64];
- var macB64 =
- hmacSha256Digester.generate(_hmacSecretKeyBase64, arrayDataB64);
- // Verify that new message digest is equal to original.
- expect(macB64).toBe(_hmacMessageDigestBase64);
- });
- });
- it('throw an error when the the given data to digest is incorrect.',
- function() {
- cryptolib('symmetric.mac', 'commons.utils', function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var hmacSha256Digester = macFactory.create();
- expect(function() {
- hmacSha256Digester.generate(_hmacSecretKeyBase64, []);
- }).toThrow();
- });
- });
- it('throw an error when the given hash algorithm is wrong.', function() {
- var f = function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var hmacSha256Digester = macFactory.create();
- var converters = new box.commons.utils.Converters();
- var dataB64 = converters.base64Encode(_testString);
- var arrayDataB64 = [dataB64];
- expect(function() {
- hmacSha256Digester.generate(_hmacSecretKeyBase64, arrayDataB64);
- }).toThrow();
- };
- f.policies = {symmetric: {mac: {hash: 'WRONG', provider: 'Forge'}}};
- cryptolib('symmetric.mac', 'commons.utils', f);
- });
- it('throw an error when the given provider is wrong.', function() {
- var f = function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- expect(function() {
- macFactory.create();
- }).toThrow();
- };
- f.policies = {symmetric: {mac: {hash: 'SHA256', provider: 'WRONG'}}};
- cryptolib('symmetric.mac', 'commons.utils', f);
- });
- it('generates a valid MAC', function() {
- var originalMessage = 'test';
- var secretKeyB64fromHTML = 'lFoxPuafE3Kk4jcqqHAatdwfsRS8ZcaF9N4gg+85KoA=';
- cryptolib('symmetric.mac', 'commons.utils', function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var converters = new box.commons.utils.Converters();
- var hmacSha256Digester = macFactory.create();
- var dataB64 = converters.base64Encode(originalMessage);
- var arrayDataB64 = [dataB64];
- var macB64 =
- hmacSha256Digester.generate(secretKeyB64fromHTML, arrayDataB64);
- expect(macB64).toBe('px+hdJi/ucaNctN2yM9ZIGE9/mvK1ZhmOGvsZ19bSRI=');
- });
- });
- it('generates a valid MAC with special characters', function() {
- var originalMessage = 'tést';
- var secretKeyB64fromHTML = 'lFoxPuafE3Kk4jcqqHAatdwfsRS8ZcaF9N4gg+85KoA=';
- cryptolib('symmetric.mac', 'commons.utils', function(box) {
- var macFactory = new box.symmetric.mac.factory.MacFactory();
- var converters = new box.commons.utils.Converters();
- var hmacSha256Digester = macFactory.create();
- var dataB64 = converters.base64Encode(originalMessage);
- var arrayDataB64 = [dataB64];
- var macB64 =
- hmacSha256Digester.generate(secretKeyB64fromHTML, arrayDataB64);
- expect(macB64).toBe('6zRTAMeZqMvJaBCtwewm19R5ECQ4manZnk8uI4oOWus=');
- });
- });
- });
|