argon2 1.0.0 → 1.1.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +6 -5
- data/ext/argon2_wrap/argon_wrap.c +2 -1
- data/ext/argon2_wrap/test.c +5 -5
- data/ext/phc-winner-argon2/.gitattributes +5 -0
- data/ext/phc-winner-argon2/.gitignore +5 -0
- data/ext/phc-winner-argon2/Argon2.sln +98 -0
- data/ext/phc-winner-argon2/CHANGELOG.md +11 -0
- data/ext/phc-winner-argon2/Makefile +7 -2
- data/ext/phc-winner-argon2/README.md +27 -15
- data/ext/phc-winner-argon2/appveyor.yml +25 -0
- data/ext/phc-winner-argon2/export.sh +7 -0
- data/ext/phc-winner-argon2/include/argon2.h +24 -1
- data/ext/phc-winner-argon2/kats/argon2d +3 -1
- data/ext/phc-winner-argon2/kats/argon2d.shasum +1 -1
- data/ext/phc-winner-argon2/kats/argon2d_v16 +12304 -0
- data/ext/phc-winner-argon2/kats/argon2d_v16.shasum +1 -0
- data/ext/phc-winner-argon2/kats/argon2i +3 -1
- data/ext/phc-winner-argon2/kats/argon2i.shasum +1 -1
- data/ext/phc-winner-argon2/kats/argon2i_v16 +12304 -0
- data/ext/phc-winner-argon2/kats/argon2i_v16.shasum +1 -0
- data/ext/phc-winner-argon2/kats/check-sums.ps1 +42 -0
- data/ext/phc-winner-argon2/kats/check-sums.sh +1 -1
- data/ext/phc-winner-argon2/kats/test.ps1 +50 -0
- data/ext/phc-winner-argon2/kats/test.sh +45 -43
- data/ext/phc-winner-argon2/man/argon2.1 +47 -0
- data/ext/phc-winner-argon2/src/argon2.c +29 -15
- data/ext/phc-winner-argon2/src/bench.c +5 -22
- data/ext/phc-winner-argon2/src/core.c +3 -3
- data/ext/phc-winner-argon2/src/core.h +1 -3
- data/ext/phc-winner-argon2/src/encoding.c +22 -3
- data/ext/phc-winner-argon2/src/encoding.h +6 -0
- data/ext/phc-winner-argon2/src/genkat.c +23 -5
- data/ext/phc-winner-argon2/src/opt.c +42 -2
- data/ext/phc-winner-argon2/src/opt.h +10 -0
- data/ext/phc-winner-argon2/src/ref.c +51 -1
- data/ext/phc-winner-argon2/src/ref.h +10 -0
- data/ext/phc-winner-argon2/src/run.c +67 -42
- data/ext/phc-winner-argon2/src/test.c +160 -68
- data/ext/phc-winner-argon2/src/thread.c +1 -1
- data/ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj +158 -0
- data/ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj +158 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj +167 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters +72 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj +159 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj +158 -0
- data/ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj +158 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj +159 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters +72 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj +158 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters +69 -0
- data/lib/argon2.rb +5 -1
- data/lib/argon2/version.rb +1 -1
- metadata +29 -3
|
@@ -9,38 +9,43 @@
|
|
|
9
9
|
#include "argon2.h"
|
|
10
10
|
|
|
11
11
|
#define OUT_LEN 32
|
|
12
|
-
#define SALT_LEN 16
|
|
13
12
|
#define ENCODED_LEN 108
|
|
14
13
|
|
|
15
|
-
uint8_t salt[SALT_LEN];
|
|
16
|
-
|
|
17
14
|
/* Test harness will assert:
|
|
18
|
-
*
|
|
15
|
+
* argon2_hash() returns ARGON2_OK
|
|
19
16
|
* HEX output matches expected
|
|
20
17
|
* encoded output matches expected
|
|
21
18
|
* argon2_verify() correctly verifies value
|
|
22
19
|
*/
|
|
23
20
|
|
|
24
|
-
void hashtest(uint32_t t, uint32_t m, uint32_t p, char *pwd,
|
|
25
|
-
char *mcfref) {
|
|
21
|
+
void hashtest(uint32_t version, uint32_t t, uint32_t m, uint32_t p, char *pwd,
|
|
22
|
+
char *salt, char *hexref, char *mcfref) {
|
|
26
23
|
unsigned char out[OUT_LEN];
|
|
27
24
|
unsigned char hex_out[OUT_LEN * 2 + 4];
|
|
28
25
|
char encoded[ENCODED_LEN];
|
|
29
26
|
int ret, i;
|
|
30
27
|
|
|
31
|
-
printf("Hash test: t=%d, m=%d, p=%d, pass=%s, salt=%s: ",
|
|
32
|
-
salt);
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
printf("Hash test: $v=%d t=%d, m=%d, p=%d, pass=%s, salt=%s: ", version,
|
|
29
|
+
t, m, p, pwd, salt);
|
|
30
|
+
|
|
31
|
+
ret = argon2_hash(t, 1 << m, p, pwd, strlen(pwd), salt, strlen(salt), out,
|
|
32
|
+
OUT_LEN, encoded, ENCODED_LEN, Argon2_i, version);
|
|
35
33
|
assert(ret == ARGON2_OK);
|
|
36
34
|
|
|
37
35
|
for (i = 0; i < OUT_LEN; ++i)
|
|
38
36
|
sprintf((char *)(hex_out + i * 2), "%02x", out[i]);
|
|
39
37
|
|
|
40
38
|
assert(memcmp(hex_out, hexref, OUT_LEN * 2) == 0);
|
|
41
|
-
|
|
39
|
+
|
|
40
|
+
if (ARGON2_VERSION_NUMBER == version) {
|
|
41
|
+
assert(memcmp(encoded, mcfref, strlen(mcfref)) == 0);
|
|
42
|
+
}
|
|
43
|
+
|
|
42
44
|
ret = argon2_verify(encoded, pwd, strlen(pwd), Argon2_i);
|
|
43
45
|
assert(ret == ARGON2_OK);
|
|
46
|
+
ret = argon2_verify(mcfref, pwd, strlen(pwd), Argon2_i);
|
|
47
|
+
assert(ret == ARGON2_OK);
|
|
48
|
+
|
|
44
49
|
printf("PASS\n");
|
|
45
50
|
}
|
|
46
51
|
|
|
@@ -48,84 +53,171 @@ int main() {
|
|
|
48
53
|
int ret;
|
|
49
54
|
unsigned char out[OUT_LEN];
|
|
50
55
|
char const *msg;
|
|
56
|
+
int version;
|
|
51
57
|
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
version = ARGON2_VERSION_10;
|
|
59
|
+
printf("Test Argon2i version number: %02x\n", version);
|
|
54
60
|
|
|
55
61
|
/* Multiple test cases for various input values */
|
|
56
|
-
hashtest(2, 16, 1, "password",
|
|
57
|
-
"
|
|
58
|
-
"$argon2i$m=65536,t=2,p=1$
|
|
59
|
-
"$
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
"
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
"
|
|
80
|
-
|
|
81
|
-
"
|
|
82
|
-
|
|
83
|
-
"
|
|
84
|
-
|
|
85
|
-
"
|
|
86
|
-
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
"
|
|
92
|
-
"$
|
|
62
|
+
hashtest(version, 2, 16, 1, "password", "somesalt",
|
|
63
|
+
"f6c4db4a54e2a370627aff3db6176b94a2a209a62c8e36152711802f7b30c694",
|
|
64
|
+
"$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
65
|
+
"$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ");
|
|
66
|
+
#ifdef TEST_LARGE_RAM
|
|
67
|
+
hashtest(version, 2, 20, 1, "password", "somesalt",
|
|
68
|
+
"9690ec55d28d3ed32562f2e73ea62b02b018757643a2ae6e79528459de8106e9",
|
|
69
|
+
"$argon2i$m=1048576,t=2,p=1$c29tZXNhbHQ"
|
|
70
|
+
"$lpDsVdKNPtMlYvLnPqYrArAYdXZDoq5ueVKEWd6BBuk");
|
|
71
|
+
#endif
|
|
72
|
+
hashtest(version, 2, 18, 1, "password", "somesalt",
|
|
73
|
+
"3e689aaa3d28a77cf2bc72a51ac53166761751182f1ee292e3f677a7da4c2467",
|
|
74
|
+
"$argon2i$m=262144,t=2,p=1$c29tZXNhbHQ"
|
|
75
|
+
"$Pmiaqj0op3zyvHKlGsUxZnYXURgvHuKS4/Z3p9pMJGc");
|
|
76
|
+
hashtest(version, 2, 8, 1, "password", "somesalt",
|
|
77
|
+
"fd4dd83d762c49bdeaf57c47bdcd0c2f1babf863fdeb490df63ede9975fccf06",
|
|
78
|
+
"$argon2i$m=256,t=2,p=1$c29tZXNhbHQ"
|
|
79
|
+
"$/U3YPXYsSb3q9XxHvc0MLxur+GP960kN9j7emXX8zwY");
|
|
80
|
+
hashtest(version, 2, 8, 2, "password", "somesalt",
|
|
81
|
+
"b6c11560a6a9d61eac706b79a2f97d68b4463aa3ad87e00c07e2b01e90c564fb",
|
|
82
|
+
"$argon2i$m=256,t=2,p=2$c29tZXNhbHQ"
|
|
83
|
+
"$tsEVYKap1h6scGt5ovl9aLRGOqOth+AMB+KwHpDFZPs");
|
|
84
|
+
hashtest(version, 1, 16, 1, "password", "somesalt",
|
|
85
|
+
"81630552b8f3b1f48cdb1992c4c678643d490b2b5eb4ff6c4b3438b5621724b2",
|
|
86
|
+
"$argon2i$m=65536,t=1,p=1$c29tZXNhbHQ"
|
|
87
|
+
"$gWMFUrjzsfSM2xmSxMZ4ZD1JCytetP9sSzQ4tWIXJLI");
|
|
88
|
+
hashtest(version, 4, 16, 1, "password", "somesalt",
|
|
89
|
+
"f212f01615e6eb5d74734dc3ef40ade2d51d052468d8c69440a3a1f2c1c2847b",
|
|
90
|
+
"$argon2i$m=65536,t=4,p=1$c29tZXNhbHQ"
|
|
91
|
+
"$8hLwFhXm6110c03D70Ct4tUdBSRo2MaUQKOh8sHChHs");
|
|
92
|
+
hashtest(version, 2, 16, 1, "differentpassword", "somesalt",
|
|
93
|
+
"e9c902074b6754531a3a0be519e5baf404b30ce69b3f01ac3bf21229960109a3",
|
|
94
|
+
"$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
95
|
+
"$6ckCB0tnVFMaOgvlGeW69ASzDOabPwGsO/ISKZYBCaM");
|
|
96
|
+
hashtest(version, 2, 16, 1, "password", "diffsalt",
|
|
97
|
+
"79a103b90fe8aef8570cb31fc8b22259778916f8336b7bdac3892569d4f1c497",
|
|
98
|
+
"$argon2i$m=65536,t=2,p=1$ZGlmZnNhbHQ"
|
|
99
|
+
"$eaEDuQ/orvhXDLMfyLIiWXeJFvgza3vaw4kladTxxJc");
|
|
93
100
|
|
|
94
101
|
/* Error state tests */
|
|
95
102
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
103
|
+
/* Handle an invalid encoding correctly (it is missing a $) */
|
|
104
|
+
ret = argon2_verify("$argon2i$m=65536,t=2,p=1c29tZXNhbHQ"
|
|
105
|
+
"$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ",
|
|
106
|
+
"password", strlen("password"), Argon2_i);
|
|
107
|
+
assert(ret == ARGON2_DECODING_FAIL);
|
|
108
|
+
printf("Recognise an invalid encoding: PASS\n");
|
|
100
109
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
110
|
+
/* Handle an invalid encoding correctly (it is missing a $) */
|
|
111
|
+
ret = argon2_verify("$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
112
|
+
"9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ",
|
|
113
|
+
"password", strlen("password"), Argon2_i);
|
|
114
|
+
assert(ret == ARGON2_OUTPUT_TOO_SHORT);
|
|
115
|
+
printf("Recognise an invalid encoding: PASS\n");
|
|
105
116
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
117
|
+
/* Handle an mismatching hash (the encoded password is "passwore") */
|
|
118
|
+
ret = argon2_verify("$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
119
|
+
"$b2G3seW+uPzerwQQC+/E1K50CLLO7YXy0JRcaTuswRo",
|
|
120
|
+
"password", strlen("password"), Argon2_i);
|
|
121
|
+
assert(ret == ARGON2_VERIFY_MISMATCH);
|
|
122
|
+
printf("Verify with mismatched password: PASS\n");
|
|
123
|
+
|
|
124
|
+
msg = argon2_error_message(ARGON2_DECODING_FAIL);
|
|
125
|
+
assert(strcmp(msg, "Decoding failed") == 0);
|
|
126
|
+
printf("Decode an error message: PASS\n");
|
|
127
|
+
|
|
128
|
+
printf("\n");
|
|
129
|
+
|
|
130
|
+
version = ARGON2_VERSION_NUMBER;
|
|
131
|
+
printf("Test Argon2i version number: %02x\n", version);
|
|
132
|
+
|
|
133
|
+
/* Multiple test cases for various input values */
|
|
134
|
+
hashtest(version, 2, 16, 1, "password", "somesalt",
|
|
135
|
+
"c1628832147d9720c5bd1cfd61367078729f6dfb6f8fea9ff98158e0d7816ed0",
|
|
136
|
+
"$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
137
|
+
"$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA");
|
|
138
|
+
#ifdef TEST_LARGE_RAM
|
|
139
|
+
hashtest(version, 2, 20, 1, "password", "somesalt",
|
|
140
|
+
"d1587aca0922c3b5d6a83edab31bee3c4ebaef342ed6127a55d19b2351ad1f41",
|
|
141
|
+
"$argon2i$v=19$m=1048576,t=2,p=1$c29tZXNhbHQ"
|
|
142
|
+
"$0Vh6ygkiw7XWqD7asxvuPE667zQu1hJ6VdGbI1GtH0E");
|
|
143
|
+
#endif
|
|
144
|
+
hashtest(version, 2, 18, 1, "password", "somesalt",
|
|
145
|
+
"296dbae80b807cdceaad44ae741b506f14db0959267b183b118f9b24229bc7cb",
|
|
146
|
+
"$argon2i$v=19$m=262144,t=2,p=1$c29tZXNhbHQ"
|
|
147
|
+
"$KW266AuAfNzqrUSudBtQbxTbCVkmexg7EY+bJCKbx8s");
|
|
148
|
+
hashtest(version, 2, 8, 1, "password", "somesalt",
|
|
149
|
+
"89e9029f4637b295beb027056a7336c414fadd43f6b208645281cb214a56452f",
|
|
150
|
+
"$argon2i$v=19$m=256,t=2,p=1$c29tZXNhbHQ"
|
|
151
|
+
"$iekCn0Y3spW+sCcFanM2xBT63UP2sghkUoHLIUpWRS8");
|
|
152
|
+
hashtest(version, 2, 8, 2, "password", "somesalt",
|
|
153
|
+
"4ff5ce2769a1d7f4c8a491df09d41a9fbe90e5eb02155a13e4c01e20cd4eab61",
|
|
154
|
+
"$argon2i$v=19$m=256,t=2,p=2$c29tZXNhbHQ"
|
|
155
|
+
"$T/XOJ2mh1/TIpJHfCdQan76Q5esCFVoT5MAeIM1Oq2E");
|
|
156
|
+
hashtest(version, 1, 16, 1, "password", "somesalt",
|
|
157
|
+
"d168075c4d985e13ebeae560cf8b94c3b5d8a16c51916b6f4ac2da3ac11bbecf",
|
|
158
|
+
"$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQ"
|
|
159
|
+
"$0WgHXE2YXhPr6uVgz4uUw7XYoWxRkWtvSsLaOsEbvs8");
|
|
160
|
+
hashtest(version, 4, 16, 1, "password", "somesalt",
|
|
161
|
+
"aaa953d58af3706ce3df1aefd4a64a84e31d7f54175231f1285259f88174ce5b",
|
|
162
|
+
"$argon2i$v=19$m=65536,t=4,p=1$c29tZXNhbHQ"
|
|
163
|
+
"$qqlT1YrzcGzj3xrv1KZKhOMdf1QXUjHxKFJZ+IF0zls");
|
|
164
|
+
hashtest(version, 2, 16, 1, "differentpassword", "somesalt",
|
|
165
|
+
"14ae8da01afea8700c2358dcef7c5358d9021282bd88663a4562f59fb74d22ee",
|
|
166
|
+
"$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
167
|
+
"$FK6NoBr+qHAMI1jc73xTWNkCEoK9iGY6RWL1n7dNIu4");
|
|
168
|
+
hashtest(version, 2, 16, 1, "password", "diffsalt",
|
|
169
|
+
"b0357cccfbef91f3860b0dba447b2348cbefecadaf990abfe9cc40726c521271",
|
|
170
|
+
"$argon2i$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ"
|
|
171
|
+
"$sDV8zPvvkfOGCw26RHsjSMvv7K2vmQq/6cxAcmxSEnE");
|
|
172
|
+
|
|
173
|
+
/* Error state tests */
|
|
110
174
|
|
|
111
175
|
/* Handle an invalid encoding correctly (it is missing a $) */
|
|
112
|
-
ret = argon2_verify("$argon2i$m=65536,t=2,p=
|
|
113
|
-
"
|
|
114
|
-
"HH7u+eDpabMCRyL8hkocqfbKINpz+b8/FzGIG+riA54",
|
|
176
|
+
ret = argon2_verify("$argon2i$v=19$m=65536,t=2,p=1c29tZXNhbHQ"
|
|
177
|
+
"$wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA",
|
|
115
178
|
"password", strlen("password"), Argon2_i);
|
|
116
179
|
assert(ret == ARGON2_DECODING_FAIL);
|
|
117
180
|
printf("Recognise an invalid encoding: PASS\n");
|
|
118
181
|
|
|
182
|
+
/* Handle an invalid encoding correctly (it is missing a $) */
|
|
183
|
+
ret = argon2_verify("$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
184
|
+
"wWKIMhR9lyDFvRz9YTZweHKfbftvj+qf+YFY4NeBbtA",
|
|
185
|
+
"password", strlen("password"), Argon2_i);
|
|
186
|
+
assert(ret == ARGON2_OUTPUT_TOO_SHORT);
|
|
187
|
+
printf("Recognise an invalid encoding: PASS\n");
|
|
188
|
+
|
|
119
189
|
/* Handle an mismatching hash (the encoded password is "passwore") */
|
|
120
|
-
ret = argon2_verify("$argon2i$m=65536,t=2,p=1$
|
|
121
|
-
"$
|
|
190
|
+
ret = argon2_verify("$argon2i$v=19$m=65536,t=2,p=1$c29tZXNhbHQ"
|
|
191
|
+
"$8iIuixkI73Js3G1uMbezQXD0b8LG4SXGsOwoQkdAQIM",
|
|
122
192
|
"password", strlen("password"), Argon2_i);
|
|
123
193
|
assert(ret == ARGON2_VERIFY_MISMATCH);
|
|
124
194
|
printf("Verify with mismatched password: PASS\n");
|
|
125
195
|
|
|
126
196
|
msg = argon2_error_message(ARGON2_DECODING_FAIL);
|
|
127
|
-
assert(strcmp(msg, "Decoding failed")==0);
|
|
197
|
+
assert(strcmp(msg, "Decoding failed") == 0);
|
|
128
198
|
printf("Decode an error message: PASS\n");
|
|
129
199
|
|
|
200
|
+
/* Common error state tests */
|
|
201
|
+
|
|
202
|
+
printf("\n");
|
|
203
|
+
printf("Common error state tests\n");
|
|
204
|
+
|
|
205
|
+
ret = argon2_hash(2, 1, 1, "password", strlen("password"),
|
|
206
|
+
"diffsalt", strlen("diffsalt"),
|
|
207
|
+
out, OUT_LEN, NULL, 0, Argon2_i, version);
|
|
208
|
+
assert(ret == ARGON2_MEMORY_TOO_LITTLE);
|
|
209
|
+
printf("Fail on invalid memory: PASS\n");
|
|
210
|
+
|
|
211
|
+
ret = argon2_hash(2, 1 << 12, 1, NULL, strlen("password"),
|
|
212
|
+
"diffsalt", strlen("diffsalt"),
|
|
213
|
+
out, OUT_LEN, NULL, 0, Argon2_i, version);
|
|
214
|
+
assert(ret == ARGON2_PWD_PTR_MISMATCH);
|
|
215
|
+
printf("Fail on invalid null pointer: PASS\n");
|
|
216
|
+
|
|
217
|
+
ret = argon2_hash(2, 1 << 12, 1, "password", strlen("password"), "s", 1,
|
|
218
|
+
out, OUT_LEN, NULL, 0, Argon2_i, version);
|
|
219
|
+
assert(ret == ARGON2_SALT_TOO_SHORT);
|
|
220
|
+
printf("Fail on salt too short: PASS\n");
|
|
221
|
+
|
|
130
222
|
return 0;
|
|
131
223
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
|
+
<ItemGroup Label="ProjectConfigurations">
|
|
4
|
+
<ProjectConfiguration Include="Debug|Win32">
|
|
5
|
+
<Configuration>Debug</Configuration>
|
|
6
|
+
<Platform>Win32</Platform>
|
|
7
|
+
</ProjectConfiguration>
|
|
8
|
+
<ProjectConfiguration Include="Release|Win32">
|
|
9
|
+
<Configuration>Release</Configuration>
|
|
10
|
+
<Platform>Win32</Platform>
|
|
11
|
+
</ProjectConfiguration>
|
|
12
|
+
<ProjectConfiguration Include="Debug|x64">
|
|
13
|
+
<Configuration>Debug</Configuration>
|
|
14
|
+
<Platform>x64</Platform>
|
|
15
|
+
</ProjectConfiguration>
|
|
16
|
+
<ProjectConfiguration Include="Release|x64">
|
|
17
|
+
<Configuration>Release</Configuration>
|
|
18
|
+
<Platform>x64</Platform>
|
|
19
|
+
</ProjectConfiguration>
|
|
20
|
+
</ItemGroup>
|
|
21
|
+
<PropertyGroup Label="Globals">
|
|
22
|
+
<ProjectGuid>{CAA75C57-998C-494E-B8A5-5894EF0FC528}</ProjectGuid>
|
|
23
|
+
<RootNamespace>Argon2Opt</RootNamespace>
|
|
24
|
+
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
|
25
|
+
</PropertyGroup>
|
|
26
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
27
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
28
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
29
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
|
30
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
31
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
32
|
+
</PropertyGroup>
|
|
33
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
34
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
35
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
|
36
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
37
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
38
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
39
|
+
</PropertyGroup>
|
|
40
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
41
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
42
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
|
43
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
44
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
45
|
+
</PropertyGroup>
|
|
46
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
47
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
48
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
|
49
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
50
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
51
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
52
|
+
</PropertyGroup>
|
|
53
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
54
|
+
<ImportGroup Label="ExtensionSettings">
|
|
55
|
+
</ImportGroup>
|
|
56
|
+
<ImportGroup Label="Shared">
|
|
57
|
+
</ImportGroup>
|
|
58
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
59
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
60
|
+
</ImportGroup>
|
|
61
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
62
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
63
|
+
</ImportGroup>
|
|
64
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
65
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
66
|
+
</ImportGroup>
|
|
67
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
68
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
69
|
+
</ImportGroup>
|
|
70
|
+
<PropertyGroup Label="UserMacros" />
|
|
71
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
72
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
73
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
74
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
75
|
+
</PropertyGroup>
|
|
76
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
77
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
78
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
79
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
80
|
+
</PropertyGroup>
|
|
81
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
82
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
83
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
84
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
85
|
+
</PropertyGroup>
|
|
86
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
87
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
88
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
89
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
90
|
+
</PropertyGroup>
|
|
91
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
92
|
+
<ClCompile>
|
|
93
|
+
<WarningLevel>Level3</WarningLevel>
|
|
94
|
+
<Optimization>Disabled</Optimization>
|
|
95
|
+
<SDLCheck>true</SDLCheck>
|
|
96
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
97
|
+
</ClCompile>
|
|
98
|
+
</ItemDefinitionGroup>
|
|
99
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
100
|
+
<ClCompile>
|
|
101
|
+
<WarningLevel>Level3</WarningLevel>
|
|
102
|
+
<Optimization>Disabled</Optimization>
|
|
103
|
+
<SDLCheck>true</SDLCheck>
|
|
104
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
105
|
+
</ClCompile>
|
|
106
|
+
</ItemDefinitionGroup>
|
|
107
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
108
|
+
<ClCompile>
|
|
109
|
+
<WarningLevel>Level3</WarningLevel>
|
|
110
|
+
<Optimization>MaxSpeed</Optimization>
|
|
111
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
112
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
113
|
+
<SDLCheck>true</SDLCheck>
|
|
114
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
115
|
+
</ClCompile>
|
|
116
|
+
<Link>
|
|
117
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
118
|
+
<OptimizeReferences>true</OptimizeReferences>
|
|
119
|
+
</Link>
|
|
120
|
+
</ItemDefinitionGroup>
|
|
121
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
122
|
+
<ClCompile>
|
|
123
|
+
<WarningLevel>Level3</WarningLevel>
|
|
124
|
+
<Optimization>MaxSpeed</Optimization>
|
|
125
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
126
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
127
|
+
<SDLCheck>true</SDLCheck>
|
|
128
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
129
|
+
</ClCompile>
|
|
130
|
+
<Link>
|
|
131
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
132
|
+
<OptimizeReferences>true</OptimizeReferences>
|
|
133
|
+
</Link>
|
|
134
|
+
</ItemDefinitionGroup>
|
|
135
|
+
<ItemGroup>
|
|
136
|
+
<ClInclude Include="..\..\include\argon2.h" />
|
|
137
|
+
<ClInclude Include="..\..\src\blake2\blake2-impl.h" />
|
|
138
|
+
<ClInclude Include="..\..\src\blake2\blake2.h" />
|
|
139
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-opt.h" />
|
|
140
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-ref.h" />
|
|
141
|
+
<ClInclude Include="..\..\src\core.h" />
|
|
142
|
+
<ClInclude Include="..\..\src\encoding.h" />
|
|
143
|
+
<ClInclude Include="..\..\src\opt.h" />
|
|
144
|
+
<ClInclude Include="..\..\src\thread.h" />
|
|
145
|
+
</ItemGroup>
|
|
146
|
+
<ItemGroup>
|
|
147
|
+
<ClCompile Include="..\..\src\argon2.c" />
|
|
148
|
+
<ClCompile Include="..\..\src\blake2\blake2b.c" />
|
|
149
|
+
<ClCompile Include="..\..\src\core.c" />
|
|
150
|
+
<ClCompile Include="..\..\src\encoding.c" />
|
|
151
|
+
<ClCompile Include="..\..\src\opt.c" />
|
|
152
|
+
<ClCompile Include="..\..\src\run.c" />
|
|
153
|
+
<ClCompile Include="..\..\src\thread.c" />
|
|
154
|
+
</ItemGroup>
|
|
155
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
156
|
+
<ImportGroup Label="ExtensionTargets">
|
|
157
|
+
</ImportGroup>
|
|
158
|
+
</Project>
|