/** * HMACTest * * A test class for HMAC * Copyright (c) 2007 Henri Torgemane * * See LICENSE.txt for full license information. */ package com.hurlant.crypto.tests { import com.hurlant.crypto.hash.HMAC; import com.hurlant.crypto.hash.MD5; import com.hurlant.crypto.hash.SHA1; import com.hurlant.crypto.hash.SHA224; import com.hurlant.crypto.hash.SHA256; import com.hurlant.util.Hex; import flash.utils.ByteArray; public class HMACTest extends TestCase { public function HMACTest(h:ITestHarness) { super(h, "HMAC Test"); runTest(testHMAC_MD5,"HMAC MD5 Test Vectors"); runTest(testHMAC_SHA_1,"HMAC SHA-1 Test Vectors"); runTest(testHMAC_SHA_2,"HMAC SHA-224/SHA-256 Test Vectors"); runTest(testHMAC96_MD5,"HMAC-96 MD5 Test Vectors"); runTest(testHMAC96_SHA_1,"HMAC-96 SHA-1 Test Vectors"); runTest(testHMAC128_SHA_2,"HMAC-128 SHA-224/SHA-256 Test Vectors"); h.endTestCase(); } /** * Test vectors taking from RFC2202 * http://tools.ietf.org/html/rfc2202 * Yes, it's from an RFC, jefe! Now waddayawant? */ public function testHMAC_SHA_1():void { var keys:Array = [ "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b", Hex.fromString("Jefe"), "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "0102030405060708090a0b0c0d0e0f10111213141516171819", "0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]; var pts:Array = [ Hex.fromString("Hi There"), Hex.fromString("what do ya want for nothing?"), "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd", "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd", Hex.fromString("Test With Truncation"), Hex.fromString("Test Using Larger Than Block-Size Key - Hash Key First"), Hex.fromString("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data")]; var cts:Array = [ "b617318655057264e28bc0b6fb378c8ef146be00", "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79", "125d7342b9ac11cd91a39af48aa17b4f63f175d3", "4c9007f4026250c6bc8414f9bf50c86c2d7235da", "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04", "aa4ae5e15272d00e95705637ce8a3b55ed402112", "e8e99d0f45237d786d6bbaa7965c7808bbff1a91"]; var hmac:HMAC = new HMAC(new SHA1()); for (var i:uint=0;i