@brix-crypto/crypto-js 0.0.1-security → 4.2.5

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.

Files changed (124) hide show
  1. package/.jshintrc +33 -0
  2. package/.travis.yml +15 -0
  3. package/CONTRIBUTING.md +28 -0
  4. package/LICENSE +24 -0
  5. package/README.md +273 -3
  6. package/aes.js +234 -0
  7. package/blowfish.js +471 -0
  8. package/bower.json +39 -0
  9. package/cipher-core.js +895 -0
  10. package/core.js +819 -0
  11. package/crypto-js.js +6657 -0
  12. package/docs/QuickStartGuide.wiki +470 -0
  13. package/enc-base64.js +140 -0
  14. package/enc-base64url.js +148 -0
  15. package/enc-hex.js +18 -0
  16. package/enc-latin1.js +18 -0
  17. package/enc-utf16.js +149 -0
  18. package/enc-utf8.js +18 -0
  19. package/evpkdf.js +134 -0
  20. package/format-hex.js +66 -0
  21. package/format-openssl.js +18 -0
  22. package/hmac-md5.js +18 -0
  23. package/hmac-ripemd160.js +18 -0
  24. package/hmac-sha1.js +18 -0
  25. package/hmac-sha224.js +18 -0
  26. package/hmac-sha256.js +18 -0
  27. package/hmac-sha3.js +18 -0
  28. package/hmac-sha384.js +18 -0
  29. package/hmac-sha512.js +18 -0
  30. package/hmac.js +143 -0
  31. package/index.js +18 -0
  32. package/lib-typedarrays.js +76 -0
  33. package/md5.js +268 -0
  34. package/mode-cfb.js +80 -0
  35. package/mode-ctr-gladman.js +116 -0
  36. package/mode-ctr.js +58 -0
  37. package/mode-ecb.js +40 -0
  38. package/mode-ofb.js +54 -0
  39. package/package.json +45 -3
  40. package/pad-ansix923.js +49 -0
  41. package/pad-iso10126.js +44 -0
  42. package/pad-iso97971.js +40 -0
  43. package/pad-nopadding.js +30 -0
  44. package/pad-pkcs7.js +18 -0
  45. package/pad-zeropadding.js +47 -0
  46. package/pbkdf2.js +145 -0
  47. package/rabbit-legacy.js +190 -0
  48. package/rabbit.js +192 -0
  49. package/rc4.js +139 -0
  50. package/ripemd160.js +267 -0
  51. package/sha1.js +150 -0
  52. package/sha224.js +80 -0
  53. package/sha256.js +199 -0
  54. package/sha3.js +326 -0
  55. package/sha384.js +83 -0
  56. package/sha512.js +326 -0
  57. package/test/aes-profile.js +31 -0
  58. package/test/aes-test.js +80 -0
  59. package/test/blowfish-test.js +33 -0
  60. package/test/cipher-test.js +522 -0
  61. package/test/config-test.js +51 -0
  62. package/test/des-profile.js +31 -0
  63. package/test/des-test.js +104 -0
  64. package/test/enc-base64-test.js +71 -0
  65. package/test/enc-hex-test.js +15 -0
  66. package/test/enc-latin1-test.js +15 -0
  67. package/test/enc-utf16-test.js +55 -0
  68. package/test/enc-utf8-test.js +39 -0
  69. package/test/evpkdf-profile.js +11 -0
  70. package/test/evpkdf-test.js +32 -0
  71. package/test/format-openssl-test.js +37 -0
  72. package/test/hmac-md5-profile.js +30 -0
  73. package/test/hmac-md5-test.js +59 -0
  74. package/test/hmac-sha224-test.js +59 -0
  75. package/test/hmac-sha256-test.js +59 -0
  76. package/test/hmac-sha384-test.js +59 -0
  77. package/test/hmac-sha512-test.js +59 -0
  78. package/test/kdf-openssl-test.js +15 -0
  79. package/test/lib-base-test.js +92 -0
  80. package/test/lib-cipherparams-test.js +59 -0
  81. package/test/lib-passwordbasedcipher-test.js +25 -0
  82. package/test/lib-serializablecipher-test.js +51 -0
  83. package/test/lib-typedarrays-test.js +57 -0
  84. package/test/lib-wordarray-test.js +85 -0
  85. package/test/md5-profile.js +24 -0
  86. package/test/md5-test.js +70 -0
  87. package/test/mode-cbc-test.js +49 -0
  88. package/test/mode-cfb-test.js +51 -0
  89. package/test/mode-ctr-test.js +55 -0
  90. package/test/mode-ecb-test.js +38 -0
  91. package/test/mode-ofb-test.js +50 -0
  92. package/test/pad-ansix923-test.js +28 -0
  93. package/test/pad-iso10126-test.js +50 -0
  94. package/test/pad-iso97971-test.js +35 -0
  95. package/test/pad-pkcs7-test.js +28 -0
  96. package/test/pad-zeropadding-test.js +28 -0
  97. package/test/pbkdf2-profile.js +11 -0
  98. package/test/pbkdf2-test.js +80 -0
  99. package/test/profile.html +281 -0
  100. package/test/rabbit-legacy-test.js +80 -0
  101. package/test/rabbit-profile.js +30 -0
  102. package/test/rabbit-test.js +84 -0
  103. package/test/rc4-profile.js +30 -0
  104. package/test/rc4-test.js +68 -0
  105. package/test/ripemd160-test.js +19 -0
  106. package/test/sha1-profile.js +24 -0
  107. package/test/sha1-test.js +70 -0
  108. package/test/sha224-test.js +19 -0
  109. package/test/sha256-profile.js +24 -0
  110. package/test/sha256-test.js +70 -0
  111. package/test/sha3-profile.js +24 -0
  112. package/test/sha3-test.js +69 -0
  113. package/test/sha384-test.js +54 -0
  114. package/test/sha512-profile.js +24 -0
  115. package/test/sha512-test.js +54 -0
  116. package/test/test-build.html +105 -0
  117. package/test/test.html +138 -0
  118. package/test/test1.html +63 -0
  119. package/test/tripledes-profile.js +31 -0
  120. package/test/tripledes-test.js +121 -0
  121. package/test/x64-word-test.js +99 -0
  122. package/test/x64-wordarray-test.js +38 -0
  123. package/tripledes.js +779 -0
  124. package/x64-core.js +304 -0
@@ -0,0 +1,55 @@
1
+ YUI.add('mode-ctr-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'CTR',
6
+
7
+ setUp: function () {
8
+ this.data = {};
9
+
10
+ this.data.message = C.lib.WordArray.create([
11
+ 0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f,
12
+ 0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f
13
+ ]);
14
+ this.data.key = C.lib.WordArray.create([0x20212223, 0x24252627, 0x28292a2b, 0x2c2d2e2f]);
15
+ this.data.iv = C.lib.WordArray.create([0x30313233, 0x34353637, 0x38393a3b, 0x3c3d3e3f]);
16
+ },
17
+
18
+ testEncryptor: function () {
19
+ // Compute expected
20
+ var expected = this.data.message.clone();
21
+ var aes = C.algo.AES.createEncryptor(this.data.key);
22
+
23
+ // Counter initialized with IV
24
+ var counter = this.data.iv.words.slice(0);
25
+
26
+ // First block XORed with encrypted counter
27
+ var keystream = counter.slice(0);
28
+ aes.encryptBlock(keystream, 0);
29
+ for (var i = 0; i < 4; i++) {
30
+ expected.words[i] ^= keystream[i];
31
+ }
32
+
33
+ // Subsequent blocks XORed with encrypted incremented counter
34
+ counter[3]++;
35
+ var keystream = counter.slice(0);
36
+ aes.encryptBlock(keystream, 0);
37
+ for (var i = 4; i < 8; i++) {
38
+ expected.words[i] ^= keystream[i % 4];
39
+ }
40
+
41
+ // Compute actual
42
+ var actual = C.AES.encrypt(this.data.message, this.data.key, { iv: this.data.iv, mode: C.mode.CTR, padding: C.pad.NoPadding }).ciphertext;
43
+
44
+ // Test
45
+ Y.Assert.areEqual(expected.toString(), actual.toString());
46
+ },
47
+
48
+ testDecryptor: function () {
49
+ var encrypted = C.AES.encrypt(this.data.message, this.data.key, { iv: this.data.iv, mode: C.mode.CTR, padding: C.pad.NoPadding });
50
+ var decrypted = C.AES.decrypt(encrypted, this.data.key, { iv: this.data.iv, mode: C.mode.CTR, padding: C.pad.NoPadding });
51
+
52
+ Y.Assert.areEqual(this.data.message.toString(), decrypted.toString());
53
+ }
54
+ }));
55
+ }, '$Rev$');
@@ -0,0 +1,38 @@
1
+ YUI.add('mode-ecb-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'ECB',
6
+
7
+ setUp: function () {
8
+ this.data = {};
9
+
10
+ this.data.message = C.lib.WordArray.create([
11
+ 0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f,
12
+ 0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f
13
+ ]);
14
+ this.data.key = C.lib.WordArray.create([0x20212223, 0x24252627, 0x28292a2b, 0x2c2d2e2f]);
15
+ },
16
+
17
+ testEncryptor: function () {
18
+ // Compute expected
19
+ var expected = this.data.message.clone();
20
+ var aes = C.algo.AES.createEncryptor(this.data.key);
21
+ aes.encryptBlock(expected.words, 0);
22
+ aes.encryptBlock(expected.words, 4);
23
+
24
+ // Compute actual
25
+ var actual = C.AES.encrypt(this.data.message, this.data.key, { mode: C.mode.ECB, padding: C.pad.NoPadding }).ciphertext;
26
+
27
+ // Test
28
+ Y.Assert.areEqual(expected.toString(), actual.toString());
29
+ },
30
+
31
+ testDecryptor: function () {
32
+ var encrypted = C.AES.encrypt(this.data.message, this.data.key, { mode: C.mode.ECB, padding: C.pad.NoPadding });
33
+ var decrypted = C.AES.decrypt(encrypted, this.data.key, { mode: C.mode.ECB, padding: C.pad.NoPadding });
34
+
35
+ Y.Assert.areEqual(this.data.message.toString(), decrypted.toString());
36
+ }
37
+ }));
38
+ }, '$Rev$');
@@ -0,0 +1,50 @@
1
+ YUI.add('mode-ofb-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'OFB',
6
+
7
+ setUp: function () {
8
+ this.data = {};
9
+
10
+ this.data.message = C.lib.WordArray.create([
11
+ 0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f,
12
+ 0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f
13
+ ]);
14
+ this.data.key = C.lib.WordArray.create([0x20212223, 0x24252627, 0x28292a2b, 0x2c2d2e2f]);
15
+ this.data.iv = C.lib.WordArray.create([0x30313233, 0x34353637, 0x38393a3b, 0x3c3d3e3f]);
16
+ },
17
+
18
+ testEncryptor: function () {
19
+ // Compute expected
20
+ var expected = this.data.message.clone();
21
+ var aes = C.algo.AES.createEncryptor(this.data.key);
22
+
23
+ // First block XORed with encrypted IV
24
+ var keystream = this.data.iv.words.slice(0);
25
+ aes.encryptBlock(keystream, 0);
26
+ for (var i = 0; i < 4; i++) {
27
+ expected.words[i] ^= keystream[i];
28
+ }
29
+
30
+ // Subsequent blocks XORed with encrypted previous keystream
31
+ aes.encryptBlock(keystream, 0);
32
+ for (var i = 4; i < 8; i++) {
33
+ expected.words[i] ^= keystream[i % 4];
34
+ }
35
+
36
+ // Compute actual
37
+ var actual = C.AES.encrypt(this.data.message, this.data.key, { iv: this.data.iv, mode: C.mode.OFB, padding: C.pad.NoPadding }).ciphertext;
38
+
39
+ // Test
40
+ Y.Assert.areEqual(expected.toString(), actual.toString());
41
+ },
42
+
43
+ testDecryptor: function () {
44
+ var encrypted = C.AES.encrypt(this.data.message, this.data.key, { iv: this.data.iv, mode: C.mode.OFB, padding: C.pad.NoPadding });
45
+ var decrypted = C.AES.decrypt(encrypted, this.data.key, { iv: this.data.iv, mode: C.mode.OFB, padding: C.pad.NoPadding });
46
+
47
+ Y.Assert.areEqual(this.data.message.toString(), decrypted.toString());
48
+ }
49
+ }));
50
+ }, '$Rev$');
@@ -0,0 +1,28 @@
1
+ YUI.add('pad-ansix923-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'AnsiX923',
6
+
7
+ testPad: function () {
8
+ var data = C.lib.WordArray.create([0xdddddd00], 3);
9
+ C.pad.AnsiX923.pad(data, 2);
10
+
11
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00, 0x00000005]).toString(), data.toString());
12
+ },
13
+
14
+ testPadClamp: function () {
15
+ var data = C.lib.WordArray.create([0xdddddddd, 0xdddddddd], 3);
16
+ C.pad.AnsiX923.pad(data, 2);
17
+
18
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00, 0x00000005]).toString(), data.toString());
19
+ },
20
+
21
+ testUnpad: function () {
22
+ var data = C.lib.WordArray.create([0xdddddd00, 0x00000005]);
23
+ C.pad.AnsiX923.unpad(data);
24
+
25
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00], 3).toString(), data.toString());
26
+ }
27
+ }));
28
+ }, '$Rev$');
@@ -0,0 +1,50 @@
1
+ YUI.add('pad-iso10126-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'Iso10126',
6
+
7
+ setUp: function () {
8
+ this.data = {};
9
+
10
+ // Save original random method
11
+ this.data.random = C.lib.WordArray.random;
12
+
13
+ // Replace random method with one that returns a predictable value
14
+ C.lib.WordArray.random = function (nBytes) {
15
+ var words = [];
16
+ for (var i = 0; i < nBytes; i += 4) {
17
+ words.push([0x11223344]);
18
+ }
19
+
20
+ return C.lib.WordArray.create(words, nBytes);
21
+ };
22
+ },
23
+
24
+ tearDown: function () {
25
+ // Restore random method
26
+ C.lib.WordArray.random = this.data.random;
27
+ },
28
+
29
+ testPad: function () {
30
+ var data = C.lib.WordArray.create([0xdddddd00], 3);
31
+ C.pad.Iso10126.pad(data, 2);
32
+
33
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd11, 0x22334405]).toString(), data.toString());
34
+ },
35
+
36
+ testPadClamp: function () {
37
+ var data = C.lib.WordArray.create([0xdddddddd, 0xdddddddd], 3);
38
+ C.pad.Iso10126.pad(data, 2);
39
+
40
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd11, 0x22334405]).toString(), data.toString());
41
+ },
42
+
43
+ testUnpad: function () {
44
+ var data = C.lib.WordArray.create([0xdddddd11, 0x22334405]);
45
+ C.pad.Iso10126.unpad(data);
46
+
47
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00], 3).toString(), data.toString());
48
+ }
49
+ }));
50
+ }, '$Rev$');
@@ -0,0 +1,35 @@
1
+ YUI.add('pad-iso97971-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'Iso97971',
6
+
7
+ testPad1: function () {
8
+ var data = C.lib.WordArray.create([0xdddddd00], 3);
9
+ C.pad.Iso97971.pad(data, 1);
10
+
11
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd80]).toString(), data.toString());
12
+ },
13
+
14
+ testPad2: function () {
15
+ var data = C.lib.WordArray.create([0xdddddd00], 3);
16
+ C.pad.Iso97971.pad(data, 2);
17
+
18
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd80, 0x00000000]).toString(), data.toString());
19
+ },
20
+
21
+ testPadClamp: function () {
22
+ var data = C.lib.WordArray.create([0xdddddddd, 0xdddddddd], 3);
23
+ C.pad.Iso97971.pad(data, 2);
24
+
25
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd80, 0x00000000]).toString(), data.toString());
26
+ },
27
+
28
+ testUnpad: function () {
29
+ var data = C.lib.WordArray.create([0xdddddd80, 0x00000000]);
30
+ C.pad.Iso97971.unpad(data);
31
+
32
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00], 3).toString(), data.toString());
33
+ }
34
+ }));
35
+ }, '$Rev$');
@@ -0,0 +1,28 @@
1
+ YUI.add('pad-pkcs7-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'Pkcs7',
6
+
7
+ testPad: function () {
8
+ var data = C.lib.WordArray.create([0xdddddd00], 3);
9
+ C.pad.Pkcs7.pad(data, 2);
10
+
11
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd05, 0x05050505]).toString(), data.toString());
12
+ },
13
+
14
+ testPadClamp: function () {
15
+ var data = C.lib.WordArray.create([0xdddddddd, 0xdddddddd], 3);
16
+ C.pad.Pkcs7.pad(data, 2);
17
+
18
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd05, 0x05050505]).toString(), data.toString());
19
+ },
20
+
21
+ testUnpad: function () {
22
+ var data = C.lib.WordArray.create([0xdddddd05, 0x05050505]);
23
+ C.pad.Pkcs7.unpad(data);
24
+
25
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00], 3).toString(), data.toString());
26
+ }
27
+ }));
28
+ }, '$Rev$');
@@ -0,0 +1,28 @@
1
+ YUI.add('pad-zeropadding-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'ZeroPadding',
6
+
7
+ testPad: function () {
8
+ var data = C.lib.WordArray.create([0xdddddd00], 3);
9
+ C.pad.ZeroPadding.pad(data, 2);
10
+
11
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00, 0x00000000]).toString(), data.toString());
12
+ },
13
+
14
+ testPadClamp: function () {
15
+ var data = C.lib.WordArray.create([0xdddddddd, 0xdddddddd], 3);
16
+ C.pad.ZeroPadding.pad(data, 2);
17
+
18
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00, 0x00000000]).toString(), data.toString());
19
+ },
20
+
21
+ testUnpad: function () {
22
+ var data = C.lib.WordArray.create([0xdddddd00, 0x00000000]);
23
+ C.pad.ZeroPadding.unpad(data);
24
+
25
+ Y.Assert.areEqual(C.lib.WordArray.create([0xdddddd00], 3).toString(), data.toString());
26
+ }
27
+ }));
28
+ }, '$Rev$');
@@ -0,0 +1,11 @@
1
+ YUI.add('algo-pbkdf2-profile', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Profiler.add({
5
+ name: 'PBKDF2',
6
+
7
+ profileKeySize256Iterations20: function () {
8
+ C.algo.PBKDF2.create({ keySize: 256/32, iterations: 20 }).compute('password', 'ATHENA.MIT.EDUraeburn');
9
+ }
10
+ });
11
+ }, '$Rev$');
@@ -0,0 +1,80 @@
1
+ YUI.add('algo-pbkdf2-test', function (Y) {
2
+ var C = CryptoJS;
3
+
4
+ Y.Test.Runner.add(new Y.Test.Case({
5
+ name: 'PBKDF2',
6
+
7
+ testKeySize128: function () {
8
+ Y.Assert.areEqual('62929ab995a1111c75c37bc562261ea3', C.PBKDF2('password', 'ATHENA.MIT.EDUraeburn', { keySize: 128/32 }).toString());
9
+ },
10
+
11
+ testKeySize256: function () {
12
+ Y.Assert.areEqual('62929ab995a1111c75c37bc562261ea3fb3cdc7e725c4ca87c03cec5bb7663e1', C.PBKDF2('password', 'ATHENA.MIT.EDUraeburn', { keySize: 256/32 }).toString());
13
+ },
14
+
15
+ testKeySize128Iterations2: function () {
16
+ Y.Assert.areEqual('262fb72ea65b44ab5ceba7f8c8bfa781', C.PBKDF2('password', 'ATHENA.MIT.EDUraeburn', { keySize: 128/32, iterations: 2 }).toString());
17
+ },
18
+
19
+ testKeySize256Iterations2: function () {
20
+ Y.Assert.areEqual('262fb72ea65b44ab5ceba7f8c8bfa7815ff9939204eb7357a59a75877d745777', C.PBKDF2('password', 'ATHENA.MIT.EDUraeburn', { keySize: 256/32, iterations: 2 }).toString());
21
+ },
22
+
23
+ testKeySize128Iterations1200: function () {
24
+ Y.Assert.areEqual('c76a982415f1acc71dc197273c5b6ada', C.PBKDF2('password', 'ATHENA.MIT.EDUraeburn', { keySize: 128/32, iterations: 1200 }).toString());
25
+ },
26
+
27
+ testKeySize256Iterations1200: function () {
28
+ Y.Assert.areEqual('c76a982415f1acc71dc197273c5b6ada32f62915ed461718aad32843762433fa', C.PBKDF2('password', 'ATHENA.MIT.EDUraeburn', { keySize: 256/32, iterations: 1200 }).toString());
29
+ },
30
+
31
+ testKeySize128Iterations5: function () {
32
+ Y.Assert.areEqual('74e98b2e9eeddaab3113c1efc6d82b07', C.PBKDF2('password', C.enc.Hex.parse('1234567878563412'), { keySize: 128/32, iterations: 5 }).toString());
33
+ },
34
+
35
+ testKeySize256Iterations5: function () {
36
+ Y.Assert.areEqual('74e98b2e9eeddaab3113c1efc6d82b073c4860195b3e0737fa21a4778f376321', C.PBKDF2('password', C.enc.Hex.parse('1234567878563412'), { keySize: 256/32, iterations: 5 }).toString());
37
+ },
38
+
39
+ testKeySize128Iterations1200PassPhraseEqualsBlockSize: function () {
40
+ Y.Assert.areEqual('c1dfb29a4d2f2fb67c6f78d074d66367', C.PBKDF2('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'pass phrase equals block size', { keySize: 128/32, iterations: 1200 }).toString());
41
+ },
42
+
43
+ testKeySize256Iterations1200PassPhraseEqualsBlockSize: function () {
44
+ Y.Assert.areEqual('c1dfb29a4d2f2fb67c6f78d074d663671e6fd4da1e598572b1fecf256cb7cf61', C.PBKDF2('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'pass phrase equals block size', { keySize: 256/32, iterations: 1200 }).toString());
45
+ },
46
+
47
+ testKeySize128Iterations1200PassPhraseExceedsBlockSize: function () {
48
+ Y.Assert.areEqual('22344bc4b6e32675a8090f3ea80be01d', C.PBKDF2('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'pass phrase exceeds block size', { keySize: 128/32, iterations: 1200 }).toString());
49
+ },
50
+
51
+ testKeySize256Iterations1200PassPhraseExceedsBlockSize: function () {
52
+ Y.Assert.areEqual('22344bc4b6e32675a8090f3ea80be01d5f95126a2cddc3facc4a5e6dca04ec58', C.PBKDF2('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'pass phrase exceeds block size', { keySize: 256/32, iterations: 1200 }).toString());
53
+ },
54
+
55
+ testKeySize128Iterations50: function () {
56
+ Y.Assert.areEqual('44b0781253db3141ac4174af29325818', C.PBKDF2(C.enc.Hex.parse('f09d849e'), 'EXAMPLE.COMpianist', { keySize: 128/32, iterations: 50 }).toString());
57
+ },
58
+
59
+ testKeySize256Iterations50: function () {
60
+ Y.Assert.areEqual('44b0781253db3141ac4174af29325818584698d507a79f9879033dec308a2b77', C.PBKDF2(C.enc.Hex.parse('f09d849e'), 'EXAMPLE.COMpianist', { keySize: 256/32, iterations: 50 }).toString());
61
+ },
62
+
63
+ testInputIntegrity: function () {
64
+ var password = C.lib.WordArray.create([0x12345678]);
65
+ var salt = C.lib.WordArray.create([0x12345678]);
66
+
67
+ var expectedPassword = password.toString();
68
+ var expectedSalt = salt.toString();
69
+
70
+ C.PBKDF2(password, salt);
71
+
72
+ Y.Assert.areEqual(expectedPassword, password.toString());
73
+ Y.Assert.areEqual(expectedSalt, salt.toString());
74
+ },
75
+
76
+ testHelper: function () {
77
+ Y.Assert.areEqual(C.algo.PBKDF2.create({ keySize: 128/32 }).compute('password', 'ATHENA.MIT.EDUraeburn').toString(), C.PBKDF2('password', 'ATHENA.MIT.EDUraeburn', { keySize: 128/32 }).toString());
78
+ }
79
+ }));
80
+ }, '$Rev$');