Diffstat (limited to 'frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html') (more/less context) (ignore whitespace changes)
-rw-r--r-- | frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html | 496 |
1 files changed, 496 insertions, 0 deletions
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html new file mode 100644 index 0000000..885bcc4 --- a/dev/null +++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html | |||
@@ -0,0 +1,496 @@ | |||
1 | <!-- | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz's Javascript Crypto Library. | ||
6 | Javascript Crypto Library provides web developers with an extensive | ||
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 | ||
11 | refer 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"> | ||
51 | try { | ||
52 | var value_1; | ||
53 | var value_2; | ||
54 | |||
55 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("a", 16); | ||
56 | is(value_1.asString(16), "0a"); | ||
57 | |||
58 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff", 16); | ||
59 | is(value_1.asString(16), "ffff"); | ||
60 | |||
61 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7fff", 16); | ||
62 | is(value_1.asString(16), "7fff"); | ||
63 | |||
64 | is(parseInt("ffff", 16), 65535); | ||
65 | is(parseInt("ffffff", 16), 16777215); | ||
66 | is(parseInt("ffffffff", 16), 4294967295); | ||
67 | is(parseInt("ffffffffff", 16), 1099511627775); | ||
68 | is(parseInt("ffffffffffff", 16), 281474976710655); | ||
69 | is(parseInt("ffffffffffffff", 16), 72057594037927940); | ||
70 | is(parseInt("ffffffffffffffff", 16), 18446744073709552000); | ||
71 | is(parseInt("10000000000000000", 16), 18446744073709552001); | ||
72 | is(parseInt("10000000000000001", 16), 18446744073709552002); | ||
73 | is(parseInt("10000000000000009", 16), 18446744073709552010); | ||
74 | |||
75 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16); | ||
76 | is(value_1.wordSize(), 8, "check the number of words of a 64 char hex string using the 'wordSize' method"); | ||
77 | |||
78 | // 000108cb bacda1f0 3ea93603 01045434 ec7d82ba 150936df 08a229cb b4832ce1 | ||
79 | is(value_1.value()[0], parseInt("b4832ce1", 16), "word[0]"); | ||
80 | is(value_1.value()[1], parseInt("08a229cb", 16), "word[1]"); | ||
81 | is(value_1.value()[2], parseInt("150936df", 16), "word[2]"); | ||
82 | is(value_1.value()[3], parseInt("ec7d82ba", 16), "word[3]"); | ||
83 | is(value_1.value()[4], parseInt("01045434", 16), "word[4]"); | ||
84 | is(value_1.value()[5], parseInt("3ea93603", 16), "word[5]"); | ||
85 | is(value_1.value()[6], parseInt("bacda1f0", 16), "word[6]"); | ||
86 | is(value_1.value()[7], parseInt("000108cb", 16), "word[7]"); | ||
87 | |||
88 | is(value_1.asString(16), "0108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", "asString(16)"); | ||
89 | |||
90 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16); | ||
91 | is(value_1.wordSize(), 3, "check the number of words of a value with only a bit set on the first slot of byte at position 17"); | ||
92 | is(value_1.value()[0], parseInt("00000000", 16), "word[0]"); | ||
93 | is(value_1.value()[1], parseInt("00000000", 16), "word[1]"); | ||
94 | is(value_1.value()[2], parseInt("10", 16), "word[2]"); | ||
95 | is(value_1.asString(16), "100000000000000000", "2^17 asString(16)"); | ||
96 | |||
97 | // | ||
98 | //XOR | ||
99 | // | ||
100 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16); | ||
101 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16); | ||
102 | result = value_1.xor(value_2); | ||
103 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('0', 16); | ||
104 | is(result.asString(16), expectedResult.asString(16), "a xor a = 0"); | ||
105 | |||
106 | // | ||
107 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855', 16); | ||
108 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b935c a495991b 7852b855', 16); | ||
109 | result = value_1.xor(value_2); | ||
110 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16); | ||
111 | is(result.asString(16), expectedResult.asString(16), "single bit difference"); | ||
112 | |||
113 | // | ||
114 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("01", 16); | ||
115 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b855', 16); | ||
116 | result = value_1.xor(value_2); | ||
117 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b854', 16); | ||
118 | is(result.asString(16), expectedResult.asString(16), "01 xor value"); | ||
119 | |||
120 | // | ||
121 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16); | ||
122 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('f3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16); | ||
123 | result = value_1.xor(value_2); | ||
124 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('1000000000000000000000000000000000000000000000000000000000000000', 16); | ||
125 | is(result.asString(16), expectedResult.asString(16), "first bit difference xor"); | ||
126 | |||
127 | // | ||
128 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('84a2c58a', 16); | ||
129 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('38925faf', 16); | ||
130 | result = value_1.xor(value_2); | ||
131 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('bc309a25', 16); | ||
132 | is(result.asString(16), expectedResult.asString(16), "84a2c58a XOR 38925faf = bc309a25"); | ||
133 | |||
134 | // | ||
135 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("01401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16); | ||
136 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("0112f5c97e74737b38925fafe22cea3e12b868d4ddea5b3341db8fc2e788cab74f0a7a3cc27087a89365945369938650a99217d566e13f80dc87f08273f7411b6b01ef1d399c772a", 16); | ||
137 | result = value_1.xor(value_2); | ||
138 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('0052e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d', 16); | ||
139 | is(result.asString(16), expectedResult.asString(16), "xor"); | ||
140 | |||
141 | |||
142 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425", 16); | ||
143 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("01ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f816429a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16); | ||
144 | result = value_2.xor(value_1.shiftLeft(value_2.bitSize() - value_1.bitSize())); | ||
145 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f892e29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16); | ||
146 | is(result.asString(16), expectedResult.asString(16), "xor"); | ||
147 | is(result.bitSize(), 1120, "xor.bitSize"); | ||
148 | is(result.wordSize(), 35, "result wordSize"); | ||
149 | is(expectedResult.bitSize(), 1120, "xor.bitSize"); | ||
150 | is(expectedResult.wordSize(), 35, "expectedResult wordSize"); | ||
151 | is(result.compare(expectedResult), 0, "compare"); | ||
152 | |||
153 | |||
154 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425", 16); | ||
155 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f892e29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16); | ||
156 | result = value_2.xor(value_1.shiftLeft(value_2.bitSize() - value_1.bitSize())); | ||
157 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("6bcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f8d0b29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16); | ||
158 | is(result.asString(16), expectedResult.asString(16), "xor"); | ||
159 | is(result.bitSize(), 1119, "xor.bitSize"); | ||
160 | is(expectedResult.bitSize(), 1119, "xor.bitSize"); | ||
161 | is(result.compare(expectedResult), 0, "compare"); | ||
162 | //value_1 = | ||
163 | //value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 16); | ||
164 | |||
165 | |||
166 | value_1 = (new Clipperz.Crypto.ECC.BinaryField.Value("10101010 01010101 00000000", 16)).value(); | ||
167 | value_2 = (new Clipperz.Crypto.ECC.BinaryField.Value("10101010", 16)).value(); | ||
168 | result = new Clipperz.Crypto.ECC.BinaryField.Value(Clipperz.Crypto.ECC.BinaryField.Value._xor(value_1, value_2, 2)); | ||
169 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("01010101 00000000", 16); | ||
170 | is(result.asString(16), expectedResult.asString(16), "xor with offset 2"); | ||
171 | |||
172 | value_1 = (new Clipperz.Crypto.ECC.BinaryField.Value(" 10101010 01010101 00000000", 16)).value(); | ||
173 | value_2 = (new Clipperz.Crypto.ECC.BinaryField.Value("10101010 10101010", 16)).value(); | ||
174 | result = new Clipperz.Crypto.ECC.BinaryField.Value(Clipperz.Crypto.ECC.BinaryField.Value._xor(value_1, value_2, 2)); | ||
175 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("10101010 00000000 01010101 00000000", 16); | ||
176 | is(result.asString(16), expectedResult.asString(16), "xor with offset 2 (2)"); | ||
177 | |||
178 | // | ||
179 | //isZero | ||
180 | // | ||
181 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('0', 16); | ||
182 | is(value_1.isZero(), true, "0.isZero() == true"); | ||
183 | |||
184 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('1', 16); | ||
185 | is(value_1.isZero(), false, "1.isZero() == false"); | ||
186 | |||
187 | // | ||
188 | //Comparison | ||
189 | // | ||
190 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16); | ||
191 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16); | ||
192 | is (value_1.compare(value_2), 0, "BinaryField.value(0) = BinaryField.value(0)"); | ||
193 | //is (value_1.compare(0), 0, "BinaryField.value(0) = 0"); | ||
194 | |||
195 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16); | ||
196 | is (value_1.compare(value_2), 1, "BinaryField.value(xxxxxx) != BinaryField.value(0)"); | ||
197 | |||
198 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16); | ||
199 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16); | ||
200 | is(value_1.compare(value_2), 1, "BinaryField.value(xxxxxx) > BinaryField.value(0)"); | ||
201 | is(value_2.compare(value_1), -1, "BinaryField.value(0) < BinaryField.value(xxxx)"); | ||
202 | |||
203 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16); | ||
204 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("05", 16); | ||
205 | is(value_1.compare(value_2), 1, "BinaryField.value(xxxxxx) > BinaryField.value(05)"); | ||
206 | is(value_2.compare(value_1), -1, "BinaryField.value(05) < BinaryField.value(xxxx)"); | ||
207 | |||
208 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("-10", 16); | ||
209 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("10", 16); | ||
210 | is(value_1.compare(value_2), -1, "BinaryField.value(-10) - BinaryField.value(10). No negative number are managed"); | ||
211 | |||
212 | // | ||
213 | //more comparison | ||
214 | // | ||
215 | |||
216 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16); | ||
217 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16); | ||
218 | result = value_1.compare(value_2); | ||
219 | is(result, 0, "equal compare"); | ||
220 | |||
221 | // | ||
222 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442", 16); | ||
223 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442", 16); | ||
224 | result = value_1.compare(value_2); | ||
225 | is(result, -1, "second term with one more bit at the leftmost - compare (1)"); | ||
226 | |||
227 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14", 16); | ||
228 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14", 16); | ||
229 | result = value_1.compare(value_2); | ||
230 | is(result, -1, "second term with one more bit at the leftmost - compare (2)"); | ||
231 | |||
232 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14 9afbf4c8", 16); | ||
233 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14 9afbf4c8", 16); | ||
234 | result = value_1.compare(value_2); | ||
235 | is(result, -1, "second term with one more bit at the leftmost - compare (3)"); | ||
236 | |||
237 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16); | ||
238 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16); | ||
239 | result = value_1.compare(value_2); | ||
240 | is(result, -1, "second term with one more bit at the leftmost - compare (n)"); | ||
241 | |||
242 | // | ||
243 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442", 16); | ||
244 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442", 16); | ||
245 | result = value_1.compare(value_2); | ||
246 | is(result, 1, "first term with one more bit at the leftmost - compare (1)"); | ||
247 | |||
248 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14", 16); | ||
249 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14", 16); | ||
250 | result = value_1.compare(value_2); | ||
251 | is(result, 1, "first term with one more bit at the leftmost - compare (2)"); | ||
252 | |||
253 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16); | ||
254 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16); | ||
255 | result = value_1.compare(value_2); | ||
256 | is(result, 1, "first term with one more bit at the leftmost - compare (n)"); | ||
257 | |||
258 | // | ||
259 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427af41e4649b934ca495991b7852b855", 16); | ||
260 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16); | ||
261 | result = value_1.compare(value_2); | ||
262 | is(result, 1, "first term with one more bit in the middle - compare"); | ||
263 | |||
264 | // | ||
265 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427af41e4649b934ca495991b7852b855", 16); | ||
266 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427aeffffffffffffffffffffffffffff", 16); | ||
267 | result = value_1.compare(value_2); | ||
268 | is(result, 1, "first term with one more bit in the middle - compare"); | ||
269 | |||
270 | // | ||
271 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16); | ||
272 | value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("05", 16); | ||
273 | result = value_1.compare(value_2); | ||
274 | is(result, 1, "equal compare"); | ||
275 | |||
276 | |||
277 | |||
278 | // | ||
279 | //isBitSet | ||
280 | // | ||
281 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16); | ||
282 | result = value_1.isBitSet(1); | ||
283 | expectedResult = true; | ||
284 | is(result, expectedResult, "'ff'.isBitSet(1)"); | ||
285 | |||
286 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f0", 16); | ||
287 | result =value_1.isBitSet(1); | ||
288 | expectedResult = false; | ||
289 | is(result, expectedResult, "'f0'.isBitSet(1)"); | ||
290 | |||
291 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f0", 16); | ||
292 | result = value_1.isBitSet(3); | ||
293 | expectedResult = false; | ||
294 | is(result, expectedResult, "'f0'.isBitSet(3)"); | ||
295 | |||
296 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f0", 16); | ||
297 | result = value_1.isBitSet(4); | ||
298 | expectedResult = true; | ||
299 | is(result, expectedResult, "'f0'.isBitSet(4)"); | ||
300 | |||
301 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff00", 16); | ||
302 | result = value_1.isBitSet(7); | ||
303 | expectedResult = false; | ||
304 | is(result, expectedResult, "'ff00'.isBitSet(7)"); | ||
305 | |||
306 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff00", 16); | ||
307 | result = value_1.isBitSet(8); | ||
308 | expectedResult = true; | ||
309 | is(result, expectedResult, "'ff00'.isBitSet(8)"); | ||
310 | |||
311 | // | ||
312 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("05000000000000", 16); | ||
313 | result = value_1.isBitSet(47); | ||
314 | expectedResult = false; | ||
315 | is(result, expectedResult, "'05000000000000'.isBitSet(47)"); | ||
316 | |||
317 | result = value_1.isBitSet(48); | ||
318 | expectedResult = true; | ||
319 | is(result, expectedResult, "'05000000000000'.isBitSet(48)"); | ||
320 | |||
321 | result = value_1.isBitSet(49); | ||
322 | expectedResult = false; | ||
323 | is(result, expectedResult, "'05000000000000'.isBitSet(49)"); | ||
324 | |||
325 | result = value_1.isBitSet(50); | ||
326 | expectedResult = true; | ||
327 | is(result, expectedResult, "'05000000000000'.isBitSet(50)"); | ||
328 | |||
329 | result = value_1.isBitSet(51); | ||
330 | expectedResult = false; | ||
331 | is(result, expectedResult, "'05000000000000'.isBitSet(51)"); | ||
332 | |||
333 | // | ||
334 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16); | ||
335 | |||
336 | result = value_1.isBitSet(52); | ||
337 | is(result, true, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(52)"); | ||
338 | |||
339 | result = value_1.isBitSet(53); | ||
340 | is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(53)"); | ||
341 | |||
342 | result = value_1.isBitSet(54); | ||
343 | is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(54)"); | ||
344 | |||
345 | result = value_1.isBitSet(55); | ||
346 | is(result, true, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(55)"); | ||
347 | |||
348 | result = value_1.isBitSet(56); | ||
349 | is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(56)"); | ||
350 | |||
351 | result = value_1.isBitSet(57); | ||
352 | is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(57)"); | ||
353 | |||
354 | result = value_1.isBitSet(58); | ||
355 | is(result, true, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(58)"); | ||
356 | |||
357 | result = value_1.isBitSet(59); | ||
358 | is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(59)"); | ||
359 | |||
360 | result = value_1.isBitSet(60); | ||
361 | is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(60)"); | ||
362 | |||
363 | |||
364 | // | ||
365 | //shiftLeft | ||
366 | // | ||
367 | |||
368 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7f", 16); | ||
369 | result = value_1.shiftLeft(1); | ||
370 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('fe', 16); | ||
371 | is(result.asString(16), expectedResult.asString(16), "'7f'.shiftLeft(1)"); | ||
372 | |||
373 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16); | ||
374 | result = value_1.shiftLeft(1); | ||
375 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('01fe', 16); | ||
376 | is(result.asString(16), expectedResult.asString(16), "'ff'.shiftLeft(1)"); | ||
377 | |||
378 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( 'ffff', 16); | ||
379 | expectedResult =new Clipperz.Crypto.ECC.BinaryField.Value('ffff00', 16); | ||
380 | result = value_1.shiftLeft(8); | ||
381 | is(result.asString(16), expectedResult.asString(16), "ffff.shiftLeft(8)"); | ||
382 | |||
383 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( '80000000', 16); | ||
384 | expectedResult =new Clipperz.Crypto.ECC.BinaryField.Value('1 00000000', 16); | ||
385 | result = value_1.shiftLeft(1); | ||
386 | is(result.compare(expectedResult) == 0, true, '8000000.shiftLeft(1).compare'); | ||
387 | is(result.asString(16), expectedResult.asString(16), "80000000.shiftLeft(1)"); | ||
388 | |||
389 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('20000000', 16); | ||
390 | expectedResult =new Clipperz.Crypto.ECC.BinaryField.Value('40000000', 16); | ||
391 | result = value_1.shiftLeft(1); | ||
392 | is(result.compare(expectedResult) == 0, true, '2000000.shiftLeft(1).compare'); | ||
393 | is(result.asString(16), expectedResult.asString(16), "20000000.shiftLeft(1)"); | ||
394 | |||
395 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('40000000', 16); | ||
396 | expectedResult =new Clipperz.Crypto.ECC.BinaryField.Value('80000000', 16); | ||
397 | result = value_1.shiftLeft(1); | ||
398 | is(result.compare(expectedResult) == 0, true, '4000000.shiftLeft(1).compare'); | ||
399 | is(result.asString(16), expectedResult.asString(16), "40000000.shiftLeft(1)"); | ||
400 | |||
401 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( 'ff7fffff', 16); | ||
402 | expectedResult =new Clipperz.Crypto.ECC.BinaryField.Value('ff 7fffff00', 16); | ||
403 | result = value_1.shiftLeft(8); | ||
404 | is(result.asString(16), expectedResult.asString(16), "ff7fffff.shiftLeft(8)"); | ||
405 | |||
406 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( 'ffffffff', 16); | ||
407 | expectedResult =new Clipperz.Crypto.ECC.BinaryField.Value('ff ffffff00', 16); | ||
408 | result = value_1.shiftLeft(8); | ||
409 | is(result.asString(16), expectedResult.asString(16), "ffffffff.shiftLeft(8)"); | ||
410 | |||
411 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( "e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16); | ||
412 | expectedResult =new Clipperz.Crypto.ECC.BinaryField.Value('3 8ec3110a 63f07052 6befd322 65bee490 9eb90791 926e4d32 9256646d e14ae154', 16); | ||
413 | result = value_1.shiftLeft(2); | ||
414 | is(result.asString(16), expectedResult.asString(16), "Value.shiftLeft(10)"); | ||
415 | |||
416 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16); | ||
417 | result = value_1.shiftLeft(8); | ||
418 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85500', 16); | ||
419 | is(result.asString(16), expectedResult.asString(16), "Value.shiftLeft(8)"); | ||
420 | |||
421 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16); | ||
422 | result = value_1.shiftLeft(10); | ||
423 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('38e c3110a63 f070526b efd32265 bee4909e b9079192 6e4d3292 56646de1 4ae15400', 16); | ||
424 | is(result.asString(16), expectedResult.asString(16), "Value.shiftLeft(10)"); | ||
425 | |||
426 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16); | ||
427 | result = value_1.shiftLeft(32); | ||
428 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff00000000', 16); | ||
429 | is(result.asString(16), expectedResult.asString(16), "ff.shiftLeft(32)"); | ||
430 | |||
431 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16); | ||
432 | result = value_1.shiftLeft(4096); | ||
433 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 16); | ||
434 | is(result.asString(16), expectedResult.asString(16), "bigInt.shiftLeft(4096)"); | ||
435 | |||
436 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16); | ||
437 | result = value_1.shiftLeft(5000); | ||
438 | expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 16); | ||
439 | is(result.asString(16), expectedResult.asString(16), "bigInt.shiftLeft(4096)"); | ||
440 | |||
441 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16); | ||
442 | is(value_1.bitSize(), 0, "0.bitSize()"); | ||
443 | |||
444 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("10", 16); | ||
445 | is(value_1.bitSize(), 5, "10.bitSize()"); | ||
446 | |||
447 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("80", 16); | ||
448 | is(value_1.bitSize(), 8, "80.bitSize()"); | ||
449 | |||
450 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16); | ||
451 | is(value_1.bitSize(), 8, "ff.bitSize()"); | ||
452 | |||
453 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("100", 16); | ||
454 | is(value_1.bitSize(), 9, "100.bitSize()"); | ||
455 | |||
456 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("80000000", 16); | ||
457 | is(value_1.bitSize(), 32, "80000000.bitSize()"); | ||
458 | |||
459 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffffffff", 16); | ||
460 | is(value_1.bitSize(), 32, "ffffffff.bitSize()"); | ||
461 | |||
462 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("1 00000000", 16); | ||
463 | is(value_1.bitSize(), 33, "100000000.bitSize()"); | ||
464 | |||
465 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("8000 00000000", 16); | ||
466 | is(value_1.bitSize(), 48, "8000 00000000.bitSize()"); | ||
467 | |||
468 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff ffffffff", 16); | ||
469 | is(value_1.bitSize(), 48, "ffff ffffffff.bitSize()"); | ||
470 | |||
471 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("10000 00000000", 16); | ||
472 | is(value_1.bitSize(), 49, "10000 00000000.bitSize()"); | ||
473 | |||
474 | value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("6bcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f8d0b29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16); | ||
475 | is(value_1.bitSize(), 1119, "6bcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f8d0b29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16.bitSize()"); | ||
476 | |||
477 | //------------------------------------------------------------------------- | ||
478 | } catch (err) { | ||
479 | |||
480 | var s = "test suite failure!\n"; | ||
481 | var o = {}; | ||
482 | var k = null; | ||
483 | for (k in err) { | ||
484 | // ensure unique keys?! | ||
485 | if (!o[k]) { | ||
486 | s += k + ": " + err[k] + "\n"; | ||
487 | o[k] = err[k]; | ||
488 | } | ||
489 | } | ||
490 | ok ( false, s ); | ||
491 | } | ||
492 | |||
493 | </script> | ||
494 | </pre> | ||
495 | </body> | ||
496 | </html> | ||