mirror of
https://github.com/JayDDee/cpuminer-opt.git
synced 2025-09-17 23:44:27 +00:00
v3.12.7
This commit is contained in:
@@ -31,6 +31,7 @@
|
||||
#undef HUGEPAGE_SIZE
|
||||
#endif
|
||||
|
||||
/*
|
||||
static __inline uint32_t
|
||||
le32dec(const void *pp)
|
||||
{
|
||||
@@ -50,6 +51,7 @@ le32enc(void *pp, uint32_t x)
|
||||
p[2] = (x >> 16) & 0xff;
|
||||
p[3] = (x >> 24) & 0xff;
|
||||
}
|
||||
*/
|
||||
|
||||
static void *
|
||||
alloc_region(yescrypt_region_t * region, size_t size)
|
||||
@@ -154,7 +156,7 @@ int yescrypt_init_shared(yescrypt_shared_t * shared, const uint8_t * param, size
|
||||
if (yescrypt_kdf(&dummy, shared1,
|
||||
param, paramlen, NULL, 0, N, r, p, 0,
|
||||
YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_1,
|
||||
salt, sizeof(salt)))
|
||||
salt, sizeof(salt), 0 ) )
|
||||
goto out;
|
||||
|
||||
half1 = half2 = *shared;
|
||||
@@ -166,19 +168,19 @@ int yescrypt_init_shared(yescrypt_shared_t * shared, const uint8_t * param, size
|
||||
if (p > 1 && yescrypt_kdf(&half1, &half2.shared1,
|
||||
param, paramlen, salt, sizeof(salt), N, r, p, 0,
|
||||
YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_2,
|
||||
salt, sizeof(salt)))
|
||||
salt, sizeof(salt), 0 ))
|
||||
goto out;
|
||||
|
||||
if (yescrypt_kdf(&half2, &half1.shared1,
|
||||
param, paramlen, salt, sizeof(salt), N, r, p, 0,
|
||||
YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_1,
|
||||
salt, sizeof(salt)))
|
||||
salt, sizeof(salt), 0))
|
||||
goto out;
|
||||
|
||||
if (yescrypt_kdf(&half1, &half2.shared1,
|
||||
param, paramlen, salt, sizeof(salt), N, r, p, 0,
|
||||
YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_1,
|
||||
buf, buflen))
|
||||
buf, buflen, 0))
|
||||
goto out;
|
||||
|
||||
shared->mask1 = mask;
|
||||
|
@@ -1149,7 +1149,7 @@ yescrypt_kdf(const yescrypt_shared_t * shared, yescrypt_local_t * local,
|
||||
const uint8_t * passwd, size_t passwdlen,
|
||||
const uint8_t * salt, size_t saltlen,
|
||||
uint64_t N, uint32_t r, uint32_t p, uint32_t t, yescrypt_flags_t flags,
|
||||
uint8_t * buf, size_t buflen)
|
||||
uint8_t * buf, size_t buflen, int thrid )
|
||||
{
|
||||
uint8_t _ALIGN(128) sha256[32];
|
||||
yescrypt_region_t tmp;
|
||||
@@ -1157,6 +1157,7 @@ yescrypt_kdf(const yescrypt_shared_t * shared, yescrypt_local_t * local,
|
||||
size_t B_size, V_size, XY_size, need;
|
||||
uint8_t * B, * S;
|
||||
salsa20_blk_t * V, * XY;
|
||||
int retval = 1;
|
||||
|
||||
/*
|
||||
* YESCRYPT_PARALLEL_SMIX is a no-op at p = 1 for its intended purpose,
|
||||
@@ -1312,6 +1313,12 @@ yescrypt_kdf(const yescrypt_shared_t * shared, yescrypt_local_t * local,
|
||||
/* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
|
||||
PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, B_size);
|
||||
|
||||
if ( work_restart[thrid].restart )
|
||||
{
|
||||
retval = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (t || flags)
|
||||
memcpy(sha256, B, sizeof(sha256));
|
||||
|
||||
@@ -1339,9 +1346,21 @@ yescrypt_kdf(const yescrypt_shared_t * shared, yescrypt_local_t * local,
|
||||
}
|
||||
}
|
||||
|
||||
if ( work_restart[thrid].restart )
|
||||
{
|
||||
retval = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
|
||||
PBKDF2_SHA256(passwd, passwdlen, B, B_size, 1, buf, buflen);
|
||||
|
||||
if ( work_restart[thrid].restart )
|
||||
{
|
||||
retval = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* Except when computing classic scrypt, allow all computation so far
|
||||
* to be performed on the client. The final steps below match those of
|
||||
@@ -1370,9 +1389,10 @@ yescrypt_kdf(const yescrypt_shared_t * shared, yescrypt_local_t * local,
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
if (free_region(&tmp))
|
||||
return -1;
|
||||
|
||||
/* Success! */
|
||||
return 0;
|
||||
return retval;
|
||||
}
|
||||
|
@@ -106,7 +106,8 @@ static const uint8_t* decode64_uint32(uint32_t* dst, uint32_t dstbits, const uin
|
||||
}
|
||||
|
||||
uint8_t* yescrypt_r(const yescrypt_shared_t* shared, yescrypt_local_t* local,
|
||||
const uint8_t* passwd, size_t passwdlen, const uint8_t* setting, uint8_t* buf, size_t buflen)
|
||||
const uint8_t* passwd, size_t passwdlen, const uint8_t* setting,
|
||||
uint8_t* buf, size_t buflen, int thrid )
|
||||
{
|
||||
uint8_t hash[HASH_SIZE];
|
||||
const uint8_t * src, * salt;
|
||||
@@ -210,7 +211,9 @@ uint8_t* yescrypt_r(const yescrypt_shared_t* shared, yescrypt_local_t* local,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (yescrypt_kdf(shared, local, passwd, passwdlen, salt, saltlen, N, r, p, 0, flags, hash, sizeof(hash))) {
|
||||
if ( yescrypt_kdf( shared, local, passwd, passwdlen, salt, saltlen, N, r, p,
|
||||
0, flags, hash, sizeof(hash), thrid ) == -1 )
|
||||
{
|
||||
printf("died10 ...");
|
||||
fflush(stdout);
|
||||
return NULL;
|
||||
@@ -237,7 +240,7 @@ uint8_t* yescrypt_r(const yescrypt_shared_t* shared, yescrypt_local_t* local,
|
||||
return buf;
|
||||
}
|
||||
|
||||
uint8_t* yescrypt(const uint8_t* passwd, const uint8_t* setting)
|
||||
uint8_t* yescrypt(const uint8_t* passwd, const uint8_t* setting, int thrid )
|
||||
{
|
||||
static uint8_t buf[4 + 1 + 5 + 5 + BYTES2CHARS(32) + 1 + HASH_LEN + 1];
|
||||
yescrypt_shared_t shared;
|
||||
@@ -252,7 +255,7 @@ uint8_t* yescrypt(const uint8_t* passwd, const uint8_t* setting)
|
||||
return NULL;
|
||||
}
|
||||
retval = yescrypt_r(&shared, &local,
|
||||
passwd, 80, setting, buf, sizeof(buf));
|
||||
passwd, 80, setting, buf, sizeof(buf), thrid );
|
||||
//printf("hashse='%s'\n", (char *)retval);
|
||||
if (yescrypt_free_local(&local)) {
|
||||
yescrypt_free_shared(&shared);
|
||||
@@ -329,7 +332,7 @@ uint8_t* yescrypt_gensalt(uint32_t N_log2, uint32_t r, uint32_t p, yescrypt_flag
|
||||
|
||||
static int yescrypt_bsty(const uint8_t * passwd, size_t passwdlen,
|
||||
const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
|
||||
uint8_t * buf, size_t buflen)
|
||||
uint8_t * buf, size_t buflen, int thrid )
|
||||
{
|
||||
static __thread int initialized = 0;
|
||||
static __thread yescrypt_shared_t shared;
|
||||
@@ -349,7 +352,7 @@ static int yescrypt_bsty(const uint8_t * passwd, size_t passwdlen,
|
||||
}
|
||||
retval = yescrypt_kdf(&shared, &local,
|
||||
passwd, passwdlen, salt, saltlen, N, r, p, 0, YESCRYPT_FLAGS,
|
||||
buf, buflen);
|
||||
buf, buflen, thrid );
|
||||
#if 0
|
||||
if (yescrypt_free_local(&local)) {
|
||||
yescrypt_free_shared(&shared);
|
||||
@@ -370,16 +373,16 @@ char *yescrypt_client_key = NULL;
|
||||
int yescrypt_client_key_len = 0;
|
||||
|
||||
/* main hash 80 bytes input */
|
||||
void yescrypt_hash( const char *input, char *output, uint32_t len )
|
||||
int yescrypt_hash( const char *input, char *output, uint32_t len, int thrid )
|
||||
{
|
||||
yescrypt_bsty( (uint8_t*)input, len, (uint8_t*)input, len, YESCRYPT_N,
|
||||
YESCRYPT_R, YESCRYPT_P, (uint8_t*)output, 32 );
|
||||
return yescrypt_bsty( (uint8_t*)input, len, (uint8_t*)input, len, YESCRYPT_N,
|
||||
YESCRYPT_R, YESCRYPT_P, (uint8_t*)output, 32, thrid );
|
||||
}
|
||||
|
||||
/* for util.c test */
|
||||
void yescrypthash(void *output, const void *input)
|
||||
int yescrypthash(void *output, const void *input, int thrid)
|
||||
{
|
||||
yescrypt_hash((char*) input, (char*) output, 80);
|
||||
return yescrypt_hash((char*) input, (char*) output, 80, thrid);
|
||||
}
|
||||
|
||||
int scanhash_yescrypt( struct work *work, uint32_t max_nonce,
|
||||
@@ -392,13 +395,13 @@ int scanhash_yescrypt( struct work *work, uint32_t max_nonce,
|
||||
const uint32_t first_nonce = pdata[19];
|
||||
const uint32_t last_nonce = max_nonce;
|
||||
uint32_t n = first_nonce;
|
||||
int thr_id = mythr->id; // thr_id arg is deprecated
|
||||
int thr_id = mythr->id;
|
||||
|
||||
for ( int k = 0; k < 19; k++ )
|
||||
be32enc( &endiandata[k], pdata[k] );
|
||||
endiandata[19] = n;
|
||||
do {
|
||||
yescrypt_hash((char*) endiandata, (char*) vhash, 80);
|
||||
if ( yescrypt_hash((char*) endiandata, (char*) vhash, 80, thr_id ) )
|
||||
if unlikely( valid_hash( vhash, ptarget ) && !opt_benchmark )
|
||||
{
|
||||
be32enc( pdata+19, n );
|
||||
|
@@ -38,12 +38,13 @@ extern "C" {
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h> /* for size_t */
|
||||
#include <stdbool.h>
|
||||
#include "miner.h"
|
||||
|
||||
//#define __SSE4_1__
|
||||
|
||||
void yescrypt_hash(const char* input, char* output, uint32_t len);
|
||||
int yescrypt_hash(const char* input, char* output, uint32_t len, int thrid );
|
||||
|
||||
void yescrypthash(void *output, const void *input);
|
||||
int yescrypthash(void *output, const void *input, int thrid );
|
||||
|
||||
/**
|
||||
* crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
|
||||
@@ -301,7 +302,7 @@ extern int yescrypt_kdf(const yescrypt_shared_t * __shared,
|
||||
const uint8_t * __salt, size_t __saltlen,
|
||||
uint64_t __N, uint32_t __r, uint32_t __p, uint32_t __t,
|
||||
yescrypt_flags_t __flags,
|
||||
uint8_t * __buf, size_t __buflen);
|
||||
uint8_t * __buf, size_t __buflen, int thrid);
|
||||
|
||||
/**
|
||||
* yescrypt_r(shared, local, passwd, passwdlen, setting, buf, buflen):
|
||||
@@ -321,7 +322,7 @@ extern uint8_t * yescrypt_r(const yescrypt_shared_t * __shared,
|
||||
yescrypt_local_t * __local,
|
||||
const uint8_t * __passwd, size_t __passwdlen,
|
||||
const uint8_t * __setting,
|
||||
uint8_t * __buf, size_t __buflen);
|
||||
uint8_t * __buf, size_t __buflen, int thrid);
|
||||
|
||||
/**
|
||||
* yescrypt(passwd, setting):
|
||||
@@ -339,7 +340,7 @@ extern uint8_t * yescrypt_r(const yescrypt_shared_t * __shared,
|
||||
*
|
||||
* MT-unsafe.
|
||||
*/
|
||||
extern uint8_t * yescrypt(const uint8_t * __passwd, const uint8_t * __setting);
|
||||
extern uint8_t * yescrypt(const uint8_t * __passwd, const uint8_t * __setting, int thrid );
|
||||
|
||||
/**
|
||||
* yescrypt_gensalt_r(N_log2, r, p, flags, src, srclen, buf, buflen):
|
||||
|
Reference in New Issue
Block a user