Add SHA256 dispatcher
This commit is contained in:
parent
4d50f38fe0
commit
2991c91d88
5 changed files with 23 additions and 2 deletions
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "bench.h"
|
||||
|
||||
#include "crypto/sha256.h"
|
||||
#include "key.h"
|
||||
#include "validation.h"
|
||||
#include "util.h"
|
||||
|
@ -12,6 +13,7 @@
|
|||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
SHA256AutoDetect();
|
||||
RandomInit();
|
||||
ECC_Start();
|
||||
SetupEnvironment();
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include <atomic>
|
||||
|
||||
// Internal implementation code.
|
||||
namespace
|
||||
{
|
||||
|
@ -131,8 +133,15 @@ void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
|
|||
}
|
||||
|
||||
} // namespace sha256
|
||||
|
||||
void (*Transform)(uint32_t*, const unsigned char*, size_t) = sha256::Transform;
|
||||
|
||||
} // namespace
|
||||
|
||||
std::string SHA256AutoDetect()
|
||||
{
|
||||
return "standard";
|
||||
}
|
||||
|
||||
////// SHA-256
|
||||
|
||||
|
@ -150,12 +159,12 @@ CSHA256& CSHA256::Write(const unsigned char* data, size_t len)
|
|||
memcpy(buf + bufsize, data, 64 - bufsize);
|
||||
bytes += 64 - bufsize;
|
||||
data += 64 - bufsize;
|
||||
sha256::Transform(s, buf, 1);
|
||||
Transform(s, buf, 1);
|
||||
bufsize = 0;
|
||||
}
|
||||
if (end - data >= 64) {
|
||||
size_t blocks = (end - data) / 64;
|
||||
sha256::Transform(s, data, blocks);
|
||||
Transform(s, data, blocks);
|
||||
data += 64 * blocks;
|
||||
bytes += 64 * blocks;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
|
||||
/** A hasher class for SHA-256. */
|
||||
class CSHA256
|
||||
|
@ -25,4 +26,9 @@ public:
|
|||
CSHA256& Reset();
|
||||
};
|
||||
|
||||
/** Autodetect the best available SHA256 implementation.
|
||||
* Returns the name of the implementation.
|
||||
*/
|
||||
std::string SHA256AutoDetect();
|
||||
|
||||
#endif // BITCOIN_CRYPTO_SHA256_H
|
||||
|
|
|
@ -1161,6 +1161,8 @@ bool AppInitSanityChecks()
|
|||
// ********************************************************* Step 4: sanity checks
|
||||
|
||||
// Initialize elliptic curve code
|
||||
std::string sha256_algo = SHA256AutoDetect();
|
||||
LogPrintf("Using the '%s' SHA256 implementation\n", sha256_algo);
|
||||
RandomInit();
|
||||
ECC_Start();
|
||||
globalVerifyHandle.reset(new ECCVerifyHandle());
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "chainparams.h"
|
||||
#include "consensus/consensus.h"
|
||||
#include "consensus/validation.h"
|
||||
#include "crypto/sha256.h"
|
||||
#include "fs.h"
|
||||
#include "key.h"
|
||||
#include "validation.h"
|
||||
|
@ -33,6 +34,7 @@ extern void noui_connect();
|
|||
|
||||
BasicTestingSetup::BasicTestingSetup(const std::string& chainName)
|
||||
{
|
||||
SHA256AutoDetect();
|
||||
RandomInit();
|
||||
ECC_Start();
|
||||
SetupEnvironment();
|
||||
|
|
Loading…
Reference in a new issue