mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
var ScriptableUnicodeConverter =
|
|
Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
|
|
"nsIScriptableUnicodeConverter");
|
|
|
|
function getHMAC(data, key)
|
|
{
|
|
var converter = new ScriptableUnicodeConverter();
|
|
converter.charset = 'utf8';
|
|
var keyarray = converter.convertToByteArray(key, {});
|
|
var dataarray = converter.convertToByteArray(data, {});
|
|
|
|
var cryptoHMAC = Components.classes["@mozilla.org/security/hmac;1"]
|
|
.createInstance(Components.interfaces.nsICryptoHMAC);
|
|
|
|
cryptoHMAC.init(Components.interfaces.nsICryptoHMAC.SHA1, keyarray, keyarray.length);
|
|
cryptoHMAC.update(dataarray, dataarray.length);
|
|
var digest1 = cryptoHMAC.finish(true);
|
|
|
|
cryptoHMAC.reset();
|
|
cryptoHMAC.update(dataarray, dataarray.length);
|
|
var digest2 = cryptoHMAC.finish(true);
|
|
|
|
do_check_eq(digest1, digest2);
|
|
|
|
return digest1;
|
|
}
|
|
|
|
function run_test() {
|
|
const key1 = 'MyKey_ABCDEFGHIJKLMN';
|
|
const key2 = 'MyKey_01234567890123';
|
|
|
|
const dataA = "Secret message";
|
|
const dataB = "Secres message";
|
|
|
|
var diegest1a = getHMAC(key1, dataA);
|
|
var diegest2 = getHMAC(key2, dataA);
|
|
var diegest1b = getHMAC(key1, dataA);
|
|
|
|
do_check_eq(diegest1a, diegest1b);
|
|
do_check_neq(diegest1a, diegest2);
|
|
|
|
var diegest1 = getHMAC(key1, dataA);
|
|
diegest2 = getHMAC(key1, dataB);
|
|
|
|
do_check_neq(diegest1, diegest2);
|
|
}
|