From 2e59f9740a29439df7c7a56cf0ae83dec3081d31 Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Mon, 11 Aug 2014 13:49:21 -0400 Subject: initial import of debian version from mentors --- test/default/pwhash_scrypt_ll.c | 67 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 test/default/pwhash_scrypt_ll.c (limited to 'test/default/pwhash_scrypt_ll.c') diff --git a/test/default/pwhash_scrypt_ll.c b/test/default/pwhash_scrypt_ll.c new file mode 100644 index 0000000..db72e4e --- /dev/null +++ b/test/default/pwhash_scrypt_ll.c @@ -0,0 +1,67 @@ +#include +#include +#include + +#define TEST_NAME "pwhash_scrypt_ll" +#include "cmptest.h" + +/* Tarsnap test vectors, see: https://www.tarsnap.com/scrypt/scrypt.pdf */ + +static const char *password1 = ""; +static const char *salt1 = ""; +static uint64_t N1 = 16U; +static uint32_t r1 = 1U; +static uint32_t p1 = 1U; + +static const char *password2 = "password"; +static const char *salt2 = "NaCl"; +static uint64_t N2 = 1024U; +static uint32_t r2 = 8U; +static uint32_t p2 = 16U; + +static const char *password3 = "pleaseletmein"; +static const char *salt3 = "SodiumChloride"; +static uint64_t N3 = 16384U; +static uint32_t r3 = 8U; +static uint32_t p3 = 1U; + +static void test_vector(const char *password, const char *salt, + uint64_t N, uint32_t r, uint32_t p) +{ + uint8_t data[64]; + size_t i; + size_t olen = (sizeof data / sizeof data[0]); + size_t passwordLength = strlen(password); + size_t saltLenght = strlen(salt); + int lineitems = 0; + int lineitemsLimit = 15; + + if (crypto_pwhash_scryptsalsa208sha256_ll((const uint8_t *) password, + passwordLength, + (const uint8_t *) salt, + saltLenght, + N, r, p, data, olen) != 0) { + printf("pwhash_scryptsalsa208sha256_ll([%s],[%s]) failure\n", + password, salt); + return; + } + + printf("scrypt('%s', '%s', %llu, %lu, %lu, %lu) =\n", + password, salt, + (unsigned long long) N, (unsigned long) r, (unsigned long) p, + (unsigned long) olen); + + for (i = 0; i < olen; ++i) { + printf("%02x%c", data[i], lineitems < lineitemsLimit ? ' ' : '\n'); + lineitems = lineitems < lineitemsLimit ? lineitems + 1 : 0; + } +} + +int main(void) +{ + test_vector(password1, salt1, N1, r1, p1); + test_vector(password2, salt2, N2, r2, p2); + test_vector(password3, salt3, N3, r3, p3); + + return 0; +} -- cgit v1.2.3