@brix-crypto/crypto-js 0.0.1-security → 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @brix-crypto/crypto-js might be problematic. Click here for more details.
- package/.jshintrc +33 -0
- package/.travis.yml +15 -0
- package/CONTRIBUTING.md +28 -0
- package/LICENSE +24 -0
- package/README.md +273 -3
- package/aes.js +234 -0
- package/blowfish.js +471 -0
- package/bower.json +39 -0
- package/cipher-core.js +895 -0
- package/core.js +813 -0
- package/crypto-js.js +6657 -0
- package/docs/QuickStartGuide.wiki +470 -0
- package/enc-base64.js +136 -0
- package/enc-base64url.js +148 -0
- package/enc-hex.js +18 -0
- package/enc-latin1.js +18 -0
- package/enc-utf16.js +149 -0
- package/enc-utf8.js +18 -0
- package/evpkdf.js +134 -0
- package/format-hex.js +66 -0
- package/format-openssl.js +18 -0
- package/hmac-md5.js +18 -0
- package/hmac-ripemd160.js +18 -0
- package/hmac-sha1.js +18 -0
- package/hmac-sha224.js +18 -0
- package/hmac-sha256.js +18 -0
- package/hmac-sha3.js +18 -0
- package/hmac-sha384.js +18 -0
- package/hmac-sha512.js +18 -0
- package/hmac.js +143 -0
- package/index.js +18 -0
- package/lib-typedarrays.js +76 -0
- package/md5.js +268 -0
- package/mode-cfb.js +80 -0
- package/mode-ctr-gladman.js +116 -0
- package/mode-ctr.js +58 -0
- package/mode-ecb.js +40 -0
- package/mode-ofb.js +54 -0
- package/package.json +45 -3
- package/pad-ansix923.js +49 -0
- package/pad-iso10126.js +44 -0
- package/pad-iso97971.js +40 -0
- package/pad-nopadding.js +30 -0
- package/pad-pkcs7.js +18 -0
- package/pad-zeropadding.js +47 -0
- package/pbkdf2.js +145 -0
- package/rabbit-legacy.js +190 -0
- package/rabbit.js +192 -0
- package/rc4.js +139 -0
- package/ripemd160.js +267 -0
- package/sha1.js +150 -0
- package/sha224.js +80 -0
- package/sha256.js +199 -0
- package/sha3.js +326 -0
- package/sha384.js +83 -0
- package/sha512.js +326 -0
- package/test/aes-profile.js +31 -0
- package/test/aes-test.js +80 -0
- package/test/blowfish-test.js +33 -0
- package/test/cipher-test.js +522 -0
- package/test/config-test.js +51 -0
- package/test/des-profile.js +31 -0
- package/test/des-test.js +104 -0
- package/test/enc-base64-test.js +71 -0
- package/test/enc-hex-test.js +15 -0
- package/test/enc-latin1-test.js +15 -0
- package/test/enc-utf16-test.js +55 -0
- package/test/enc-utf8-test.js +39 -0
- package/test/evpkdf-profile.js +11 -0
- package/test/evpkdf-test.js +32 -0
- package/test/format-openssl-test.js +37 -0
- package/test/hmac-md5-profile.js +30 -0
- package/test/hmac-md5-test.js +59 -0
- package/test/hmac-sha224-test.js +59 -0
- package/test/hmac-sha256-test.js +59 -0
- package/test/hmac-sha384-test.js +59 -0
- package/test/hmac-sha512-test.js +59 -0
- package/test/kdf-openssl-test.js +15 -0
- package/test/lib-base-test.js +92 -0
- package/test/lib-cipherparams-test.js +59 -0
- package/test/lib-passwordbasedcipher-test.js +25 -0
- package/test/lib-serializablecipher-test.js +51 -0
- package/test/lib-typedarrays-test.js +57 -0
- package/test/lib-wordarray-test.js +85 -0
- package/test/md5-profile.js +24 -0
- package/test/md5-test.js +70 -0
- package/test/mode-cbc-test.js +49 -0
- package/test/mode-cfb-test.js +51 -0
- package/test/mode-ctr-test.js +55 -0
- package/test/mode-ecb-test.js +38 -0
- package/test/mode-ofb-test.js +50 -0
- package/test/pad-ansix923-test.js +28 -0
- package/test/pad-iso10126-test.js +50 -0
- package/test/pad-iso97971-test.js +35 -0
- package/test/pad-pkcs7-test.js +28 -0
- package/test/pad-zeropadding-test.js +28 -0
- package/test/pbkdf2-profile.js +11 -0
- package/test/pbkdf2-test.js +80 -0
- package/test/profile.html +281 -0
- package/test/rabbit-legacy-test.js +80 -0
- package/test/rabbit-profile.js +30 -0
- package/test/rabbit-test.js +84 -0
- package/test/rc4-profile.js +30 -0
- package/test/rc4-test.js +68 -0
- package/test/ripemd160-test.js +19 -0
- package/test/sha1-profile.js +24 -0
- package/test/sha1-test.js +70 -0
- package/test/sha224-test.js +19 -0
- package/test/sha256-profile.js +24 -0
- package/test/sha256-test.js +70 -0
- package/test/sha3-profile.js +24 -0
- package/test/sha3-test.js +69 -0
- package/test/sha384-test.js +54 -0
- package/test/sha512-profile.js +24 -0
- package/test/sha512-test.js +54 -0
- package/test/test-build.html +105 -0
- package/test/test.html +138 -0
- package/test/test1.html +63 -0
- package/test/tripledes-profile.js +31 -0
- package/test/tripledes-test.js +121 -0
- package/test/x64-word-test.js +99 -0
- package/test/x64-wordarray-test.js +38 -0
- package/tripledes.js +779 -0
- package/x64-core.js +304 -0
package/test/test1.html
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>CryptoJS Test Suite</title>
|
6
|
+
|
7
|
+
<!-- CryptoJS -->
|
8
|
+
<script src="../src/core.js"></script>
|
9
|
+
<script src="../src/lib-typedarrays.js"></script>
|
10
|
+
<script src="../src/x64-core.js"></script>
|
11
|
+
<script src="../src/enc-utf16.js"></script>
|
12
|
+
<script src="../src/enc-base64.js"></script>
|
13
|
+
<script src="../src/enc-base64url.js"></script>
|
14
|
+
<script src="../src/md5.js"></script>
|
15
|
+
<script src="../src/sha1.js"></script>
|
16
|
+
<script src="../src/sha256.js"></script>
|
17
|
+
<script src="../src/sha224.js"></script>
|
18
|
+
<script src="../src/sha512.js"></script>
|
19
|
+
<script src="../src/sha384.js"></script>
|
20
|
+
<script src="../src/sha3.js"></script>
|
21
|
+
<script src="../src/ripemd160.js"></script>
|
22
|
+
<script src="../src/hmac.js"></script>
|
23
|
+
<script src="../src/pbkdf2.js"></script>
|
24
|
+
<script src="../src/evpkdf.js"></script>
|
25
|
+
<script src="../src/cipher-core.js"></script>
|
26
|
+
<script src="../src/mode-cfb.js"></script>
|
27
|
+
<script src="../src/mode-ctr.js"></script>
|
28
|
+
<script src="../src/mode-ofb.js"></script>
|
29
|
+
<script src="../src/mode-ecb.js"></script>
|
30
|
+
<script src="../src/pad-ansix923.js"></script>
|
31
|
+
<script src="../src/pad-iso10126.js"></script>
|
32
|
+
<script src="../src/pad-zeropadding.js"></script>
|
33
|
+
<script src="../src/pad-iso97971.js"></script>
|
34
|
+
<script src="../src/pad-nopadding.js"></script>
|
35
|
+
<script src="../src/rc4.js"></script>
|
36
|
+
<script src="../src/rabbit.js"></script>
|
37
|
+
<script src="../src/rabbit-legacy.js"></script>
|
38
|
+
<script src="../src/aes.js"></script>
|
39
|
+
<script src="../src/tripledes.js"></script>
|
40
|
+
|
41
|
+
|
42
|
+
<!-- Test runner -->
|
43
|
+
<script>
|
44
|
+
var message = "152999073894506063@http://localhost:3000/protected/index@89effb07-588e-4bf4-ba16-c10b2a136ae9@1553508995647";
|
45
|
+
var key = "u-rXsMB_aegAnzC_CJt27plLGNqOfR2EHI5o2ro1NO";
|
46
|
+
var baseKey = CryptoJS.enc.Base64url.parse(key);
|
47
|
+
console.log("key:"+baseKey.toString());
|
48
|
+
var hash = CryptoJS.HmacSHA256(message, baseKey);
|
49
|
+
var hashInBase64 = CryptoJS.enc.Base64url.stringify(hash);
|
50
|
+
document.write(hashInBase64);
|
51
|
+
document.write("\n");
|
52
|
+
var shashInBase64 = CryptoJS.enc.Base64url.stringify(hash);
|
53
|
+
console.log("result:"+hash.toString())
|
54
|
+
document.write(shashInBase64);
|
55
|
+
console.log("done:"+shashInBase64);
|
56
|
+
var url = 'http://www.ctyun.cn/serviceValidate?service=http://localhost:3000/protected/index&ticket=89effb07-588e-4bf4-ba16-c10b2a136ae9×tamp=1553508995647&appId=152999073894506063&signature=evvc3Ix87nk-KkuIaQJrLP7Vu76dTsh-BwnC6AHXFfU'
|
57
|
+
</script>
|
58
|
+
|
59
|
+
|
60
|
+
</head>
|
61
|
+
<body>
|
62
|
+
</body>
|
63
|
+
</html>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
YUI.add('algo-tripledes-profile', function (Y) {
|
2
|
+
var C = CryptoJS;
|
3
|
+
|
4
|
+
Y.Profiler.add({
|
5
|
+
name: 'TripleDES',
|
6
|
+
|
7
|
+
setUp: function () {
|
8
|
+
this.data = {
|
9
|
+
key: C.enc.Hex.parse('0001020304050607'),
|
10
|
+
iv: C.enc.Hex.parse('08090a0b0c0d0e0f')
|
11
|
+
};
|
12
|
+
},
|
13
|
+
|
14
|
+
profileSinglePartMessage: function () {
|
15
|
+
var singlePartMessage = '';
|
16
|
+
for (var i = 0; i < 100; i++) {
|
17
|
+
singlePartMessage += '12345678901234567890123456789012345678901234567890';
|
18
|
+
}
|
19
|
+
|
20
|
+
C.algo.TripleDES.createEncryptor(this.data.key, { iv: this.data.iv }).finalize(singlePartMessage) + '';
|
21
|
+
},
|
22
|
+
|
23
|
+
profileMultiPartMessage: function () {
|
24
|
+
var des = C.algo.TripleDES.createEncryptor(this.data.key, { iv: this.data.iv });
|
25
|
+
for (var i = 0; i < 100; i++) {
|
26
|
+
des.process('12345678901234567890123456789012345678901234567890') + '';
|
27
|
+
}
|
28
|
+
des.finalize() + '';
|
29
|
+
}
|
30
|
+
});
|
31
|
+
}, '$Rev$');
|
@@ -0,0 +1,121 @@
|
|
1
|
+
YUI.add('algo-tripledes-test', function (Y) {
|
2
|
+
var C = CryptoJS;
|
3
|
+
|
4
|
+
Y.Test.Runner.add(new Y.Test.Case({
|
5
|
+
name: 'TripleDES',
|
6
|
+
|
7
|
+
testEncrypt1: function () {
|
8
|
+
Y.Assert.areEqual('95a8d72813daa94d', C.TripleDES.encrypt(C.enc.Hex.parse('0000000000000000'), C.enc.Hex.parse('800101010101010180010101010101018001010101010101'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).ciphertext.toString());
|
9
|
+
},
|
10
|
+
|
11
|
+
testEncrypt2: function () {
|
12
|
+
Y.Assert.areEqual('869efd7f9f265a09', C.TripleDES.encrypt(C.enc.Hex.parse('0000000000000000'), C.enc.Hex.parse('010101010101010201010101010101020101010101010102'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).ciphertext.toString());
|
13
|
+
},
|
14
|
+
|
15
|
+
testEncrypt3: function () {
|
16
|
+
Y.Assert.areEqual('95f8a5e5dd31d900', C.TripleDES.encrypt(C.enc.Hex.parse('8000000000000000'), C.enc.Hex.parse('010101010101010101010101010101010101010101010101'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).ciphertext.toString());
|
17
|
+
},
|
18
|
+
|
19
|
+
testEncrypt4: function () {
|
20
|
+
Y.Assert.areEqual('166b40b44aba4bd6', C.TripleDES.encrypt(C.enc.Hex.parse('0000000000000001'), C.enc.Hex.parse('010101010101010101010101010101010101010101010101'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).ciphertext.toString());
|
21
|
+
},
|
22
|
+
|
23
|
+
testDecrypt1: function () {
|
24
|
+
Y.Assert.areEqual('0000000000000000', C.TripleDES.decrypt(C.lib.CipherParams.create({ ciphertext: C.enc.Hex.parse('95a8d72813daa94d') }), C.enc.Hex.parse('800101010101010180010101010101018001010101010101'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString());
|
25
|
+
},
|
26
|
+
|
27
|
+
testDecrypt2: function () {
|
28
|
+
Y.Assert.areEqual('0000000000000000', C.TripleDES.decrypt(C.lib.CipherParams.create({ ciphertext: C.enc.Hex.parse('869efd7f9f265a09') }), C.enc.Hex.parse('010101010101010201010101010101020101010101010102'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString());
|
29
|
+
},
|
30
|
+
|
31
|
+
testDecrypt3: function () {
|
32
|
+
Y.Assert.areEqual('8000000000000000', C.TripleDES.decrypt(C.lib.CipherParams.create({ ciphertext: C.enc.Hex.parse('95f8a5e5dd31d900') }), C.enc.Hex.parse('010101010101010101010101010101010101010101010101'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString());
|
33
|
+
},
|
34
|
+
|
35
|
+
testDecrypt4: function () {
|
36
|
+
Y.Assert.areEqual('0000000000000001', C.TripleDES.decrypt(C.lib.CipherParams.create({ ciphertext: C.enc.Hex.parse('166b40b44aba4bd6') }), C.enc.Hex.parse('010101010101010101010101010101010101010101010101'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString());
|
37
|
+
},
|
38
|
+
|
39
|
+
testMultiPart: function () {
|
40
|
+
var des = C.algo.TripleDES.createEncryptor(C.enc.Hex.parse('000102030405060708090a0b0c0d0e0f1011121314151617'), { mode: C.mode.ECB, padding: C.pad.NoPadding });
|
41
|
+
var ciphertext1 = des.process(C.enc.Hex.parse('001122334455'));
|
42
|
+
var ciphertext2 = des.process(C.enc.Hex.parse('66778899aa'));
|
43
|
+
var ciphertext3 = des.process(C.enc.Hex.parse('bbccddeeff'));
|
44
|
+
var ciphertext4 = des.finalize();
|
45
|
+
|
46
|
+
Y.Assert.areEqual(C.TripleDES.encrypt(C.enc.Hex.parse('00112233445566778899aabbccddeeff'), C.enc.Hex.parse('000102030405060708090a0b0c0d0e0f1011121314151617'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).ciphertext.toString(), ciphertext1.concat(ciphertext2).concat(ciphertext3).concat(ciphertext4).toString());
|
47
|
+
},
|
48
|
+
|
49
|
+
testInputIntegrity: function () {
|
50
|
+
var message = C.enc.Hex.parse('00112233445566778899aabbccddeeff');
|
51
|
+
var key = C.enc.Hex.parse('000102030405060708090a0b0c0d0e0f1011121314151617');
|
52
|
+
var iv = C.enc.Hex.parse('08090a0b0c0d0e0f');
|
53
|
+
|
54
|
+
var expectedMessage = message.toString();
|
55
|
+
var expectedKey = key.toString();
|
56
|
+
var expectedIv = iv.toString();
|
57
|
+
|
58
|
+
C.TripleDES.encrypt(message, key, { iv: iv });
|
59
|
+
|
60
|
+
Y.Assert.areEqual(expectedMessage, message.toString());
|
61
|
+
Y.Assert.areEqual(expectedKey, key.toString());
|
62
|
+
Y.Assert.areEqual(expectedIv, iv.toString());
|
63
|
+
},
|
64
|
+
|
65
|
+
test64BitKey: function() {
|
66
|
+
var message = C.enc.Hex.parse('00112233445566778899aabbccddeeff');
|
67
|
+
var key = C.enc.Hex.parse('0011223344556677');
|
68
|
+
var extendedKey = C.enc.Hex.parse('001122334455667700112233445566770011223344556677')
|
69
|
+
|
70
|
+
var output1 = C.TripleDES.encrypt(message, key, { mode: C.mode.ECB }).toString();
|
71
|
+
var output2 = C.TripleDES.encrypt(message, extendedKey, { mode: C.mode.ECB }).toString();
|
72
|
+
|
73
|
+
Y.Assert.areEqual(output1, output2);
|
74
|
+
},
|
75
|
+
|
76
|
+
test128BitKey: function() {
|
77
|
+
var message = C.enc.Hex.parse('00112233445566778899aabbccddeeff');
|
78
|
+
var key = C.enc.Hex.parse('00112233445566778899aabbccddeeff');
|
79
|
+
var extendedKey = C.enc.Hex.parse('00112233445566778899aabbccddeeff0011223344556677')
|
80
|
+
|
81
|
+
var output1 = C.TripleDES.encrypt(message, key, { mode: C.mode.ECB }).toString();
|
82
|
+
var output2 = C.TripleDES.encrypt(message, extendedKey, { mode: C.mode.ECB }).toString();
|
83
|
+
|
84
|
+
Y.Assert.areEqual(output1, output2);
|
85
|
+
},
|
86
|
+
|
87
|
+
test256BitKey: function() {
|
88
|
+
var message = C.enc.Hex.parse('00112233445566778899aabbccddeeff');
|
89
|
+
var key = C.enc.Hex.parse('00112233445566778899aabbccddeeff0112233445566778899aabbccddeeff0');
|
90
|
+
var truncatedKey = C.enc.Hex.parse('00112233445566778899aabbccddeeff0112233445566778')
|
91
|
+
|
92
|
+
var output1 = C.TripleDES.encrypt(message, key, { mode: C.mode.ECB }).toString();
|
93
|
+
var output2 = C.TripleDES.encrypt(message, truncatedKey, { mode: C.mode.ECB }).toString();
|
94
|
+
|
95
|
+
Y.Assert.areEqual(output1, output2);
|
96
|
+
},
|
97
|
+
|
98
|
+
testHelper: function () {
|
99
|
+
// Save original random method
|
100
|
+
var random = C.lib.WordArray.random;
|
101
|
+
|
102
|
+
// Replace random method with one that returns a predictable value
|
103
|
+
C.lib.WordArray.random = function (nBytes) {
|
104
|
+
var words = [];
|
105
|
+
for (var i = 0; i < nBytes; i += 4) {
|
106
|
+
words.push([0x11223344]);
|
107
|
+
}
|
108
|
+
|
109
|
+
return C.lib.WordArray.create(words, nBytes);
|
110
|
+
};
|
111
|
+
|
112
|
+
// Test
|
113
|
+
Y.Assert.areEqual(C.algo.TripleDES.createEncryptor(C.SHA256('Jefe'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).finalize('Hi There').toString(), C.TripleDES.encrypt('Hi There', C.SHA256('Jefe'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).ciphertext.toString());
|
114
|
+
Y.Assert.areEqual(C.lib.SerializableCipher.encrypt(C.algo.TripleDES, 'Hi There', C.SHA256('Jefe'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString(), C.TripleDES.encrypt('Hi There', C.SHA256('Jefe'), { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString());
|
115
|
+
Y.Assert.areEqual(C.lib.PasswordBasedCipher.encrypt(C.algo.TripleDES, 'Hi There', 'Jefe', { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString(), C.TripleDES.encrypt('Hi There', 'Jefe', { mode: C.mode.ECB, padding: C.pad.NoPadding }).toString());
|
116
|
+
|
117
|
+
// Restore random method
|
118
|
+
C.lib.WordArray.random = random;
|
119
|
+
}
|
120
|
+
}));
|
121
|
+
}, '$Rev$');
|
@@ -0,0 +1,99 @@
|
|
1
|
+
YUI.add('x64-word-test', function (Y) {
|
2
|
+
var C = CryptoJS;
|
3
|
+
|
4
|
+
Y.Test.Runner.add(new Y.Test.Case({
|
5
|
+
name: 'X64Word',
|
6
|
+
|
7
|
+
testInit: function () {
|
8
|
+
var word = C.x64.Word.create(0x00010203, 0x04050607);
|
9
|
+
|
10
|
+
Y.Assert.areEqual(0x00010203, word.high, 'word.high');
|
11
|
+
Y.Assert.areEqual(0x04050607, word.low, 'word.low');
|
12
|
+
}
|
13
|
+
|
14
|
+
// testNot: function () {
|
15
|
+
// var word = C.x64.Word.create(0x00010203, 0x04050607).not();
|
16
|
+
|
17
|
+
// Y.Assert.areEqual(~0x00010203, word.high, 'word.high');
|
18
|
+
// Y.Assert.areEqual(~0x04050607, word.low, 'word.low');
|
19
|
+
// },
|
20
|
+
|
21
|
+
// testAnd: function () {
|
22
|
+
// var word1 = C.x64.Word.create(0x00010203, 0x04050607);
|
23
|
+
// var word2 = C.x64.Word.create(0x18191a1b, 0x1c1d1e1f);
|
24
|
+
// var anded = word1.and(word2);
|
25
|
+
|
26
|
+
// Y.Assert.areEqual(0x00010203 & 0x18191a1b, anded.high, 'word.high');
|
27
|
+
// Y.Assert.areEqual(0x04050607 & 0x1c1d1e1f, anded.low, 'word.low');
|
28
|
+
// },
|
29
|
+
|
30
|
+
// testOr: function () {
|
31
|
+
// var word1 = C.x64.Word.create(0x00010203, 0x04050607);
|
32
|
+
// var word2 = C.x64.Word.create(0x18191a1b, 0x1c1d1e1f);
|
33
|
+
// var ored = word1.or(word2);
|
34
|
+
|
35
|
+
// Y.Assert.areEqual(0x00010203 | 0x18191a1b, ored.high, 'word.high');
|
36
|
+
// Y.Assert.areEqual(0x04050607 | 0x1c1d1e1f, ored.low, 'word.low');
|
37
|
+
// },
|
38
|
+
|
39
|
+
// testXor: function () {
|
40
|
+
// var word1 = C.x64.Word.create(0x00010203, 0x04050607);
|
41
|
+
// var word2 = C.x64.Word.create(0x18191a1b, 0x1c1d1e1f);
|
42
|
+
// var xored = word1.xor(word2);
|
43
|
+
|
44
|
+
// Y.Assert.areEqual(0x00010203 ^ 0x18191a1b, xored.high, 'word.high');
|
45
|
+
// Y.Assert.areEqual(0x04050607 ^ 0x1c1d1e1f, xored.low, 'word.low');
|
46
|
+
// },
|
47
|
+
|
48
|
+
// testShiftL25: function () {
|
49
|
+
// var word = C.x64.Word.create(0x00010203, 0x04050607).shiftL(25);
|
50
|
+
|
51
|
+
// Y.Assert.areEqual(0x06080a0c, word.high, 'word.high');
|
52
|
+
// Y.Assert.areEqual(0x0e000000, word.low, 'word.low');
|
53
|
+
// },
|
54
|
+
|
55
|
+
// testShiftL32: function () {
|
56
|
+
// var word = C.x64.Word.create(0x00010203, 0x04050607).shiftL(32);
|
57
|
+
|
58
|
+
// Y.Assert.areEqual(0x04050607, word.high, 'word.high');
|
59
|
+
// Y.Assert.areEqual(0x00000000, word.low, 'word.low');
|
60
|
+
// },
|
61
|
+
|
62
|
+
// testShiftR7: function () {
|
63
|
+
// var word = C.x64.Word.create(0x00010203, 0x04050607).shiftR(7);
|
64
|
+
|
65
|
+
// Y.Assert.areEqual(0x00000204, word.high, 'word.high');
|
66
|
+
// Y.Assert.areEqual(0x06080A0C, word.low, 'word.low');
|
67
|
+
// },
|
68
|
+
|
69
|
+
// testShiftR32: function () {
|
70
|
+
// var word = C.x64.Word.create(0x00010203, 0x04050607).shiftR(32);
|
71
|
+
|
72
|
+
// Y.Assert.areEqual(0x00000000, word.high, 'word.high');
|
73
|
+
// Y.Assert.areEqual(0x00010203, word.low, 'word.low');
|
74
|
+
// },
|
75
|
+
|
76
|
+
// testRotL: function () {
|
77
|
+
// var word = C.x64.Word.create(0x00010203, 0x04050607).rotL(25);
|
78
|
+
|
79
|
+
// Y.Assert.areEqual(0x06080a0c, word.high, 'word.high');
|
80
|
+
// Y.Assert.areEqual(0x0e000204, word.low, 'word.low');
|
81
|
+
// },
|
82
|
+
|
83
|
+
// testRotR: function () {
|
84
|
+
// var word = C.x64.Word.create(0x00010203, 0x04050607).rotR(7);
|
85
|
+
|
86
|
+
// Y.Assert.areEqual(0x0e000204, word.high, 'word.high');
|
87
|
+
// Y.Assert.areEqual(0x06080a0c, word.low, 'word.low');
|
88
|
+
// },
|
89
|
+
|
90
|
+
// testAdd: function () {
|
91
|
+
// var word1 = C.x64.Word.create(0x00010203, 0x04050607);
|
92
|
+
// var word2 = C.x64.Word.create(0x18191a1b, 0x1c1d1e1f);
|
93
|
+
// var added = word1.add(word2);
|
94
|
+
|
95
|
+
// Y.Assert.areEqual(0x181a1c1e, added.high, 'word.high');
|
96
|
+
// Y.Assert.areEqual(0x20222426, added.low, 'word.low');
|
97
|
+
// }
|
98
|
+
}));
|
99
|
+
}, '$Rev$');
|
@@ -0,0 +1,38 @@
|
|
1
|
+
YUI.add('x64-wordarray-test', function (Y) {
|
2
|
+
var C = CryptoJS;
|
3
|
+
|
4
|
+
Y.Test.Runner.add(new Y.Test.Case({
|
5
|
+
name: 'X64WordArray',
|
6
|
+
|
7
|
+
testInit0: function () {
|
8
|
+
Y.Assert.areEqual('', C.x64.WordArray.create().toX32().toString());
|
9
|
+
},
|
10
|
+
|
11
|
+
testInit1: function () {
|
12
|
+
var wordArray = C.x64.WordArray.create([
|
13
|
+
C.x64.Word.create(0x00010203, 0x04050607),
|
14
|
+
C.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
|
15
|
+
]);
|
16
|
+
|
17
|
+
Y.Assert.areEqual('000102030405060718191a1b1c1d1e1f', wordArray.toX32().toString());
|
18
|
+
},
|
19
|
+
|
20
|
+
testInit2: function () {
|
21
|
+
var wordArray = C.x64.WordArray.create([
|
22
|
+
C.x64.Word.create(0x00010203, 0x04050607),
|
23
|
+
C.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
|
24
|
+
], 10);
|
25
|
+
|
26
|
+
Y.Assert.areEqual('00010203040506071819', wordArray.toX32().toString());
|
27
|
+
},
|
28
|
+
|
29
|
+
testToX32: function () {
|
30
|
+
var wordArray = C.x64.WordArray.create([
|
31
|
+
C.x64.Word.create(0x00010203, 0x04050607),
|
32
|
+
C.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
|
33
|
+
], 10);
|
34
|
+
|
35
|
+
Y.Assert.areEqual('00010203040506071819', wordArray.toX32().toString());
|
36
|
+
}
|
37
|
+
}));
|
38
|
+
}, '$Rev$');
|