Diffstat (limited to 'frontend/gamma/js/ClipperzCryptoLibrary/ECC/StandardCurves.js') (more/less context) (ignore whitespace changes)
-rw-r--r-- | frontend/gamma/js/ClipperzCryptoLibrary/ECC/StandardCurves.js | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/frontend/gamma/js/ClipperzCryptoLibrary/ECC/StandardCurves.js b/frontend/gamma/js/ClipperzCryptoLibrary/ECC/StandardCurves.js deleted file mode 100644 index ed971ae..0000000 --- a/frontend/gamma/js/ClipperzCryptoLibrary/ECC/StandardCurves.js +++ b/dev/null | |||
@@ -1,234 +0,0 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2013 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz, the online password manager. | ||
6 | For further information about its features and functionalities please | ||
7 | refer to http://www.clipperz.com. | ||
8 | |||
9 | * Clipperz is free software: you can redistribute it and/or modify it | ||
10 | under the terms of the GNU Affero General Public License as published | ||
11 | by the Free Software Foundation, either version 3 of the License, or | ||
12 | (at your option) any later version. | ||
13 | |||
14 | * Clipperz is distributed in the hope that it will be useful, but | ||
15 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
17 | See the GNU Affero General Public License for more details. | ||
18 | |||
19 | * You should have received a copy of the GNU Affero General Public | ||
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/. | ||
21 | |||
22 | */ | ||
23 | |||
24 | //try { if (typeof(Clipperz.Crypto.ECC.BinaryField.Curve) == 'undefined') { throw ""; }} catch (e) { | ||
25 | //throw "Clipperz.Crypto.ECC depends on Clipperz.Crypto.ECC.BinaryField.Curve!"; | ||
26 | //} | ||
27 | //try { if (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) == 'undefined') { throw ""; }} catch (e) { | ||
28 | //throw "Clipperz.Crypto.ECC depends on Clipperz.Crypto.ECC.Koblitz.Curve!"; | ||
29 | //} | ||
30 | |||
31 | Clipperz.Crypto.ECC.StandardCurves = {}; | ||
32 | |||
33 | MochiKit.Base.update(Clipperz.Crypto.ECC.StandardCurves, { | ||
34 | |||
35 | //============================================================================== | ||
36 | |||
37 | '_K571': null, | ||
38 | 'K571': function() { //f(z) = z^571 + z^10 + z^5 + z^2 + 1 | ||
39 | if ((Clipperz.Crypto.ECC.StandardCurves._K571 == null) && (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) != 'undefined')) { | ||
40 | Clipperz.Crypto.ECC.StandardCurves._K571 = new Clipperz.Crypto.ECC.Koblitz.Curve({ | ||
41 | modulus: new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000425', 16), | ||
42 | a: new Clipperz.Crypto.ECC.Koblitz.Value('0', 16), | ||
43 | b: new Clipperz.Crypto.ECC.Koblitz.Value('1', 16), | ||
44 | G: new Clipperz.Crypto.ECC.Koblitz.Point({ | ||
45 | x: new Clipperz.Crypto.ECC.Koblitz.Value('026eb7a8 59923fbc 82189631 f8103fe4 ac9ca297 0012d5d4 60248048 01841ca4 43709584 93b205e6 47da304d b4ceb08c bbd1ba39 494776fb 988b4717 4dca88c7 e2945283 a01c8972', 16), | ||
46 | y: new Clipperz.Crypto.ECC.Koblitz.Value('0349dc80 7f4fbf37 4f4aeade 3bca9531 4dd58cec 9f307a54 ffc61efc 006d8a2c 9d4979c0 ac44aea7 4fbebbb9 f772aedc b620b01a 7ba7af1b 320430c8 591984f6 01cd4c14 3ef1c7a3', 16) | ||
47 | }), | ||
48 | r: new Clipperz.Crypto.ECC.Koblitz.Value('02000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 131850e1 f19a63e4 b391a8db 917f4138 b630d84b e5d63938 1e91deb4 5cfe778f 637c1001', 16), | ||
49 | h: new Clipperz.Crypto.ECC.Koblitz.Value('4', 16), | ||
50 | primeFactor: new Clipperz.Crypto.ECC.Koblitz.Value('02000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 131850e1 f19a63e4 b391a8db 917f4138 b630d84b e5d63938 1e91deb4 5cfe778f 637c1001', 16) | ||
51 | }); | ||
52 | } | ||
53 | |||
54 | return Clipperz.Crypto.ECC.StandardCurves._K571; | ||
55 | }, | ||
56 | |||
57 | //----------------------------------------------------------------------------- | ||
58 | |||
59 | '_K283': null, | ||
60 | 'K283': function() { //f(z) = z^283 + z^12 + z^7 + z^5 + 1 | ||
61 | if ((Clipperz.Crypto.ECC.StandardCurves._K283 == null) && (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) != 'undefined')) { | ||
62 | Clipperz.Crypto.ECC.StandardCurves._K283 = new Clipperz.Crypto.ECC.Koblitz.Curve({ | ||
63 | modulus: new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16), | ||
64 | a: new Clipperz.Crypto.ECC.Koblitz.Value('0', 16), | ||
65 | b: new Clipperz.Crypto.ECC.Koblitz.Value('1', 16), | ||
66 | G: new Clipperz.Crypto.ECC.Koblitz.Point({ | ||
67 | x: new Clipperz.Crypto.ECC.Koblitz.Value('0503213f 78ca4488 3f1a3b81 62f188e5 53cd265f 23c1567a 16876913 b0c2ac24 58492836', 16), | ||
68 | y: new Clipperz.Crypto.ECC.Koblitz.Value('01ccda38 0f1c9e31 8d90f95d 07e5426f e87e45c0 e8184698 e4596236 4e341161 77dd2259', 16) | ||
69 | }), | ||
70 | r: new Clipperz.Crypto.ECC.Koblitz.Value('01ffffff ffffffff ffffffff ffffffff ffffe9ae 2ed07577 265dff7f 94451e06 1e163c61', 16), | ||
71 | h: new Clipperz.Crypto.ECC.Koblitz.Value('4', 16), | ||
72 | primeFactor: new Clipperz.Crypto.ECC.Koblitz.Value('01ffffff ffffffff ffffffff ffffffff ffffe9ae 2ed07577 265dff7f 94451e06 1e163c61', 16) | ||
73 | }); | ||
74 | } | ||
75 | |||
76 | return Clipperz.Crypto.ECC.StandardCurves._K283; | ||
77 | }, | ||
78 | |||
79 | //============================================================================== | ||
80 | |||
81 | '_B571': null, | ||
82 | 'B571': function() { //f(z) = z^571 + z^10 + z^5 + z^2 + 1 | ||
83 | if ((Clipperz.Crypto.ECC.StandardCurves._B571 == null) && (typeof(Clipperz.Crypto.ECC.BinaryField.Curve) != 'undefined')) { | ||
84 | Clipperz.Crypto.ECC.StandardCurves._B571 = new Clipperz.Crypto.ECC.BinaryField.Curve({ | ||
85 | modulus: new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000425', 16), | ||
86 | a: new Clipperz.Crypto.ECC.BinaryField.Value('1', 16), | ||
87 | b: new Clipperz.Crypto.ECC.BinaryField.Value('02f40e7e 2221f295 de297117 b7f3d62f 5c6a97ff cb8ceff1 cd6ba8ce 4a9a18ad 84ffabbd 8efa5933 2be7ad67 56a66e29 4afd185a 78ff12aa 520e4de7 39baca0c 7ffeff7f 2955727a', 16), | ||
88 | G: new Clipperz.Crypto.ECC.BinaryField.Point({ | ||
89 | x: new Clipperz.Crypto.ECC.BinaryField.Value('0303001d 34b85629 6c16c0d4 0d3cd775 0a93d1d2 955fa80a a5f40fc8 db7b2abd bde53950 f4c0d293 cdd711a3 5b67fb14 99ae6003 8614f139 4abfa3b4 c850d927 e1e7769c 8eec2d19', 16), | ||
90 | y: new Clipperz.Crypto.ECC.BinaryField.Value('037bf273 42da639b 6dccfffe b73d69d7 8c6c27a6 009cbbca 1980f853 3921e8a6 84423e43 bab08a57 6291af8f 461bb2a8 b3531d2f 0485c19b 16e2f151 6e23dd3c 1a4827af 1b8ac15b', 16) | ||
91 | }), | ||
92 | r: new Clipperz.Crypto.ECC.BinaryField.Value('03ffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff e661ce18 ff559873 08059b18 6823851e c7dd9ca1 161de93d 5174d66e 8382e9bb 2fe84e47', 16), | ||
93 | h: new Clipperz.Crypto.ECC.BinaryField.Value('2', 16) | ||
94 | |||
95 | // S: new Clipperz.Crypto.ECC.BinaryField.Value('2aa058f73a0e33ab486b0f610410c53a7f132310', 10), | ||
96 | // n: new Clipperz.Crypto.ECC.BinaryField.Value('03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47', 16) | ||
97 | }); | ||
98 | |||
99 | //----------------------------------------------------------------------------- | ||
100 | // | ||
101 | //Guide to Elliptic Curve Cryptography | ||
102 | //Darrel Hankerson, Alfred Menezes, Scott Vanstone | ||
103 | //- Pag: 56, Alorithm 2.45 (with a typo!!!) | ||
104 | // | ||
105 | //----------------------------------------------------------------------------- | ||
106 | // | ||
107 | // http://www.milw0rm.com/papers/136 | ||
108 | // | ||
109 | // ------------------------------------------------------------------------- | ||
110 | // Polynomial Reduction Algorithm Modulo f571 | ||
111 | // ------------------------------------------------------------------------- | ||
112 | // | ||
113 | // Input: Polynomial p(x) of degree 1140 or less, stored as | ||
114 | // an array of 2T machinewords. | ||
115 | // Output: p(x) mod f571(x) | ||
116 | // | ||
117 | // FOR i = T-1, ..., 0 DO | ||
118 | // SET X := P[i+T] | ||
119 | // P[i] := P[i] ^ (X<<5) ^ (X<<7) ^ (X<<10) ^ (X<<15) | ||
120 | // P[i+1] := P[i+1] ^ (X>>17) ^ (X>>22) ^ (X>>25) ^ (X>>27) | ||
121 | // | ||
122 | // SET X := P[T-1] >> 27 | ||
123 | // P[0] := P[0] ^ X ^ (X<<2) ^ (X<<5) ^ (X<<10) | ||
124 | // P[T-1] := P[T-1] & 0x07ffffff | ||
125 | // | ||
126 | // RETURN P[T-1],...,P[0] | ||
127 | // | ||
128 | // ------------------------------------------------------------------------- | ||
129 | // | ||
130 | Clipperz.Crypto.ECC.StandardCurves._B571.finiteField().slowModule = Clipperz.Crypto.ECC.StandardCurves._B571.finiteField().module; | ||
131 | Clipperz.Crypto.ECC.StandardCurves._B571.finiteField().module = function(aValue) { | ||
132 | varresult; | ||
133 | |||
134 | if (aValue.bitSize() > 1140) { | ||
135 | MochiKit.Logging.logWarning("ECC.StandarCurves.B571.finiteField().module: falling back to default implementation"); | ||
136 | result = Clipperz.Crypto.ECC.StandardCurves._B571.finiteField().slowModule(aValue); | ||
137 | } else { | ||
138 | varC, T; | ||
139 | var i; | ||
140 | |||
141 | //console.log(">>> binaryField.finiteField.(improved)module"); | ||
142 | // C = aValue.value().slice(0); | ||
143 | C = aValue._value.slice(0); | ||
144 | for (i=35; i>=18; i--) { | ||
145 | T = C[i]; | ||
146 | C[i-18] = (((C[i-18] ^ (T<<5) ^ (T<<7) ^ (T<<10) ^ (T<<15)) & 0xffffffff) >>> 0); | ||
147 | C[i-17] = ((C[i-17] ^ (T>>>27) ^ (T>>>25) ^ (T>>>22) ^ (T>>>17)) >>> 0); | ||
148 | } | ||
149 | T = (C[17] >>> 27); | ||
150 | C[0] = ((C[0] ^ T ^ ((T<<2) ^ (T<<5) ^ (T<<10)) & 0xffffffff) >>> 0); | ||
151 | C[17] = (C[17] & 0x07ffffff); | ||
152 | |||
153 | for(i=18; i<=35; i++) { | ||
154 | C[i] = 0; | ||
155 | } | ||
156 | |||
157 | result = new Clipperz.Crypto.ECC.BinaryField.Value(C); | ||
158 | //console.log("<<< binaryField.finiteField.(improved)module"); | ||
159 | } | ||
160 | |||
161 | return result; | ||
162 | }; | ||
163 | } | ||
164 | |||
165 | return Clipperz.Crypto.ECC.StandardCurves._B571; | ||
166 | }, | ||
167 | |||
168 | //----------------------------------------------------------------------------- | ||
169 | |||
170 | '_B283': null, | ||
171 | 'B283': function() { //f(z) = z^283 + z^12 + z^7 + z^5 + 1 | ||
172 | if ((Clipperz.Crypto.ECC.StandardCurves._B283 == null) && (typeof(Clipperz.Crypto.ECC.BinaryField.Curve) != 'undefined')) { | ||
173 | Clipperz.Crypto.ECC.StandardCurves._B283 = new Clipperz.Crypto.ECC.BinaryField.Curve({ | ||
174 | modulus: new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16), | ||
175 | a: new Clipperz.Crypto.ECC.BinaryField.Value('1', 16), | ||
176 | b: new Clipperz.Crypto.ECC.BinaryField.Value('027b680a c8b8596d a5a4af8a 19a0303f ca97fd76 45309fa2 a581485a f6263e31 3b79a2f5', 16), | ||
177 | G: new Clipperz.Crypto.ECC.BinaryField.Point({ | ||
178 | x: new Clipperz.Crypto.ECC.BinaryField.Value('05f93925 8db7dd90 e1934f8c 70b0dfec 2eed25b8 557eac9c 80e2e198 f8cdbecd 86b12053', 16), | ||
179 | y: new Clipperz.Crypto.ECC.BinaryField.Value('03676854 fe24141c b98fe6d4 b20d02b4 516ff702 350eddb0 826779c8 13f0df45 be8112f4', 16) | ||
180 | }), | ||
181 | r: new Clipperz.Crypto.ECC.BinaryField.Value('03ffffff ffffffff ffffffff ffffffff ffffef90 399660fc 938a9016 5b042a7c efadb307', 16), | ||
182 | h: new Clipperz.Crypto.ECC.BinaryField.Value('2', 16) | ||
183 | }); | ||
184 | |||
185 | //----------------------------------------------------------------------------- | ||
186 | // | ||
187 | //Guide to Elliptic Curve Cryptography | ||
188 | //Darrel Hankerson, Alfred Menezes, Scott Vanstone | ||
189 | //- Pag: 56, Alorithm 2.43 | ||
190 | // | ||
191 | //----------------------------------------------------------------------------- | ||
192 | Clipperz.Crypto.ECC.StandardCurves._B283.finiteField().slowModule = Clipperz.Crypto.ECC.StandardCurves._B283.finiteField().module; | ||
193 | Clipperz.Crypto.ECC.StandardCurves._B283.finiteField().module = function(aValue) { | ||
194 | varresult; | ||
195 | |||
196 | if (aValue.bitSize() > 564) { | ||
197 | MochiKit.Logging.logWarning("ECC.StandarCurves.B283.finiteField().module: falling back to default implementation"); | ||
198 | result = Clipperz.Crypto.ECC.StandardCurves._B283.finiteField().slowModule(aValue); | ||
199 | } else { | ||
200 | varC, T; | ||
201 | var i; | ||
202 | |||
203 | //console.log(">>> binaryField.finiteField.(improved)module"); | ||
204 | C = aValue._value.slice(0); | ||
205 | for (i=17; i>=9; i--) { | ||
206 | T = C[i]; | ||
207 | C[i-9] = (((C[i-9] ^ (T<<5) ^ (T<<10) ^ (T<<12) ^ (T<<17)) & 0xffffffff) >>> 0); | ||
208 | C[i-8] = ((C[i-8] ^ (T>>>27) ^ (T>>>22) ^ (T>>>20) ^ (T>>>15)) >>> 0); | ||
209 | } | ||
210 | T = (C[8] >>> 27); | ||
211 | C[0] = ((C[0] ^ T ^ ((T<<5) ^ (T<<7) ^ (T<<12)) & 0xffffffff) >>> 0); | ||
212 | C[8] = (C[8] & 0x07ffffff); | ||
213 | |||
214 | for(i=9; i<=17; i++) { | ||
215 | C[i] = 0; | ||
216 | } | ||
217 | |||
218 | result = new Clipperz.Crypto.ECC.BinaryField.Value(C); | ||
219 | //console.log("<<< binaryField.finiteField.(improved)module"); | ||
220 | } | ||
221 | |||
222 | return result; | ||
223 | }; | ||
224 | } | ||
225 | |||
226 | return Clipperz.Crypto.ECC.StandardCurves._B283; | ||
227 | }, | ||
228 | |||
229 | //============================================================================== | ||
230 | __syntaxFix__: "syntax fix" | ||
231 | }); | ||
232 | |||
233 | |||
234 | |||