UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

114 lines (94 loc) 3.32 kB
<!DOCTYPE html> <html> <!-- Copyright 2011 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <head> <meta http-equiv='X-UA-Compatible' content='IE=edge'> <title>Closure Unit Tests - goog.crypt.sha1</title> <script src='../base.js'></script> <script> goog.require('goog.crypt.hashTester'); goog.require('goog.crypt.Hmac'); goog.require('goog.crypt.Sha1'); goog.require('goog.testing.jsunit'); </script> </head> <body> <script> function stringToBytes(s) { var bytes = new Array(s.length); for (var i = 0; i < s.length; ++i) { bytes[i] = s.charCodeAt(i) & 255; } return bytes; } function hexToBytes(str) { var arr = []; for (var i = 0; i < str.length; i += 2) { arr.push(parseInt(str.substring(i, i + 2), 16)); } return arr; } function bytesToHex(b) { var hexchars = '0123456789abcdef'; var hexrep = new Array(b.length * 2); for (var i = 0; i < b.length; ++i) { hexrep[i * 2] = hexchars.charAt((b[i] >> 4) & 15); hexrep[i * 2 + 1] = hexchars.charAt(b[i] & 15); } return hexrep.join(''); } /** * helper to get an hmac of the given message with the given key. */ function getHmac(key, message) { var hasher = new goog.crypt.Sha1(); var hmacer = new goog.crypt.Hmac(hasher, key, 64); return bytesToHex(hmacer.getHmac(message)); } function testBasicOperations() { var hmac = new goog.crypt.Hmac(new goog.crypt.Sha1(), 'key', 64); goog.crypt.hashTester.runBasicTests(hmac); } function testHmac() { // HMAC test vectors from: // http://tools.ietf.org/html/2202 assertEquals('test 1 failed', 'b617318655057264e28bc0b6fb378c8ef146be00', getHmac(hexToBytes('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'), stringToBytes('Hi There'))); assertEquals('test 2 failed', 'effcdf6ae5eb2fa2d27416d5f184df9c259a7c79', getHmac(stringToBytes('Jefe'), stringToBytes('what do ya want for nothing?'))); assertEquals('test 3 failed', '125d7342b9ac11cd91a39af48aa17b4f63f175d3', getHmac(hexToBytes('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'), hexToBytes('dddddddddddddddddddddddddddddddddddddddd' + 'dddddddddddddddddddddddddddddddddddddddd' + 'dddddddddddddddddddd'))); assertEquals('test 4 failed', '4c9007f4026250c6bc8414f9bf50c86c2d7235da', getHmac(hexToBytes('0102030405060708090a0b0c0d0e0f10111213141516171819'), hexToBytes('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd' + 'cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd' + 'cdcdcdcdcdcdcdcdcdcd'))); assertEquals('test 5 failed', '4c1a03424b55e07fe7f27be1d58bb9324a9a5a04', getHmac(hexToBytes('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c'), stringToBytes('Test With Truncation'))); assertEquals('test 6 failed', 'aa4ae5e15272d00e95705637ce8a3b55ed402112', getHmac(hexToBytes('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'), stringToBytes( 'Test Using Larger Than Block-Size Key - Hash Key First'))); } </script> </body> </html>