Use htole32 and htobe32 for endian conversions
This commit is contained in:
parent
a6dcf2ee6f
commit
933cb4cd9f
|
@ -24,16 +24,12 @@
|
|||
template<unsigned int N, unsigned int K>
|
||||
int Equihash<N,K>::InitialiseState(eh_HashState& base_state)
|
||||
{
|
||||
uint32_t n = htole32(N);
|
||||
uint32_t k = htole32(K);
|
||||
unsigned char personalization[crypto_generichash_blake2b_PERSONALBYTES] = {};
|
||||
memcpy(personalization, "ZcashPoW", 8);
|
||||
personalization[8] = N & 0xFF;
|
||||
personalization[9] = (N >> 8) & 0xFF;
|
||||
personalization[10] = (N >> 16) & 0xFF;
|
||||
personalization[11] = (N >> 24) & 0xFF;
|
||||
personalization[12] = K & 0xFF;
|
||||
personalization[13] = (K >> 8) & 0xFF;
|
||||
personalization[14] = (K >> 16) & 0xFF;
|
||||
personalization[15] = (K >> 24) & 0xFF;
|
||||
memcpy(personalization+8, &n, 4);
|
||||
memcpy(personalization+12, &k, 4);
|
||||
return crypto_generichash_blake2b_init_salt_personal(&base_state,
|
||||
NULL, 0, // No key.
|
||||
N/8,
|
||||
|
@ -45,24 +41,17 @@ int Equihash<N,K>::InitialiseState(eh_HashState& base_state)
|
|||
void EhIndexToArray(const eh_index i, unsigned char* array)
|
||||
{
|
||||
assert(sizeof(eh_index) == 4);
|
||||
array[0] = (i >> 24) & 0xFF;
|
||||
array[1] = (i >> 16) & 0xFF;
|
||||
array[2] = (i >> 8) & 0xFF;
|
||||
array[3] = i & 0xFF;
|
||||
eh_index bei = htobe32(i);
|
||||
memcpy(array, &bei, sizeof(eh_index));
|
||||
}
|
||||
|
||||
// Big-endian so that array comparison is equivalent to integer comparison
|
||||
eh_index ArrayToEhIndex(const unsigned char* array)
|
||||
{
|
||||
assert(sizeof(eh_index) == 4);
|
||||
eh_index ret {array[0]};
|
||||
ret <<= 8;
|
||||
ret |= array[1];
|
||||
ret <<= 8;
|
||||
ret |= array[2];
|
||||
ret <<= 8;
|
||||
ret |= array[3];
|
||||
return ret;
|
||||
eh_index bei;
|
||||
memcpy(&bei, array, sizeof(eh_index));
|
||||
return be32toh(bei);
|
||||
}
|
||||
|
||||
eh_trunc TruncateIndex(const eh_index i, const unsigned int ilen)
|
||||
|
@ -84,10 +73,8 @@ StepRow<WIDTH>::StepRow(unsigned int n, const eh_HashState& base_state, eh_index
|
|||
eh_HashState state;
|
||||
state = base_state;
|
||||
unsigned char array[sizeof(eh_index)];
|
||||
array[0] = i & 0xFF;
|
||||
array[1] = (i >> 8) & 0xFF;
|
||||
array[2] = (i >> 16) & 0xFF;
|
||||
array[3] = (i >> 24) & 0xFF;
|
||||
eh_index lei = htole32(i);
|
||||
memcpy(array, &lei, sizeof(eh_index));
|
||||
crypto_generichash_blake2b_update(&state, array, sizeof(eh_index));
|
||||
crypto_generichash_blake2b_final(&state, hash, n/8);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue