summaryrefslogtreecommitdiff
path: root/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
Unidiff
Diffstat (limited to 'frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html183
1 files changed, 183 insertions, 0 deletions
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
new file mode 100644
index 0000000..6bddb26
--- a/dev/null
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
@@ -0,0 +1,183 @@
1<!--
2
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz's Javascript Crypto Library.
6Javascript Crypto Library provides web developers with an extensive
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please
11refer to http://www.clipperz.com
12
13* Javascript Crypto Library is free software: you can redistribute
14 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
16 3 of the License, or (at your option) any later version.
17
18* Javascript Crypto Library is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details.
22
23* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see
25 <http://www.gnu.org/licenses/>.
26
27-->
28
29<html>
30<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35
36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
41<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
47</head>
48<body>
49<pre id="test">
50<script type="text/javascript">
51try {
52 //
53 //ECC.BinaryFiniteField
54 //
55 varf2m;
56 varf2m_improved;
57 var a, b;
58 var result;
59 var result_improved;
60 var expectedResul;
61
62 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425', 16)})
63 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B571().finiteField();
64 a = new Clipperz.Crypto.ECC.BinaryField.Value("01401ca8 7b8f1446 84a2c58a e9308c23 7789e4bf 1f36dd11 7c150b7d 6076dd1d a6197fe4 c5225a06 4db0e422 2589d5ca 50eb6bb6 b7147a03 f6152843 8a8767c6 a6c4a688 3fd6f067", 16);
65 b = new Clipperz.Crypto.ECC.BinaryField.Value("0112f5c9 7e74737b 38925faf e22cea3e 12b868d4 ddea5b33 41db8fc2 e788cab7 4f0a7a3c c27087a8 93659453 69938650 a99217d5 66e13f80 dc87f082 73f7411b 6b01ef1d 399c772a", 16);
66
67 //
68 //addition
69 //
70 result = f2m.add(a, b);
71 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16);
72 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add");
73
74
75 //
76 //negation
77 //
78 result = f2m.negate(a);
79 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
80 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.negate");
81
82
83 //
84 //multiplication
85 //
86 result = f2m.multiply(a, b);
87 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("4f8e4c0ae7664b284d3b4cb1b3f9568a1ce6e6e96b5381e184fe0822cb3d5c3a3f01ffd0206355d9e5c4853472bb33cf6b2d861d6b48c39d33a360e9a63ad2f7102f92e68a12312", 16);
88 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.multiply");
89
90
91 //
92 //fast multiplication
93 //
94 result = f2m.fastMultiply(a, b);
95 expectedResult = f2m.multiply(a, b);
96 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply");
97
98 a = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16);
99 b = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
100 result = f2m.fastMultiply(a, b);
101 expectedResult = f2m.multiply(a, b);
102 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply");
103
104 //
105 //square
106 //
107 a = new Clipperz.Crypto.ECC.BinaryField.Value("1111", 16);
108 result = f2m.square(a);
109 expectedResult = f2m.multiply(a, a);
110 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
111
112 a = new Clipperz.Crypto.ECC.BinaryField.Value("11111111", 16);
113 result = f2m.square(a);
114 expectedResult = f2m.multiply(a, a);
115 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
116
117 a = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
118 result = f2m.square(a);
119 expectedResult = f2m.multiply(a, a);
120 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
121
122
123 //
124 //inverse
125 //
126 a = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
127 result = f2m.inverse(a);
128 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("1f898c60983c4e807e619b9cbe528585fc33aaae419d5e5cb2107269ccdcf21d5ad5b5d78d37fa435a0d0a8a75f2506240c325c6a2eee1a03008f9e1b9c6c0a511b730cdaf9b97e", 16);
129 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.inverse");
130
131
132 //
133 //module
134 //
135
136 a = new Clipperz.Crypto.ECC.BinaryField.Value("015655ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f060a0aa6c29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16);
137 a1 = new Clipperz.Crypto.ECC.BinaryField.Value("015655ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f060a0aa6c29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16);
138 result = f2m.module(a);
139 result_improved = f2m_improved.module(a1);
140 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("4f8e4c0ae7664b284d3b4cb1b3f9568a1ce6e6e96b5381e184fe0822cb3d5c3a3f01ffd0206355d9e5c4853472bb33cf6b2d861d6b48c39d33a360e9a63ad2f7102f92e68a12312", 16);
141 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.module");
142 is(result_improved.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.module (improved)");
143 //is(result.asString(16), result_improved.asString(16), "standard vs improved 'module' methods");
144
145
146 a = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067112f5c97e74737b38925fafe22cea3e12b868d4ddea5b3341db8fc2e788cab74f0a7a3cc27087a89365945369938650a99217d566e13f80dc87f08273f7411b6b01ef1d399c772a", 16);
147 a1 = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067112f5c97e74737b38925fafe22cea3e12b868d4ddea5b3341db8fc2e788cab74f0a7a3cc27087a89365945369938650a99217d566e13f80dc87f08273f7411b6b01ef1d399c772a", 16);
148 result = f2m.module(a);
149 result_improved = f2m_improved.module(a1);
150 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("1704018ce75dc462a5ccd1eb18b8002ecb8536c616ec625f440f6888f8c32387e53a5cb3b6050688e9b64a32215a385ee98c518d6a484d5ac0ceeafa825743c84b075bdfabc341b", 16);
151 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.module (2)");
152 is(result_improved.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.module (improved) (2)");
153 is(a.asString(16), "1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067112f5c97e74737b38925fafe22cea3e12b868d4ddea5b3341db8fc2e788cab74f0a7a3cc27087a89365945369938650a99217d566e13f80dc87f08273f7411b6b01ef1d399c772a", "ECC.BinaryFinetField.module (2)");
154 is(a1.asString(16), "1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067112f5c97e74737b38925fafe22cea3e12b868d4ddea5b3341db8fc2e788cab74f0a7a3cc27087a89365945369938650a99217d566e13f80dc87f08273f7411b6b01ef1d399c772a", "ECC.BinaryFinetField.module (2)");
155
156
157 a = new Clipperz.Crypto.ECC.BinaryField.Value("112f5c97e74737b38925fafe22cea3e12b868d4ddea5b3341db8fc2e788cab74f0a7a3cc27087a89365945369938650a99217d566e13f80dc87f08273f7411b6b01ef1d399c772a1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
158 result = f2m.module(a);
159 result_improved = f2m_improved.module(a);
160 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("e160dd4a436e63877e1343d06576beaa66e06863ffe4335be38d6a37460a62d11133584a5bc6ac0590e18942e1fa88bb64a4d9fc6c1fd7b55d7e57b50b70a9e7cb2ed904ad77f4", 16);
161 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.module (2)");
162 is(result_improved.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.module (improved) (2)");
163
164 //-------------------------------------------------------------------------
165} catch (err) {
166
167 var s = "test suite failure!\n";
168 var o = {};
169 var k = null;
170 for (k in err) {
171 // ensure unique keys?!
172 if (!o[k]) {
173 s += k + ": " + err[k] + "\n";
174 o[k] = err[k];
175 }
176 }
177 ok ( false, s );
178}
179
180</script>
181</pre>
182</body>
183</html>