Files
libsodium/test/default/pwhash_argon2id2.c
2026-03-15 14:17:11 +01:00

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;
}