~ubuntu-branches/ubuntu/trusty/emscripten/trusty-proposed

« back to all changes in this revision

Viewing changes to third_party/websockify/include/web-socket-js/src/flash-src/third-party/com/hurlant/crypto/hash/SHA256.as

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2014-01-19 14:12:40 UTC
  • mfrom: (1.2.4)
  • Revision ID: package-import@ubuntu.com-20140119141240-jg1l42cc158j59tn
Tags: 1.9.0~20140119~7dc8c2f-1
* New snapshot release (Closes: #733714)
* Provide sources for javascript and flash. Done in orig-tar.sh
  Available in third_party/websockify/include/web-socket-js/src/
  (Closes: #735903)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * SHA256
 
3
 * 
 
4
 * An ActionScript 3 implementation of Secure Hash Algorithm, SHA-256, as defined
 
5
 * in FIPS PUB 180-2
 
6
 * Copyright (c) 2007 Henri Torgemane
 
7
 * 
 
8
 * Derived from:
 
9
 *              A JavaScript implementation of the Secure Hash Standard
 
10
 *              Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/
 
11
 * Derived from:
 
12
 *              A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
 
13
 *              in FIPS PUB 180-1
 
14
 *              Version 2.1a Copyright Paul Johnston 2000 - 2002.
 
15
 *              Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 
16
 * 
 
17
 * See LICENSE.txt for full license information.
 
18
 */
 
19
package com.hurlant.crypto.hash
 
20
{
 
21
        
 
22
 
 
23
        public class SHA256 extends SHABase implements IHash
 
24
        {
 
25
                
 
26
                protected static const k:Array = [
 
27
                0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
 
28
                0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
 
29
                0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
 
30
                0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
 
31
                0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
 
32
                0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
 
33
                0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
 
34
                0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
 
35
                protected var h:Array = [
 
36
                0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
 
37
                ];
 
38
                
 
39
                public function SHA256(){
 
40
                }
 
41
                
 
42
                public override function getHashSize():uint
 
43
                {
 
44
                        return 32;
 
45
                }
 
46
                
 
47
                protected override function core(x:Array, len:uint):Array {
 
48
                        /* append padding */
 
49
                        x[len >> 5] |= 0x80 << (24 - len % 32);
 
50
                        x[((len + 64 >> 9) << 4) + 15] = len;
 
51
                
 
52
                        var w:Array = [];
 
53
                        var a:uint = h[0];
 
54
                        var b:uint = h[1];
 
55
                        var c:uint = h[2];
 
56
                        var d:uint = h[3];
 
57
                        var e:uint = h[4];
 
58
                        var f:uint = h[5];
 
59
                        var g:uint = h[6];
 
60
                        var h:uint = h[7];
 
61
                        
 
62
                        for (var i:uint=0; i<x.length; i+=16) {
 
63
                                var olda:uint = a;
 
64
                                var oldb:uint = b;
 
65
                                var oldc:uint = c;
 
66
                                var oldd:uint = d;
 
67
                                var olde:uint = e;
 
68
                                var oldf:uint = f;
 
69
                                var oldg:uint = g;
 
70
                                var oldh:uint = h;
 
71
 
 
72
                                for (var j:uint=0; j<64; j++) {
 
73
                                        if (j<16) {
 
74
                                                w[j] = x[i+j] || 0;
 
75
                                        } else {
 
76
                                                var s0:uint = rrol(w[j-15],7)^rrol(w[j-15],18)^(w[j-15]>>>3);
 
77
                                                var s1:uint = rrol(w[j-2], 17)^rrol(w[j-2],19)^(w[j-2]>>>10);
 
78
                                                w[j] = w[j-16] + s0 + w[j-7] + s1;
 
79
                                        }
 
80
                                        var t2:uint = (rrol(a,2) ^ rrol(a,13) ^ rrol(a,22)) + ((a&b) ^ (a&c) ^ (b&c));
 
81
                                        var t1:uint = h + (rrol(e,6) ^ rrol(e,11) ^ rrol(e,25)) + ((e&f)^(g&~e)) + k[j] + w[j]
 
82
                                        h = g;
 
83
                                        g = f;
 
84
                                        f = e;
 
85
                                        e = d + t1;
 
86
                                        d = c;
 
87
                                        c = b;
 
88
                                        b = a;
 
89
                                        a = t1 + t2;
 
90
 
 
91
                                }
 
92
                                a += olda;
 
93
                                b += oldb;
 
94
                                c += oldc;
 
95
                                d += oldd;
 
96
                                e += olde;
 
97
                                f += oldf;
 
98
                                g += oldg;
 
99
                                h += oldh;
 
100
                        }
 
101
                        return [ a,b,c,d,e,f,g,h ];
 
102
                }
 
103
                
 
104
                /*
 
105
                 * Bitwise rotate a 32-bit number to the right.
 
106
                 */
 
107
                protected function rrol(num:uint, cnt:uint):uint {
 
108
                  return (num << (32-cnt)) | (num >>> cnt);
 
109
                }
 
110
                
 
111
                public override function toString():String {
 
112
                        return "sha256";
 
113
                }
 
114
        }
 
115
}
 
 
b'\\ No newline at end of file'