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 / hash / SHA1.as
1 /**\r
2  * SHA1\r
3  * \r
4  * An ActionScript 3 implementation of Secure Hash Algorithm, SHA-1, as defined\r
5  * in FIPS PUB 180-1\r
6  * Copyright (c) 2007 Henri Torgemane\r
7  * \r
8  * Derived from:\r
9  *              A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\r
10  *              in FIPS PUB 180-1\r
11  *              Version 2.1a Copyright Paul Johnston 2000 - 2002.\r
12  *              Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\r
13  * \r
14  * See LICENSE.txt for full license information.\r
15  */\r
16 package com.hurlant.crypto.hash\r
17 {\r
18         \r
19 \r
20         public class SHA1 extends SHABase implements IHash\r
21         {\r
22                 public static const HASH_SIZE:int = 20;\r
23                 \r
24                 public override function getHashSize():uint {\r
25                         return HASH_SIZE;\r
26                 }\r
27                 \r
28                 protected override function core(x:Array, len:uint):Array\r
29                 {\r
30                   /* append padding */\r
31                   x[len >> 5] |= 0x80 << (24 - len % 32);\r
32                   x[((len + 64 >> 9) << 4) + 15] = len;\r
33                 \r
34                   var w:Array = [];\r
35                   var a:uint =  0x67452301; //1732584193;\r
36                   var b:uint = 0xEFCDAB89; //-271733879;\r
37                   var c:uint = 0x98BADCFE; //-1732584194;\r
38                   var d:uint = 0x10325476; //271733878;\r
39                   var e:uint = 0xC3D2E1F0; //-1009589776;\r
40                 \r
41                   for(var i:uint = 0; i < x.length; i += 16)\r
42                   {\r
43                         \r
44                     var olda:uint = a;\r
45                     var oldb:uint = b;\r
46                     var oldc:uint = c;\r
47                     var oldd:uint = d;\r
48                     var olde:uint = e;\r
49                 \r
50                     for(var j:uint = 0; j < 80; j++)\r
51                     {\r
52                       if (j < 16) {\r
53                         w[j] = x[i + j] || 0;\r
54                       } else {\r
55                         w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);\r
56                       }\r
57                       var t:uint = rol(a,5) + ft(j,b,c,d) + e + w[j] + kt(j);\r
58                       e = d;\r
59                       d = c;\r
60                       c = rol(b, 30);\r
61                       b = a;\r
62                       a = t;\r
63                     }\r
64                         a += olda;\r
65                         b += oldb;\r
66                         c += oldc;\r
67                         d += oldd;\r
68                         e += olde;\r
69                   }\r
70                   return [ a, b, c, d, e ];\r
71                 \r
72                 }\r
73                 \r
74                 /*\r
75                  * Bitwise rotate a 32-bit number to the left.\r
76                  */\r
77                 private function rol(num:uint, cnt:uint):uint\r
78                 {\r
79                   return (num << cnt) | (num >>> (32 - cnt));\r
80                 }\r
81                 \r
82                 /*\r
83                  * Perform the appropriate triplet combination function for the current\r
84                  * iteration\r
85                  */\r
86                 private function ft(t:uint, b:uint, c:uint, d:uint):uint\r
87                 {\r
88                   if(t < 20) return (b & c) | ((~b) & d);\r
89                   if(t < 40) return b ^ c ^ d;\r
90                   if(t < 60) return (b & c) | (b & d) | (c & d);\r
91                   return b ^ c ^ d;\r
92                 }\r
93                 \r
94                 /*\r
95                  * Determine the appropriate additive constant for the current iteration\r
96                  */\r
97                 private function kt(t:uint):uint\r
98                 {\r
99                   return (t < 20) ? 0x5A827999 : (t < 40) ?  0x6ED9EBA1 :\r
100                          (t < 60) ? 0x8F1BBCDC : 0xCA62C1D6;\r
101                 }\r
102                 public override function toString():String {\r
103                         return "sha1";\r
104                 }\r
105         }\r
106 }\r