Reorganize scrypt includes
[novacoin.git] / src / scrypt-generic.cpp
index fa7b5e0..aa07892 100644 (file)
@@ -1,4 +1,4 @@
-/*-
+/*
  * Copyright 2009 Colin Percival, 2011 ArtForz, 2011 pooler, 2013 Balthazar
  * All rights reserved.
  *
@@ -27,9 +27,6 @@
  * online backup system.
  */
 
-#include <string.h>
-#include <openssl/evp.h>
-
 #include "scrypt.h"
 
 #ifdef _MSC_VER
@@ -108,10 +105,21 @@ static INLINE void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
     B[15] += x15;
 }
 
-INLINE 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 uint8_t* input)
 {
-    uint16_t i, j, k;
+    uint8_t scratchpad[SCRYPT_BUFFER_SIZE];
+    uint32_t X[32];
+    uint256 result = 0;
+
+    uint32_t *V = (uint32_t *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63));
 
+    PKCS5_PBKDF2_HMAC((const char*)input, 80, input, 80, 1, EVP_sha256(), 128, (unsigned char *)X);
+
+    uint16_t i, j, k;
     for (i = 0; i < 1024; i++) {
         memcpy(&V[i * 32], X, 128);
         xor_salsa8(&X[0], &X[16]);
@@ -124,22 +132,7 @@ INLINE void scrypt_core(uint32_t *X, uint32_t *V)
         xor_salsa8(&X[0], &X[16]);
         xor_salsa8(&X[16], &X[0]);
     }
-}
-
-/* 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 uint8_t* input)
-{
-    uint8_t scratchpad[SCRYPT_BUFFER_SIZE];
-    uint32_t X[32];
-    uint256 result = 0;
 
-    uint32_t *V = (uint32_t *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63));
-
-    PKCS5_PBKDF2_HMAC((const char*)input, 80, input, 80, 1, EVP_sha256(), 128, (unsigned char *)X);
-    scrypt_core(X, V);
     PKCS5_PBKDF2_HMAC((const char*)input, 80, (const unsigned char*)X, 128, 1, EVP_sha256(), 32, (unsigned char*)&result);
 
     return result;