Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / socket.io-client / lib / vendor / web-socket-js / flash-src / com / hurlant / crypto / tests / HMACTest.as
1 /**\r
2  * HMACTest\r
3  * \r
4  * A test class for HMAC\r
5  * Copyright (c) 2007 Henri Torgemane\r
6  * \r
7  * See LICENSE.txt for full license information.\r
8  */\r
9 package com.hurlant.crypto.tests\r
10 {\r
11         import com.hurlant.crypto.hash.HMAC;\r
12         import com.hurlant.crypto.hash.MD5;\r
13         import com.hurlant.crypto.hash.SHA1;\r
14         import com.hurlant.crypto.hash.SHA224;\r
15         import com.hurlant.crypto.hash.SHA256;\r
16         import com.hurlant.util.Hex;\r
17         \r
18         import flash.utils.ByteArray;\r
19         \r
20         public class HMACTest extends TestCase\r
21         {\r
22                 public function HMACTest(h:ITestHarness)\r
23                 {\r
24                         super(h, "HMAC Test");\r
25                         runTest(testHMAC_MD5,"HMAC MD5 Test Vectors");\r
26                         runTest(testHMAC_SHA_1,"HMAC SHA-1 Test Vectors");\r
27                         runTest(testHMAC_SHA_2,"HMAC SHA-224/SHA-256 Test Vectors");\r
28                         runTest(testHMAC96_MD5,"HMAC-96 MD5 Test Vectors");\r
29                         runTest(testHMAC96_SHA_1,"HMAC-96 SHA-1 Test Vectors");\r
30                         runTest(testHMAC128_SHA_2,"HMAC-128 SHA-224/SHA-256 Test Vectors");\r
31                         h.endTestCase();\r
32                 }\r
33                 /**\r
34                  * Test vectors taking from RFC2202\r
35                  * http://tools.ietf.org/html/rfc2202\r
36                  * Yes, it's from an RFC, jefe! Now waddayawant?\r
37                  */\r
38                 public function testHMAC_SHA_1():void {\r
39                         var keys:Array = [\r
40                         "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b",\r
41                         Hex.fromString("Jefe"),\r
42                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",\r
43                         "0102030405060708090a0b0c0d0e0f10111213141516171819",\r
44                         "0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c",\r
45                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",\r
46                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"];\r
47                         var pts:Array = [\r
48                         Hex.fromString("Hi There"),\r
49                         Hex.fromString("what do ya want for nothing?"),\r
50                         "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",\r
51                         "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",\r
52                         Hex.fromString("Test With Truncation"),\r
53                         Hex.fromString("Test Using Larger Than Block-Size Key - Hash Key First"),\r
54                         Hex.fromString("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data")];\r
55                         var cts:Array = [\r
56                         "b617318655057264e28bc0b6fb378c8ef146be00",\r
57                         "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79",\r
58                         "125d7342b9ac11cd91a39af48aa17b4f63f175d3", \r
59                         "4c9007f4026250c6bc8414f9bf50c86c2d7235da", \r
60                         "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04",\r
61                         "aa4ae5e15272d00e95705637ce8a3b55ed402112",\r
62                         "e8e99d0f45237d786d6bbaa7965c7808bbff1a91"];\r
63                         \r
64                         var hmac:HMAC = new HMAC(new SHA1());\r
65                         for (var i:uint=0;i<keys.length;i++) {\r
66                                 var key:ByteArray = Hex.toArray(keys[i]);\r
67                                 var pt:ByteArray = Hex.toArray(pts[i]);\r
68                                 var digest:ByteArray = hmac.compute(key, pt);\r
69                                 assert("HMAC-SHA-1 test "+i, Hex.fromArray(digest) == cts[i]);\r
70                         }\r
71                 }\r
72                 public function testHMAC96_SHA_1():void {\r
73                         var hmac:HMAC = new HMAC(new SHA1, 96);\r
74                         var key:ByteArray = Hex.toArray("0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c");\r
75                         var pt:ByteArray = Hex.toArray(Hex.fromString("Test With Truncation"));\r
76                         var ct:String = "4c1a03424b55e07fe7f27be1";\r
77                         var digest:ByteArray = hmac.compute(key, pt);\r
78                         assert("HMAC96-SHA-1 test", Hex.fromArray(digest) == ct);\r
79                 }\r
80                 \r
81                 public function testHMAC_MD5():void {\r
82                         var keys:Array = [\r
83                         Hex.fromString("Jefe"),\r
84                         "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b",\r
85                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",\r
86                         "0102030405060708090a0b0c0d0e0f10111213141516171819",\r
87                         "0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c",\r
88                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",\r
89                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"];\r
90                         var pts:Array = [\r
91                         Hex.fromString("what do ya want for nothing?"),\r
92                         Hex.fromString("Hi There"),\r
93                         "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",\r
94                         "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",\r
95                         Hex.fromString("Test With Truncation"),\r
96                         Hex.fromString("Test Using Larger Than Block-Size Key - Hash Key First"),\r
97                         Hex.fromString("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data")];\r
98                         var cts:Array = [\r
99                         "750c783e6ab0b503eaa86e310a5db738",\r
100                         "9294727a3638bb1c13f48ef8158bfc9d",\r
101                         "56be34521d144c88dbb8c733f0e8b3f6", \r
102                         "697eaf0aca3a3aea3a75164746ffaa79",\r
103                         "56461ef2342edc00f9bab995690efd4c",\r
104                         "6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd",\r
105                         "6f630fad67cda0ee1fb1f562db3aa53e"];\r
106 \r
107                         var hmac:HMAC = new HMAC(new MD5());\r
108                         for (var i:uint=0;i<keys.length;i++) {\r
109                                 var key:ByteArray = Hex.toArray(keys[i]);\r
110                                 var pt:ByteArray = Hex.toArray(pts[i]);\r
111                                 var digest:ByteArray = hmac.compute(key, pt);\r
112                                 assert("HMAC-MD5 test "+i, Hex.fromArray(digest) == cts[i]);\r
113                         }\r
114                 }\r
115                 public function testHMAC96_MD5():void {\r
116                         var hmac:HMAC = new HMAC(new MD5, 96);\r
117                         var key:ByteArray = Hex.toArray("0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c");\r
118                         var pt:ByteArray = Hex.toArray(Hex.fromString("Test With Truncation"));\r
119                         var ct:String = "56461ef2342edc00f9bab995";\r
120                         var digest:ByteArray = hmac.compute(key, pt);\r
121                         assert("HMAC96-MD5 test", Hex.fromArray(digest) == ct);\r
122                 }\r
123                 \r
124                 /**\r
125                  * Test vectors for HMAC-SHA-2 taken from RFC4231\r
126                  * http://www.ietf.org/rfc/rfc4231.txt\r
127                  * Still the same lame strings, but hidden in hex. why not.\r
128                  */\r
129                 public function testHMAC_SHA_2():void {\r
130                         var keys:Array = [\r
131                         "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b",\r
132                         "4a656665",\r
133                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",\r
134                         "0102030405060708090a0b0c0d0e0f10111213141516171819",\r
135                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",\r
136                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"];\r
137                         var pts:Array = [\r
138                         "4869205468657265",\r
139                         "7768617420646f2079612077616e7420666f72206e6f7468696e673f",\r
140                         "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",\r
141                         "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",\r
142                         "54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374",\r
143                         "5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2e"];\r
144                         var cts224:Array = [\r
145                         "896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22",\r
146                         "a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44",\r
147                         "7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea",\r
148                         "6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a",\r
149                         "95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e",\r
150                         "3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1"];\r
151                         var cts256:Array = [\r
152                         "b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7",\r
153                         "5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843",\r
154                         "773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe",\r
155                         "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b",\r
156                         "60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54",\r
157                         "9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2"];\r
158                         // 384 and 512 will be added. someday. if I ever figure how to do 64bit computations half efficiently in as3\r
159 \r
160                         var hmac224:HMAC = new HMAC(new SHA224);\r
161                         var hmac256:HMAC = new HMAC(new SHA256);\r
162                         for (var i:uint=0;i<keys.length;i++) {\r
163                                 var key:ByteArray = Hex.toArray(keys[i]);\r
164                                 var pt:ByteArray = Hex.toArray(pts[i]);\r
165                                 var digest224:ByteArray = hmac224.compute(key, pt);\r
166                                 assert("HMAC-SHA-224 test "+i, Hex.fromArray(digest224) == cts224[i]);\r
167                                 var digest256:ByteArray = hmac256.compute(key, pt);\r
168                                 assert("HMAC-SHA-256 test "+i, Hex.fromArray(digest256) == cts256[i]);\r
169                         }\r
170                 }\r
171                 public function testHMAC128_SHA_2():void {\r
172                         var hmac224:HMAC = new HMAC(new SHA224,128);\r
173                         var hmac256:HMAC = new HMAC(new SHA256,128);\r
174                         var key:ByteArray = Hex.toArray("0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c");\r
175                         var pt:ByteArray = Hex.toArray("546573742057697468205472756e636174696f6e");\r
176                         var ct224:String = "0e2aea68a90c8d37c988bcdb9fca6fa8";\r
177                         var ct256:String = "a3b6167473100ee06e0c796c2955552b";\r
178                         var digest224:ByteArray = hmac224.compute(key, pt);\r
179                         assert("HMAC128-SHA-224 test", Hex.fromArray(digest224) == ct224);\r
180                         var digest256:ByteArray = hmac256.compute(key, pt);\r
181                         assert("HMAC128-SHA-256 test", Hex.fromArray(digest256) == ct256);\r
182                 }\r
183         }\r
184 }