#include <stdlib.h>
-#include <stdint.h>
#include "scrypt.h"
#include "pbkdf2.h"
r = 1, p = 1, N = 1024
*/
-uint256 scrypt_nosalt(const void* input, size_t inputlen, void *scratchpad)
+uint256 scrypt_blockhash(const void* input)
{
- unsigned int *V;
- unsigned int X[32];
+ uint8_t scratchpad[SCRYPT_BUFFER_SIZE];
+ uint32_t X[32];
uint256 result = 0;
- V = (unsigned int *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63));
-
- PBKDF2_SHA256((const uint8_t*)input, inputlen, (const uint8_t*)input, inputlen, 1, (uint8_t *)X, 128);
- scrypt_core(X, V);
- PBKDF2_SHA256((const uint8_t*)input, inputlen, (uint8_t *)X, 128, 1, (uint8_t*)&result, 32);
-
- return result;
-}
-uint256 scrypt(const void* data, size_t datalen, const void* salt, size_t saltlen, void *scratchpad)
-{
- unsigned int *V;
- unsigned int X[32];
- uint256 result = 0;
- V = (unsigned int *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63));
+ uint32_t *V = (uint32_t *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63));
- PBKDF2_SHA256((const uint8_t*)data, datalen, (const uint8_t*)salt, saltlen, 1, (uint8_t *)X, 128);
+ PBKDF2_SHA256((const uint8_t*)input, 80, (const uint8_t*)input, 80, 1, (uint8_t *)X, 128);
scrypt_core(X, V);
- PBKDF2_SHA256((const uint8_t*)data, datalen, (uint8_t *)X, 128, 1, (uint8_t*)&result, 32);
+ PBKDF2_SHA256((const uint8_t*)input, 80, (uint8_t *)X, 128, 1, (uint8_t*)&result, 32);
return result;
}
-
-uint256 scrypt_hash(const void* input, size_t inputlen)
-{
- unsigned char scratchpad[SCRYPT_BUFFER_SIZE];
- return scrypt_nosalt(input, inputlen, scratchpad);
-}
-
-uint256 scrypt_salted_hash(const void* input, size_t inputlen, const void* salt, size_t saltlen)
-{
- unsigned char scratchpad[SCRYPT_BUFFER_SIZE];
- return scrypt(input, inputlen, salt, saltlen, scratchpad);
-}
-
-uint256 scrypt_salted_multiround_hash(const void* input, size_t inputlen, const void* salt, size_t saltlen, const unsigned int nRounds)
-{
- uint256 resultHash = scrypt_salted_hash(input, inputlen, salt, saltlen);
- uint256 transitionalHash = resultHash;
-
- for(unsigned int i = 1; i < nRounds; i++)
- {
- resultHash = scrypt_salted_hash(input, inputlen, (const void*)&transitionalHash, 32);
- transitionalHash = resultHash;
- }
-
- return resultHash;
-}
-
-uint256 scrypt_blockhash(const void* input)
-{
- unsigned char scratchpad[SCRYPT_BUFFER_SIZE];
- return scrypt_nosalt(input, 80, scratchpad);
-}
-