test/mac/hmac-sha384Test.mjs
/*global describe, it */
'use strict';
import TestHmac from "../TestHmac";
import Sha512 from "../../src/hasher/sha512";
// The HMAC-SHA384 test suite
// https://tools.ietf.org/html/rfc4231
class HmacSha384Test extends TestHmac {
test() {
let t = this;
/**
* @test {Hmac}
* @test {Sha512}
*/
describe('Hmac sha384 tests', function () {
it("hmac-sha384('Hi There', 0x0b x 20)", function () {
t.testHmac({
message: 'Hi There',
key: new Array(21).join("\x0b"),
hash: 'afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6'
});
});
it("hmac-sha384('what do ya want for nothing?', 'Jefe')", function () {
t.testHmac({
message: 'what do ya want for nothing?',
key: 'Jefe',
hash: 'af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649'
});
});
it("hmac-sha384(0xdd x 50, 0xaa x 20)", function () {
t.testHmac({
message: new Array(51).join("\xdd"),
key: new Array(21).join("\xaa"),
hash: '88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27'
});
});
it("hmac-sha384(0xcd x 50, 0x0102030405060708090a0b0c0d0e0f10111213141516171819)", function () {
t.testHmac({
message: new Array(51).join("\xcd"),
key: "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19",
hash: '3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffb'
});
});
it("hmac-sha384('Test With Truncation', 0x0c x 20)", function () {
t.testHmac({
message: 'Test With Truncation',
key: new Array(21).join("\x0c"),
hash: '3abf34c3503b2a23a46efc619baef897f4c8e42c934ce55ccbae9740fcbc1af4ca62269e2a37cd88ba926341efe4aeea'
});
});
it("hmac-sha384('Test Using Larger Than Block-Size Key - Hash Key First', 0xaa x 131)", function () {
t.testHmac({
message: 'Test Using Larger Than Block-Size Key - Hash Key First',
key: new Array(132).join("\xaa"),
hash: '4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c60c2ef6ab4030fe8296248df163f44952'
});
});
it("hmac-sha384('This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.', 0xaa x 131)", function () {
t.testHmac({
message: 'This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.',
key: new Array(132).join("\xaa"),
hash: '6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5a678cc31e799176d3860e6110c46523e'
});
});
});
}
getInstance(options) {
return new Sha512({length: 384});
}
}
export default HmacSha384Test;