1
mirror of https://github.com/jedisct1/libsodium.git synced 2024-12-29 22:31:05 -07:00
libsodium/test/default/pwhash_scrypt_ll.c

60 lines
1.7 KiB
C
Raw Normal View History

#define TEST_NAME "pwhash_scrypt_ll"
#include "cmptest.h"
2017-02-25 12:59:54 -07:00
static const char * passwd1 = "";
static const char * salt1 = "";
static const uint64_t N1 = 16U;
static const uint32_t r1 = 1U;
static const uint32_t p1 = 1U;
static const char * passwd2 = "password";
static const char * salt2 = "NaCl";
static const uint64_t N2 = 1024U;
static const uint32_t r2 = 8U;
static const uint32_t p2 = 16U;
static const char * passwd3 = "pleaseletmein";
static const char * salt3 = "SodiumChloride";
static const uint64_t N3 = 16384U;
static const uint32_t r3 = 8U;
static const uint32_t p3 = 1U;
2017-02-23 03:30:21 -07:00
static void
2017-02-25 12:59:54 -07:00
tv(const char *passwd, const char *salt, uint64_t N, uint32_t r, uint32_t p)
{
uint8_t data[64];
2017-02-23 03:30:21 -07:00
size_t i;
2017-02-25 12:59:54 -07:00
size_t olen = (sizeof data / sizeof data[0]);
size_t passwd_len = strlen(passwd);
size_t salt_len = strlen(salt);
int line_items = 0;
2014-09-14 11:32:55 -07:00
if (crypto_pwhash_scryptsalsa208sha256_ll(
2017-02-25 12:59:54 -07:00
(const uint8_t *) passwd, passwd_len, (const uint8_t *) salt,
salt_len, N, r, p, data, olen) != 0) {
printf("pwhash_scryptsalsa208sha256_ll([%s],[%s]) failure\n", passwd,
2014-09-14 11:32:55 -07:00
salt);
return;
}
2017-02-25 12:59:54 -07:00
printf("scrypt('%s', '%s', %lu, %lu, %lu, %lu) =\n", passwd, salt,
2017-02-23 03:30:21 -07:00
(unsigned long) N, (unsigned long) r, (unsigned long) p,
(unsigned long) olen);
2017-02-25 12:59:54 -07:00
for (i = 0; i < olen; i++) {
2017-02-25 13:01:52 -07:00
printf("%02x%c", data[i], line_items < 15 ? ' ' : '\n');
line_items = line_items < 15 ? line_items + 1 : 0;
}
}
2017-02-23 03:30:21 -07:00
int
main(void)
{
2017-02-25 12:59:54 -07:00
tv(passwd1, salt1, N1, r1, p1);
tv(passwd2, salt2, N2, r2, p2);
tv(passwd3, salt3, N3, r3, p3);
2014-09-14 11:32:55 -07:00
return 0;
}