new tests for node
This commit is contained in:
parent
87ac298af9
commit
dfcde8a29a
|
@ -27,6 +27,11 @@ const RsaPrivateKey = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXRVrCX
|
||||||
'+tPVgppLcG0+tMdLjigFQiDUQk2y3WjyxP5ZvXu7U96jaJRI8PFMoE06WeVYcdIzrID2HvqH+w0UQJFrLJ/0Mn4stFAEzXKZ' +
|
'+tPVgppLcG0+tMdLjigFQiDUQk2y3WjyxP5ZvXu7U96jaJRI8PFMoE06WeVYcdIzrID2HvqH+w0UQJFrLJ/0Mn4stFAEzXKZ' +
|
||||||
'BokBGnjFnTnKcs7nv/O8=';
|
'BokBGnjFnTnKcs7nv/O8=';
|
||||||
|
|
||||||
|
const Sha1Mac = '4d4c223f95dc577b665ec4ccbcb680b80a397038';
|
||||||
|
const Sha256Mac = '6be3caa84922e12aaaaa2f16c40d44433bb081ef323db584eb616333ab4e874f';
|
||||||
|
const Sha512Mac = '21910e341fa12106ca35758a2285374509326c9fbe0bd64e7b99c898f841dc948c58ce66d3504d8883c' +
|
||||||
|
'5ea7817a0b7c5d4d9b00364ccd214669131fc17fe4aca';
|
||||||
|
|
||||||
describe('NodeCrypto Function Service', () => {
|
describe('NodeCrypto Function Service', () => {
|
||||||
describe('pbkdf2', () => {
|
describe('pbkdf2', () => {
|
||||||
const regular256Key = 'pj9prw/OHPleXI6bRdmlaD+saJS4awrMiQsQiDjeu2I=';
|
const regular256Key = 'pj9prw/OHPleXI6bRdmlaD+saJS4awrMiQsQiDjeu2I=';
|
||||||
|
@ -66,14 +71,23 @@ describe('NodeCrypto Function Service', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('hmac', () => {
|
describe('hmac', () => {
|
||||||
const sha1Mac = '4d4c223f95dc577b665ec4ccbcb680b80a397038';
|
testHmac('sha1', Sha1Mac);
|
||||||
const sha256Mac = '6be3caa84922e12aaaaa2f16c40d44433bb081ef323db584eb616333ab4e874f';
|
testHmac('sha256', Sha256Mac);
|
||||||
const sha512Mac = '21910e341fa12106ca35758a2285374509326c9fbe0bd64e7b99c898f841dc948c58ce66d3504d8883c' +
|
testHmac('sha512', Sha512Mac);
|
||||||
'5ea7817a0b7c5d4d9b00364ccd214669131fc17fe4aca';
|
});
|
||||||
|
|
||||||
testHmac('sha1', sha1Mac);
|
describe('timeSafeEqual', () => {
|
||||||
testHmac('sha256', sha256Mac);
|
testCompare(false);
|
||||||
testHmac('sha512', sha512Mac);
|
});
|
||||||
|
|
||||||
|
describe('hmacFast', () => {
|
||||||
|
testHmac('sha1', Sha1Mac, true);
|
||||||
|
testHmac('sha256', Sha256Mac, true);
|
||||||
|
testHmac('sha512', Sha512Mac, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('timeSafeEqualFast', () => {
|
||||||
|
testCompare(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('aesEncrypt', () => {
|
describe('aesEncrypt', () => {
|
||||||
|
@ -227,15 +241,58 @@ function testHash(algorithm: 'sha1' | 'sha256' | 'sha512', regularHash: string,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function testHmac(algorithm: 'sha1' | 'sha256' | 'sha512', mac: string) {
|
function testHmac(algorithm: 'sha1' | 'sha256' | 'sha512', mac: string, fast = false) {
|
||||||
it('should create valid ' + algorithm + ' hmac', async () => {
|
it('should create valid ' + algorithm + ' hmac', async () => {
|
||||||
const cryptoFunctionService = new NodeCryptoFunctionService();
|
const cryptoFunctionService = new NodeCryptoFunctionService();
|
||||||
const computedMac = await cryptoFunctionService.hmac(Utils.fromUtf8ToArray('SignMe!!').buffer,
|
const value = Utils.fromUtf8ToArray('SignMe!!').buffer;
|
||||||
Utils.fromUtf8ToArray('secretkey').buffer, algorithm);
|
const key = Utils.fromUtf8ToArray('secretkey').buffer;
|
||||||
|
let computedMac: ArrayBuffer = null;
|
||||||
|
if (fast) {
|
||||||
|
computedMac = await cryptoFunctionService.hmacFast(value, key, algorithm);
|
||||||
|
} else {
|
||||||
|
computedMac = await cryptoFunctionService.hmac(value, key, algorithm);
|
||||||
|
}
|
||||||
expect(Utils.fromBufferToHex(computedMac)).toBe(mac);
|
expect(Utils.fromBufferToHex(computedMac)).toBe(mac);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testCompare(fast = false) {
|
||||||
|
it('should successfully compare two of the same values', async () => {
|
||||||
|
const cryptoFunctionService = new NodeCryptoFunctionService();
|
||||||
|
const a = new Uint8Array(2);
|
||||||
|
a[0] = 1;
|
||||||
|
a[1] = 2;
|
||||||
|
const equal = fast ? await cryptoFunctionService.timeSafeEqualFast(a.buffer, a.buffer) :
|
||||||
|
await cryptoFunctionService.timeSafeEqual(a.buffer, a.buffer);
|
||||||
|
expect(equal).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should successfully compare two different values of the same length', async () => {
|
||||||
|
const cryptoFunctionService = new NodeCryptoFunctionService();
|
||||||
|
const a = new Uint8Array(2);
|
||||||
|
a[0] = 1;
|
||||||
|
a[1] = 2;
|
||||||
|
const b = new Uint8Array(2);
|
||||||
|
b[0] = 3;
|
||||||
|
b[1] = 4;
|
||||||
|
const equal = fast ? await cryptoFunctionService.timeSafeEqualFast(a.buffer, b.buffer) :
|
||||||
|
await cryptoFunctionService.timeSafeEqual(a.buffer, b.buffer);
|
||||||
|
expect(equal).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should successfully compare two different values of different lengths', async () => {
|
||||||
|
const cryptoFunctionService = new NodeCryptoFunctionService();
|
||||||
|
const a = new Uint8Array(2);
|
||||||
|
a[0] = 1;
|
||||||
|
a[1] = 2;
|
||||||
|
const b = new Uint8Array(2);
|
||||||
|
b[0] = 3;
|
||||||
|
const equal = fast ? await cryptoFunctionService.timeSafeEqualFast(a.buffer, b.buffer) :
|
||||||
|
await cryptoFunctionService.timeSafeEqual(a.buffer, b.buffer);
|
||||||
|
expect(equal).toBe(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function makeStaticByteArray(length: number) {
|
function makeStaticByteArray(length: number) {
|
||||||
const arr = new Uint8Array(length);
|
const arr = new Uint8Array(length);
|
||||||
for (let i = 0; i < length; i++) {
|
for (let i = 0; i < length; i++) {
|
||||||
|
|
|
@ -33,6 +33,11 @@ const RsaPrivateKey = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXRVrCX
|
||||||
'+tPVgppLcG0+tMdLjigFQiDUQk2y3WjyxP5ZvXu7U96jaJRI8PFMoE06WeVYcdIzrID2HvqH+w0UQJFrLJ/0Mn4stFAEzXKZ' +
|
'+tPVgppLcG0+tMdLjigFQiDUQk2y3WjyxP5ZvXu7U96jaJRI8PFMoE06WeVYcdIzrID2HvqH+w0UQJFrLJ/0Mn4stFAEzXKZ' +
|
||||||
'BokBGnjFnTnKcs7nv/O8=';
|
'BokBGnjFnTnKcs7nv/O8=';
|
||||||
|
|
||||||
|
const Sha1Mac = '4d4c223f95dc577b665ec4ccbcb680b80a397038';
|
||||||
|
const Sha256Mac = '6be3caa84922e12aaaaa2f16c40d44433bb081ef323db584eb616333ab4e874f';
|
||||||
|
const Sha512Mac = '21910e341fa12106ca35758a2285374509326c9fbe0bd64e7b99c898f841dc948c58ce66d3504d8883c' +
|
||||||
|
'5ea7817a0b7c5d4d9b00364ccd214669131fc17fe4aca';
|
||||||
|
|
||||||
describe('WebCrypto Function Service', () => {
|
describe('WebCrypto Function Service', () => {
|
||||||
describe('pbkdf2', () => {
|
describe('pbkdf2', () => {
|
||||||
const regular256Key = 'pj9prw/OHPleXI6bRdmlaD+saJS4awrMiQsQiDjeu2I=';
|
const regular256Key = 'pj9prw/OHPleXI6bRdmlaD+saJS4awrMiQsQiDjeu2I=';
|
||||||
|
@ -72,14 +77,9 @@ describe('WebCrypto Function Service', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('hmac', () => {
|
describe('hmac', () => {
|
||||||
const sha1Mac = '4d4c223f95dc577b665ec4ccbcb680b80a397038';
|
testHmac('sha1', Sha1Mac);
|
||||||
const sha256Mac = '6be3caa84922e12aaaaa2f16c40d44433bb081ef323db584eb616333ab4e874f';
|
testHmac('sha256', Sha256Mac);
|
||||||
const sha512Mac = '21910e341fa12106ca35758a2285374509326c9fbe0bd64e7b99c898f841dc948c58ce66d3504d8883c' +
|
testHmac('sha512', Sha512Mac);
|
||||||
'5ea7817a0b7c5d4d9b00364ccd214669131fc17fe4aca';
|
|
||||||
|
|
||||||
testHmac('sha1', sha1Mac);
|
|
||||||
testHmac('sha256', sha256Mac);
|
|
||||||
testHmac('sha512', sha512Mac);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('timeSafeEqual', () => {
|
describe('timeSafeEqual', () => {
|
||||||
|
@ -117,14 +117,9 @@ describe('WebCrypto Function Service', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('hmacFast', () => {
|
describe('hmacFast', () => {
|
||||||
const sha1Mac = '4d4c223f95dc577b665ec4ccbcb680b80a397038';
|
testHmacFast('sha1', Sha1Mac);
|
||||||
const sha256Mac = '6be3caa84922e12aaaaa2f16c40d44433bb081ef323db584eb616333ab4e874f';
|
testHmacFast('sha256', Sha256Mac);
|
||||||
const sha512Mac = '21910e341fa12106ca35758a2285374509326c9fbe0bd64e7b99c898f841dc948c58ce66d3504d8883c' +
|
testHmacFast('sha512', Sha512Mac);
|
||||||
'5ea7817a0b7c5d4d9b00364ccd214669131fc17fe4aca';
|
|
||||||
|
|
||||||
testHmacFast('sha1', sha1Mac);
|
|
||||||
testHmacFast('sha256', sha256Mac);
|
|
||||||
testHmacFast('sha512', sha512Mac);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('timeSafeEqualFast', () => {
|
describe('timeSafeEqualFast', () => {
|
||||||
|
|
Loading…
Reference in New Issue