static int scrypt_power_on_self_test() { const scrypt_test_setting *t; uint8_t test_digest[64]; uint32_t i; int res = 7, scrypt_valid; scrypt_aligned_alloc YX, V; uint8_t *X, *Y; uint32_t N, chunk_bytes; const uint32_t r = SCRYPT_R; const uint32_t p = SCRYPT_P; if (!scrypt_test_mix()) { #if !defined(SCRYPT_TEST) scrypt_fatal_error("scrypt: mix function power-on-self-test failed"); #endif res &= ~1; } if (!scrypt_test_hash()) { #if !defined(SCRYPT_TEST) scrypt_fatal_error("scrypt: hash function power-on-self-test failed"); #endif res &= ~2; } for (i = 0, scrypt_valid = 1; post_settings[i].pw; i++) { t = post_settings + i; N = (1 << (t->Nfactor + 1)); chunk_bytes = SCRYPT_BLOCK_BYTES * r * 2; V = scrypt_alloc((uint64_t)N * chunk_bytes); YX = scrypt_alloc((p + 1) * chunk_bytes); Y = YX.ptr; X = Y + chunk_bytes; scrypt_N_1_1((uint8_t *)t->pw, strlen(t->pw), (uint8_t *)t->salt, strlen(t->salt), N, test_digest, sizeof(test_digest), X, Y, V.ptr); scrypt_valid &= scrypt_verify(post_vectors[i], test_digest, sizeof(test_digest)); scrypt_free(&V); scrypt_free(&YX); } if (!scrypt_valid) { #if !defined(SCRYPT_TEST) scrypt_fatal_error("scrypt: scrypt power-on-self-test failed"); #endif res &= ~4; } return res; }
static int scrypt_power_on_self_test(void) { const scrypt_test_setting *t; uint8_t test_digest[64]; uint32_t i; int res = 7, scrypt_valid; if (!scrypt_test_mix()) { #if !defined(SCRYPT_TEST) scrypt_fatal_error("scrypt: mix function power-on-self-test failed"); #endif res &= ~1; } if (!scrypt_test_hash()) { #if !defined(SCRYPT_TEST) scrypt_fatal_error("scrypt: hash function power-on-self-test failed"); #endif res &= ~2; } for (i = 0, scrypt_valid = 1; post_settings[i].pw; i++) { t = post_settings + i; scrypt((uint8_t *)t->pw, strlen(t->pw), (uint8_t *)t->salt, strlen(t->salt), t->Nfactor, t->rfactor, t->pfactor, test_digest, sizeof(test_digest)); scrypt_valid &= scrypt_verify(post_vectors[i], test_digest, sizeof(test_digest)); } if (!scrypt_valid) { #if !defined(SCRYPT_TEST) scrypt_fatal_error("scrypt: scrypt power-on-self-test failed"); #endif res &= ~4; } return res; }