author | Kim Alvefur <zash@zash.se> |
Wed, 19 Oct 2022 14:07:48 +0200 | |
changeset 12780 | 4715301a3504 |
parent 12568 | 36e769c64054 |
child 12840 | dbe9781fd278 |
permissions | -rw-r--r-- |
9968
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 |
-- Test vectors from RFC 6070 |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
local hashes = require "util.hashes"; |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
local hex = require "util.hex"; |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
|
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
-- Also see spec for util.hmac where HMAC test cases reside |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 |
|
10751
63a89b876407
util.hashes: Use generic name of PBKDF2-HMAC-SHA1 function in tests
Kim Alvefur <zash@zash.se>
parents:
9974
diff
changeset
|
7 |
describe("PBKDF2-HMAC-SHA1", function () |
9968
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 |
it("test vector 1", function () |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 |
local P = "password" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 |
local S = "salt" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 |
local c = 1 |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 |
local DK = "0c60c80f961f0e71f3a9b524af6012062fe037a6"; |
12359
a0ff5c438e9d
util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents:
10752
diff
changeset
|
13 |
assert.equal(DK, hex.encode(hashes.pbkdf2_hmac_sha1(P, S, c))); |
9968
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
end); |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 |
it("test vector 2", function () |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 |
local P = "password" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 |
local S = "salt" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 |
local c = 2 |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 |
local DK = "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957"; |
12359
a0ff5c438e9d
util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents:
10752
diff
changeset
|
20 |
assert.equal(DK, hex.encode(hashes.pbkdf2_hmac_sha1(P, S, c))); |
9968
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
end); |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
it("test vector 3", function () |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 |
local P = "password" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 |
local S = "salt" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 |
local c = 4096 |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
local DK = "4b007901b765489abead49d926f721d065a429c1"; |
12359
a0ff5c438e9d
util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents:
10752
diff
changeset
|
27 |
assert.equal(DK, hex.encode(hashes.pbkdf2_hmac_sha1(P, S, c))); |
9968
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 |
end); |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 |
it("test vector 4 #SLOW", function () |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 |
local P = "password" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 |
local S = "salt" |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 |
local c = 16777216 |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 |
local DK = "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984"; |
12359
a0ff5c438e9d
util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents:
10752
diff
changeset
|
34 |
assert.equal(DK, hex.encode(hashes.pbkdf2_hmac_sha1(P, S, c))); |
9968
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 |
end); |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 |
end); |
f299d4917dd8
util.hashes: Add test vectors from RFC 6070 for PBKDF2 (aka SCRAM Hi())
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 |
|
10752
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
38 |
describe("PBKDF2-HMAC-SHA256", function () |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
39 |
it("test vector 1", function () |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
40 |
local P = "password"; |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
41 |
local S = "salt"; |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
42 |
local c = 1 |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
43 |
local DK = "120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b"; |
12359
a0ff5c438e9d
util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents:
10752
diff
changeset
|
44 |
assert.equal(DK, hex.encode(hashes.pbkdf2_hmac_sha256(P, S, c))); |
10752
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
45 |
end); |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
46 |
it("test vector 2", function () |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
47 |
local P = "password"; |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
48 |
local S = "salt"; |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
49 |
local c = 2 |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
50 |
local DK = "ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43"; |
12359
a0ff5c438e9d
util.hex: Deprecate to/from in favour of encode/decode, for consistency!
Matthew Wild <mwild1@gmail.com>
parents:
10752
diff
changeset
|
51 |
assert.equal(DK, hex.encode(hashes.pbkdf2_hmac_sha256(P, S, c))); |
10752
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
52 |
end); |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
53 |
end); |
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
54 |
|
93293891709b
util.hashes: Fix output length of PBKDF2-HMAC-SHA256
Kim Alvefur <zash@zash.se>
parents:
10751
diff
changeset
|
55 |
|
12568
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
56 |
describe("SHA-3", function () |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
57 |
describe("256", function () |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
58 |
it("works", function () |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
59 |
local expected = "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a" |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
60 |
assert.equal(expected, hashes.sha3_256("", true)); |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
61 |
end); |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
62 |
end); |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
63 |
describe("512", function () |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
64 |
it("works", function () |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
65 |
local expected = "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26" |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
66 |
assert.equal(expected, hashes.sha3_512("", true)); |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
67 |
end); |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
68 |
end); |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
69 |
end); |
36e769c64054
util.hashes: Add SHA3 bindings
Kim Alvefur <zash@zash.se>
parents:
12359
diff
changeset
|
70 |