mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-25 18:47:22 +09:00
57 lines
1.8 KiB
C
57 lines
1.8 KiB
C
#define TEST_NAME "pwhash_argon2id2"
|
|
#include "cmptest.h"
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
char str_out[crypto_pwhash_STRBYTES];
|
|
unsigned char out[32];
|
|
int ret;
|
|
|
|
ret = crypto_pwhash_argon2id_str(str_out, "test", 4, 3, 5000000);
|
|
if (ret != 0) {
|
|
printf("pwhash_argon2id_str failed\n");
|
|
return 1;
|
|
}
|
|
printf("hash created: ok\n");
|
|
|
|
assert(crypto_pwhash_argon2id_str_verify(str_out, "test", 4) == 0);
|
|
printf("verify: ok\n");
|
|
|
|
#if SIZE_MAX > 0xFFFFFFFFULL
|
|
ret = crypto_pwhash_argon2id_str_needs_rehash(str_out,
|
|
(unsigned long long) 0x100000000ULL,
|
|
5000000);
|
|
assert(ret == -1);
|
|
printf("needs_rehash opslimit overflow: rejected\n");
|
|
|
|
ret = crypto_pwhash_argon2id_str_needs_rehash(str_out, 3,
|
|
(size_t) 0x100000000ULL * 1024ULL);
|
|
assert(ret == -1);
|
|
printf("needs_rehash memlimit overflow: rejected\n");
|
|
#else
|
|
printf("needs_rehash opslimit overflow: rejected\n");
|
|
printf("needs_rehash memlimit overflow: rejected\n");
|
|
#endif
|
|
|
|
ret = crypto_pwhash_argon2id_str_needs_rehash(str_out, 3, 5000000);
|
|
assert(ret == 0);
|
|
printf("needs_rehash same params: ok\n");
|
|
|
|
ret = crypto_pwhash_argon2i_str_needs_rehash(str_out, 3, 5000000);
|
|
assert(ret == -1);
|
|
printf("argon2i needs_rehash on argon2id: rejected\n");
|
|
|
|
assert(crypto_pwhash_str_verify(str_out, "wrong", 5) == -1);
|
|
printf("verify wrong password: rejected\n");
|
|
|
|
ret = crypto_pwhash(out, sizeof out,
|
|
"test", 4,
|
|
(const unsigned char *) str_out + 30,
|
|
3, 5000000, crypto_pwhash_ALG_ARGON2I13);
|
|
assert(ret == 0);
|
|
printf("pwhash argon2i alg: ok\n");
|
|
|
|
return 0;
|
|
}
|