uint256 GetHash() const
{
- return scrypt_blockhash(CVOIDBEGIN(nVersion));
+ return scrypt_blockhash((const uint8_t*)&nVersion);
}
int64_t GetBlockTime() const
// Generic scrypt_core implementation
-static INLINE void xor_salsa8(unsigned int B[16], const unsigned int Bx[16])
+static INLINE void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
{
- unsigned int x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
- int i;
+ uint32_t x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
+ int8_t i;
x00 = (B[0] ^= Bx[0]);
x01 = (B[1] ^= Bx[1]);
B[15] += x15;
}
-void scrypt_core(unsigned int *X, unsigned int *V)
+void scrypt_core(uint32_t *X, uint32_t *V)
{
- unsigned int i, j, k;
+ uint16_t i, k;
+ uint32_t j;
for (i = 0; i < 1024; i++) {
memcpy(&V[i * 32], X, 128);
#define SCRYPT_BUFFER_SIZE (131072 + 63)
-extern "C" void scrypt_core(unsigned int *X, unsigned int *V);
+extern "C" void scrypt_core(uint32_t *X, uint32_t *V);
/* cpu and memory intensive function to transform a 80 byte buffer into a 32 byte output
scratchpad size needs to be at least 63 + (128 * r * p) + (256 * r + 64) + (128 * r * N) bytes
r = 1, p = 1, N = 1024
*/
-uint256 scrypt_blockhash(const void* input)
+uint256 scrypt_blockhash(const uint8_t* input)
{
uint8_t scratchpad[SCRYPT_BUFFER_SIZE];
uint32_t X[32];
uint32_t *V = (uint32_t *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63));
- PBKDF2_SHA256((const uint8_t*)input, 80, (const uint8_t*)input, 80, 1, (uint8_t *)X, 128);
+ PBKDF2_SHA256(input, 80, input, 80, 1, (uint8_t *)X, 128);
scrypt_core(X, V);
- PBKDF2_SHA256((const uint8_t*)input, 80, (uint8_t *)X, 128, 1, (uint8_t*)&result, 32);
+ PBKDF2_SHA256(input, 80, (uint8_t *)X, 128, 1, (uint8_t*)&result, 32);
return result;
}
#include "util.h"
#include "net.h"
-uint256 scrypt_blockhash(const void* input);
+uint256 scrypt_blockhash(const uint8_t* input);
#endif // SCRYPT_MINE_H