Diffstat (limited to 'frontend/gamma/js/Clipperz/Crypto/SHA.js') (more/less context) (show whitespace changes)
-rw-r--r-- | frontend/gamma/js/Clipperz/Crypto/SHA.js | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/frontend/gamma/js/Clipperz/Crypto/SHA.js b/frontend/gamma/js/Clipperz/Crypto/SHA.js index 3cf8559..b07fa85 100644 --- a/frontend/gamma/js/Clipperz/Crypto/SHA.js +++ b/frontend/gamma/js/Clipperz/Crypto/SHA.js | |||
@@ -1,120 +1,117 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz's Javascript Crypto Library. | 5 | This file is part of Clipperz Community Edition. |
6 | Javascript Crypto Library provides web developers with an extensive | 6 | Clipperz Community Edition is an online password manager. |
7 | and efficient set of cryptographic functions. The library aims to | ||
8 | obtain maximum execution speed while preserving modularity and | ||
9 | reusability. | ||
10 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
11 | refer to http://www.clipperz.com | 8 | refer to http://www.clipperz.com. |
12 | 9 | ||
13 | * Javascript Crypto Library is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
14 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
15 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
16 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
17 | 14 | ||
18 | * Javascript Crypto Library is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
19 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
20 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
21 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
22 | 19 | ||
23 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
24 | License along with Javascript Crypto Library. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
25 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
26 | 23 | ||
27 | */ | 24 | */ |
28 | 25 | ||
29 | try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { | 26 | try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { |
30 | throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!"; | 27 | throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!"; |
31 | } | 28 | } |
32 | 29 | ||
33 | if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; } | 30 | if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; } |
34 | if (typeof(Clipperz.Crypto.SHA) == 'undefined') { Clipperz.Crypto.SHA = {}; } | 31 | if (typeof(Clipperz.Crypto.SHA) == 'undefined') { Clipperz.Crypto.SHA = {}; } |
35 | 32 | ||
36 | Clipperz.Crypto.SHA.VERSION = "0.3"; | 33 | Clipperz.Crypto.SHA.VERSION = "0.3"; |
37 | Clipperz.Crypto.SHA.NAME = "Clipperz.Crypto.SHA"; | 34 | Clipperz.Crypto.SHA.NAME = "Clipperz.Crypto.SHA"; |
38 | 35 | ||
39 | MochiKit.Base.update(Clipperz.Crypto.SHA, { | 36 | MochiKit.Base.update(Clipperz.Crypto.SHA, { |
40 | 37 | ||
41 | '__repr__': function () { | 38 | '__repr__': function () { |
42 | return "[" + this.NAME + " " + this.VERSION + "]"; | 39 | return "[" + this.NAME + " " + this.VERSION + "]"; |
43 | }, | 40 | }, |
44 | 41 | ||
45 | 'toString': function () { | 42 | 'toString': function () { |
46 | return this.__repr__(); | 43 | return this.__repr__(); |
47 | }, | 44 | }, |
48 | 45 | ||
49 | //----------------------------------------------------------------------------- | 46 | //----------------------------------------------------------------------------- |
50 | 47 | ||
51 | 'rotateRight': function(aValue, aNumberOfBits) { | 48 | 'rotateRight': function(aValue, aNumberOfBits) { |
52 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.rotateRight"); | 49 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.rotateRight"); |
53 | var result; | 50 | var result; |
54 | 51 | ||
55 | result = (aValue >>> aNumberOfBits) | (aValue << (32 - aNumberOfBits)); | 52 | result = (aValue >>> aNumberOfBits) | (aValue << (32 - aNumberOfBits)); |
56 | 53 | ||
57 | //Clipperz.Profile.stop("Clipperz.Crypto.SHA.rotateRight"); | 54 | //Clipperz.Profile.stop("Clipperz.Crypto.SHA.rotateRight"); |
58 | return result; | 55 | return result; |
59 | }, | 56 | }, |
60 | 57 | ||
61 | 'shiftRight': function(aValue, aNumberOfBits) { | 58 | 'shiftRight': function(aValue, aNumberOfBits) { |
62 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.shiftRight"); | 59 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.shiftRight"); |
63 | var result; | 60 | var result; |
64 | 61 | ||
65 | result = aValue >>> aNumberOfBits; | 62 | result = aValue >>> aNumberOfBits; |
66 | 63 | ||
67 | //Clipperz.Profile.stop("Clipperz.Crypto.SHA.shiftRight"); | 64 | //Clipperz.Profile.stop("Clipperz.Crypto.SHA.shiftRight"); |
68 | return result; | 65 | return result; |
69 | }, | 66 | }, |
70 | 67 | ||
71 | //----------------------------------------------------------------------------- | 68 | //----------------------------------------------------------------------------- |
72 | 69 | ||
73 | 'safeAdd': function() { | 70 | 'safeAdd': function() { |
74 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.safeAdd"); | 71 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.safeAdd"); |
75 | varresult; | 72 | varresult; |
76 | vari, c; | 73 | vari, c; |
77 | 74 | ||
78 | result = arguments[0]; | 75 | result = arguments[0]; |
79 | c = arguments.length; | 76 | c = arguments.length; |
80 | for (i=1; i<c; i++) { | 77 | for (i=1; i<c; i++) { |
81 | varlowerBytesSum; | 78 | varlowerBytesSum; |
82 | 79 | ||
83 | lowerBytesSum = (result & 0xffff) + (arguments[i] & 0xffff); | 80 | lowerBytesSum = (result & 0xffff) + (arguments[i] & 0xffff); |
84 | result = (((result >> 16) + (arguments[i] >> 16) + (lowerBytesSum >> 16)) << 16) | (lowerBytesSum & 0xffff); | 81 | result = (((result >> 16) + (arguments[i] >> 16) + (lowerBytesSum >> 16)) << 16) | (lowerBytesSum & 0xffff); |
85 | } | 82 | } |
86 | 83 | ||
87 | //Clipperz.Profile.stop("Clipperz.Crypto.SHA.safeAdd"); | 84 | //Clipperz.Profile.stop("Clipperz.Crypto.SHA.safeAdd"); |
88 | return result; | 85 | return result; |
89 | }, | 86 | }, |
90 | 87 | ||
91 | //----------------------------------------------------------------------------- | 88 | //----------------------------------------------------------------------------- |
92 | 89 | ||
93 | 'sha256_array': function(aValue) { | 90 | 'sha256_array': function(aValue) { |
94 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.sha256_array"); | 91 | //Clipperz.Profile.start("Clipperz.Crypto.SHA.sha256_array"); |
95 | varresult; | 92 | varresult; |
96 | varmessage; | 93 | varmessage; |
97 | var h0, h1, h2, h3, h4, h5, h6, h7; | 94 | var h0, h1, h2, h3, h4, h5, h6, h7; |
98 | vark; | 95 | vark; |
99 | varmessageLength; | 96 | varmessageLength; |
100 | varmessageLengthInBits; | 97 | varmessageLengthInBits; |
101 | var_i, _c; | 98 | var_i, _c; |
102 | var charBits; | 99 | var charBits; |
103 | var rotateRight; | 100 | var rotateRight; |
104 | var shiftRight; | 101 | var shiftRight; |
105 | var safeAdd; | 102 | var safeAdd; |
106 | varbytesPerBlock; | 103 | varbytesPerBlock; |
107 | var currentMessageIndex; | 104 | var currentMessageIndex; |
108 | 105 | ||
109 | bytesPerBlock = 512/8; | 106 | bytesPerBlock = 512/8; |
110 | rotateRight = Clipperz.Crypto.SHA.rotateRight; | 107 | rotateRight = Clipperz.Crypto.SHA.rotateRight; |
111 | shiftRight = Clipperz.Crypto.SHA.shiftRight; | 108 | shiftRight = Clipperz.Crypto.SHA.shiftRight; |
112 | safeAdd = Clipperz.Crypto.SHA.safeAdd; | 109 | safeAdd = Clipperz.Crypto.SHA.safeAdd; |
113 | 110 | ||
114 | charBits = 8; | 111 | charBits = 8; |
115 | 112 | ||
116 | h0 = 0x6a09e667; | 113 | h0 = 0x6a09e667; |
117 | h1 = 0xbb67ae85; | 114 | h1 = 0xbb67ae85; |
118 | h2 = 0x3c6ef372; | 115 | h2 = 0x3c6ef372; |
119 | h3 = 0xa54ff53a; | 116 | h3 = 0xa54ff53a; |
120 | h4 = 0x510e527f; | 117 | h4 = 0x510e527f; |