493 lines
28 KiB
HTML
493 lines
28 KiB
HTML
<!--
|
|
|
|
Copyright 2008-2011 Clipperz Srl
|
|
|
|
This file is part of Clipperz Community Edition.
|
|
Clipperz Community Edition is an online password manager.
|
|
For further information about its features and functionalities please
|
|
refer to http://www.clipperz.com.
|
|
|
|
* Clipperz Community Edition is free software: you can redistribute
|
|
it and/or modify it under the terms of the GNU Affero General Public
|
|
License as published by the Free Software Foundation, either version
|
|
3 of the License, or (at your option) any later version.
|
|
|
|
* Clipperz Community Edition is distributed in the hope that it will
|
|
be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the GNU Affero General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU Affero General Public
|
|
License along with Clipperz Community Edition. If not, see
|
|
<http://www.gnu.org/licenses/>.
|
|
|
|
-->
|
|
|
|
<html>
|
|
<head>
|
|
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
|
|
<script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
|
|
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
|
|
<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
|
|
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
|
|
<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
|
|
<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
|
|
</head>
|
|
<body>
|
|
<pre id="test">
|
|
<script type="text/javascript">
|
|
try {
|
|
var value_1;
|
|
var value_2;
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("a", 16);
|
|
is(value_1.asString(16), "0a");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff", 16);
|
|
is(value_1.asString(16), "ffff");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7fff", 16);
|
|
is(value_1.asString(16), "7fff");
|
|
|
|
is(parseInt("ffff", 16), 65535);
|
|
is(parseInt("ffffff", 16), 16777215);
|
|
is(parseInt("ffffffff", 16), 4294967295);
|
|
is(parseInt("ffffffffff", 16), 1099511627775);
|
|
is(parseInt("ffffffffffff", 16), 281474976710655);
|
|
is(parseInt("ffffffffffffff", 16), 72057594037927940);
|
|
is(parseInt("ffffffffffffffff", 16), 18446744073709552000);
|
|
is(parseInt("10000000000000000", 16), 18446744073709552001);
|
|
is(parseInt("10000000000000001", 16), 18446744073709552002);
|
|
is(parseInt("10000000000000009", 16), 18446744073709552010);
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16);
|
|
is(value_1.wordSize(), 8, "check the number of words of a 64 char hex string using the 'wordSize' method");
|
|
|
|
// 000108cb bacda1f0 3ea93603 01045434 ec7d82ba 150936df 08a229cb b4832ce1
|
|
is(value_1.value()[0], parseInt("b4832ce1", 16), "word[0]");
|
|
is(value_1.value()[1], parseInt("08a229cb", 16), "word[1]");
|
|
is(value_1.value()[2], parseInt("150936df", 16), "word[2]");
|
|
is(value_1.value()[3], parseInt("ec7d82ba", 16), "word[3]");
|
|
is(value_1.value()[4], parseInt("01045434", 16), "word[4]");
|
|
is(value_1.value()[5], parseInt("3ea93603", 16), "word[5]");
|
|
is(value_1.value()[6], parseInt("bacda1f0", 16), "word[6]");
|
|
is(value_1.value()[7], parseInt("000108cb", 16), "word[7]");
|
|
|
|
is(value_1.asString(16), "0108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", "asString(16)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16);
|
|
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");
|
|
is(value_1.value()[0], parseInt("00000000", 16), "word[0]");
|
|
is(value_1.value()[1], parseInt("00000000", 16), "word[1]");
|
|
is(value_1.value()[2], parseInt("10", 16), "word[2]");
|
|
is(value_1.asString(16), "100000000000000000", "2^17 asString(16)");
|
|
|
|
//
|
|
// XOR
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16);
|
|
result = value_1.xor(value_2);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('0', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "a xor a = 0");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855', 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b935c a495991b 7852b855', 16);
|
|
result = value_1.xor(value_2);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "single bit difference");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("01", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b855', 16);
|
|
result = value_1.xor(value_2);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b854', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "01 xor value");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('f3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16);
|
|
result = value_1.xor(value_2);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('1000000000000000000000000000000000000000000000000000000000000000', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "first bit difference xor");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('84a2c58a', 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('38925faf', 16);
|
|
result = value_1.xor(value_2);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('bc309a25', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "84a2c58a XOR 38925faf = bc309a25");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("01401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("0112f5c97e74737b38925fafe22cea3e12b868d4ddea5b3341db8fc2e788cab74f0a7a3cc27087a89365945369938650a99217d566e13f80dc87f08273f7411b6b01ef1d399c772a", 16);
|
|
result = value_1.xor(value_2);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('0052e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "xor");
|
|
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("01ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f816429a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16);
|
|
result = value_2.xor(value_1.shiftLeft(value_2.bitSize() - value_1.bitSize()));
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f892e29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16);
|
|
is(result.asString(16), expectedResult.asString(16), "xor");
|
|
is(result.bitSize(), 1120, "xor.bitSize");
|
|
is(result.wordSize(), 35, "result wordSize");
|
|
is(expectedResult.bitSize(), 1120, "xor.bitSize");
|
|
is(expectedResult.wordSize(), 35, "expectedResult wordSize");
|
|
is(result.compare(expectedResult), 0, "compare");
|
|
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("ebcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f892e29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16);
|
|
result = value_2.xor(value_1.shiftLeft(value_2.bitSize() - value_1.bitSize()));
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("6bcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f8d0b29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16);
|
|
is(result.asString(16), expectedResult.asString(16), "xor");
|
|
is(result.bitSize(), 1119, "xor.bitSize");
|
|
is(expectedResult.bitSize(), 1119, "xor.bitSize");
|
|
is(result.compare(expectedResult), 0, "compare");
|
|
// value_1 =
|
|
// value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 16);
|
|
|
|
|
|
value_1 = (new Clipperz.Crypto.ECC.BinaryField.Value("10101010 01010101 00000000", 16)).value();
|
|
value_2 = (new Clipperz.Crypto.ECC.BinaryField.Value("10101010", 16)).value();
|
|
result = new Clipperz.Crypto.ECC.BinaryField.Value(Clipperz.Crypto.ECC.BinaryField.Value._xor(value_1, value_2, 2));
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("01010101 00000000", 16);
|
|
is(result.asString(16), expectedResult.asString(16), "xor with offset 2");
|
|
|
|
value_1 = (new Clipperz.Crypto.ECC.BinaryField.Value(" 10101010 01010101 00000000", 16)).value();
|
|
value_2 = (new Clipperz.Crypto.ECC.BinaryField.Value("10101010 10101010", 16)).value();
|
|
result = new Clipperz.Crypto.ECC.BinaryField.Value(Clipperz.Crypto.ECC.BinaryField.Value._xor(value_1, value_2, 2));
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("10101010 00000000 01010101 00000000", 16);
|
|
is(result.asString(16), expectedResult.asString(16), "xor with offset 2 (2)");
|
|
|
|
//
|
|
// isZero
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('0', 16);
|
|
is(value_1.isZero(), true, "0.isZero() == true");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('1', 16);
|
|
is(value_1.isZero(), false, "1.isZero() == false");
|
|
|
|
//
|
|
// Comparison
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16);
|
|
is (value_1.compare(value_2), 0, "BinaryField.value(0) = BinaryField.value(0)");
|
|
// is (value_1.compare(0), 0, "BinaryField.value(0) = 0");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16);
|
|
is (value_1.compare(value_2), 1, "BinaryField.value(xxxxxx) != BinaryField.value(0)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16);
|
|
is(value_1.compare(value_2), 1, "BinaryField.value(xxxxxx) > BinaryField.value(0)");
|
|
is(value_2.compare(value_1), -1, "BinaryField.value(0) < BinaryField.value(xxxx)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("05", 16);
|
|
is(value_1.compare(value_2), 1, "BinaryField.value(xxxxxx) > BinaryField.value(05)");
|
|
is(value_2.compare(value_1), -1, "BinaryField.value(05) < BinaryField.value(xxxx)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("-10", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("10", 16);
|
|
is(value_1.compare(value_2), -1, "BinaryField.value(-10) - BinaryField.value(10). No negative number are managed");
|
|
|
|
//
|
|
// more comparison
|
|
//
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, 0, "equal compare");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, -1, "second term with one more bit at the leftmost - compare (1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, -1, "second term with one more bit at the leftmost - compare (2)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14 9afbf4c8", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14 9afbf4c8", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, -1, "second term with one more bit at the leftmost - compare (3)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, -1, "second term with one more bit at the leftmost - compare (n)");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, 1, "first term with one more bit at the leftmost - compare (1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, 1, "first term with one more bit at the leftmost - compare (2)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, 1, "first term with one more bit at the leftmost - compare (n)");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427af41e4649b934ca495991b7852b855", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, 1, "first term with one more bit in the middle - compare");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427af41e4649b934ca495991b7852b855", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427aeffffffffffffffffffffffffffff", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, 1, "first term with one more bit in the middle - compare");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16);
|
|
value_2 = new Clipperz.Crypto.ECC.BinaryField.Value("05", 16);
|
|
result = value_1.compare(value_2);
|
|
is(result, 1, "equal compare");
|
|
|
|
|
|
|
|
//
|
|
// isBitSet
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16);
|
|
result = value_1.isBitSet(1);
|
|
expectedResult = true;
|
|
is(result, expectedResult, "'ff'.isBitSet(1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f0", 16);
|
|
result =value_1.isBitSet(1);
|
|
expectedResult = false;
|
|
is(result, expectedResult, "'f0'.isBitSet(1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f0", 16);
|
|
result = value_1.isBitSet(3);
|
|
expectedResult = false;
|
|
is(result, expectedResult, "'f0'.isBitSet(3)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("f0", 16);
|
|
result = value_1.isBitSet(4);
|
|
expectedResult = true;
|
|
is(result, expectedResult, "'f0'.isBitSet(4)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff00", 16);
|
|
result = value_1.isBitSet(7);
|
|
expectedResult = false;
|
|
is(result, expectedResult, "'ff00'.isBitSet(7)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff00", 16);
|
|
result = value_1.isBitSet(8);
|
|
expectedResult = true;
|
|
is(result, expectedResult, "'ff00'.isBitSet(8)");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("05000000000000", 16);
|
|
result = value_1.isBitSet(47);
|
|
expectedResult = false;
|
|
is(result, expectedResult, "'05000000000000'.isBitSet(47)");
|
|
|
|
result = value_1.isBitSet(48);
|
|
expectedResult = true;
|
|
is(result, expectedResult, "'05000000000000'.isBitSet(48)");
|
|
|
|
result = value_1.isBitSet(49);
|
|
expectedResult = false;
|
|
is(result, expectedResult, "'05000000000000'.isBitSet(49)");
|
|
|
|
result = value_1.isBitSet(50);
|
|
expectedResult = true;
|
|
is(result, expectedResult, "'05000000000000'.isBitSet(50)");
|
|
|
|
result = value_1.isBitSet(51);
|
|
expectedResult = false;
|
|
is(result, expectedResult, "'05000000000000'.isBitSet(51)");
|
|
|
|
//
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16);
|
|
|
|
result = value_1.isBitSet(52);
|
|
is(result, true, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(52)");
|
|
|
|
result = value_1.isBitSet(53);
|
|
is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(53)");
|
|
|
|
result = value_1.isBitSet(54);
|
|
is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(54)");
|
|
|
|
result = value_1.isBitSet(55);
|
|
is(result, true, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(55)");
|
|
|
|
result = value_1.isBitSet(56);
|
|
is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(56)");
|
|
|
|
result = value_1.isBitSet(57);
|
|
is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(57)");
|
|
|
|
result = value_1.isBitSet(58);
|
|
is(result, true, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(58)");
|
|
|
|
result = value_1.isBitSet(59);
|
|
is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(59)");
|
|
|
|
result = value_1.isBitSet(60);
|
|
is(result, false, "'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'.isBitSet(60)");
|
|
|
|
|
|
//
|
|
// shiftLeft
|
|
//
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7f", 16);
|
|
result = value_1.shiftLeft(1);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('fe', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "'7f'.shiftLeft(1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16);
|
|
result = value_1.shiftLeft(1);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('01fe', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "'ff'.shiftLeft(1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( 'ffff', 16);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ffff00', 16);
|
|
result = value_1.shiftLeft(8);
|
|
is(result.asString(16), expectedResult.asString(16), "ffff.shiftLeft(8)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( '80000000', 16);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('1 00000000', 16);
|
|
result = value_1.shiftLeft(1);
|
|
is(result.compare(expectedResult) == 0, true, '8000000.shiftLeft(1).compare');
|
|
is(result.asString(16), expectedResult.asString(16), "80000000.shiftLeft(1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('20000000', 16);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('40000000', 16);
|
|
result = value_1.shiftLeft(1);
|
|
is(result.compare(expectedResult) == 0, true, '2000000.shiftLeft(1).compare');
|
|
is(result.asString(16), expectedResult.asString(16), "20000000.shiftLeft(1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('40000000', 16);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('80000000', 16);
|
|
result = value_1.shiftLeft(1);
|
|
is(result.compare(expectedResult) == 0, true, '4000000.shiftLeft(1).compare');
|
|
is(result.asString(16), expectedResult.asString(16), "40000000.shiftLeft(1)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( 'ff7fffff', 16);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff 7fffff00', 16);
|
|
result = value_1.shiftLeft(8);
|
|
is(result.asString(16), expectedResult.asString(16), "ff7fffff.shiftLeft(8)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( 'ffffffff', 16);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff ffffff00', 16);
|
|
result = value_1.shiftLeft(8);
|
|
is(result.asString(16), expectedResult.asString(16), "ffffffff.shiftLeft(8)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value( "e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", 16);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('3 8ec3110a 63f07052 6befd322 65bee490 9eb90791 926e4d32 9256646d e14ae154', 16);
|
|
result = value_1.shiftLeft(2);
|
|
is(result.asString(16), expectedResult.asString(16), "Value.shiftLeft(10)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16);
|
|
result = value_1.shiftLeft(8);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85500', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "Value.shiftLeft(8)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 16);
|
|
result = value_1.shiftLeft(10);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('38e c3110a63 f070526b efd32265 bee4909e b9079192 6e4d3292 56646de1 4ae15400', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "Value.shiftLeft(10)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16);
|
|
result = value_1.shiftLeft(32);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff00000000', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "ff.shiftLeft(32)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16);
|
|
result = value_1.shiftLeft(4096);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "bigInt.shiftLeft(4096)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16);
|
|
result = value_1.shiftLeft(5000);
|
|
expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 16);
|
|
is(result.asString(16), expectedResult.asString(16), "bigInt.shiftLeft(4096)");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("0", 16);
|
|
is(value_1.bitSize(), 0, "0.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("10", 16);
|
|
is(value_1.bitSize(), 5, "10.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("80", 16);
|
|
is(value_1.bitSize(), 8, "80.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ff", 16);
|
|
is(value_1.bitSize(), 8, "ff.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("100", 16);
|
|
is(value_1.bitSize(), 9, "100.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("80000000", 16);
|
|
is(value_1.bitSize(), 32, "80000000.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffffffff", 16);
|
|
is(value_1.bitSize(), 32, "ffffffff.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("1 00000000", 16);
|
|
is(value_1.bitSize(), 33, "100000000.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("8000 00000000", 16);
|
|
is(value_1.bitSize(), 48, "8000 00000000.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff ffffffff", 16);
|
|
is(value_1.bitSize(), 48, "ffff ffffffff.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("10000 00000000", 16);
|
|
is(value_1.bitSize(), 49, "10000 00000000.bitSize()");
|
|
|
|
value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("6bcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f8d0b29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16", 16);
|
|
is(value_1.bitSize(), 1119, "6bcb09fac51945162a0775f42df6151169826efdc55dea5d17c22adb92e6b1a6ae8311545ad7e0f46f09a5b960855e673db1e803a5b94562161213204ca1f24792e81f06a4f8d0b29a492f106cc6d0b0ff4617b736dab590590a8cff9f807a15282544404e6b35841703c9fb00a9cad1d6878d601efc25368bdc51d5ff14a81610f4fe62cb2f452aee520a16.bitSize()");
|
|
|
|
//-------------------------------------------------------------------------
|
|
} catch (err) {
|
|
|
|
var s = "test suite failure!\n";
|
|
var o = {};
|
|
var k = null;
|
|
for (k in err) {
|
|
// ensure unique keys?!
|
|
if (!o[k]) {
|
|
s += k + ": " + err[k] + "\n";
|
|
o[k] = err[k];
|
|
}
|
|
}
|
|
ok ( false, s );
|
|
}
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|