-
Notifications
You must be signed in to change notification settings - Fork 779
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[SECP256K1] Add fallback LE/BE for architectures with known endiannes…
…s + SHA256 selftest Summary: ``` These are all the architecture macros I could find with known endianness. Use those as a fallback when BYTE_ORDER isn't available. See #787 (comment) It also adds a SHA256 selftest, so that improperly overriding the endianness detection will be detected at runtime. ``` Backport of secp256k1 [[bitcoin-core/secp256k1#799 | PR799]]. Test Plan: ninja check-secp256k1 Reviewers: #bitcoin_abc, deadalnix Reviewed By: #bitcoin_abc, deadalnix Differential Revision: https://reviews.bitcoinabc.org/D8036
- Loading branch information
Showing
4 changed files
with
54 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/********************************************************************** | ||
* Copyright (c) 2020 Pieter Wuille * | ||
* Distributed under the MIT software license, see the accompanying * | ||
* file COPYING or http://www.opensource.org/licenses/mit-license.php.* | ||
**********************************************************************/ | ||
|
||
#ifndef SECP256K1_SELFTEST_H | ||
#define SECP256K1_SELFTEST_H | ||
|
||
#include "hash.h" | ||
|
||
#include <string.h> | ||
|
||
static int secp256k1_selftest_sha256(void) { | ||
static const char *input63 = "For this sample, this 63-byte string will be used as input data"; | ||
static const unsigned char output32[32] = { | ||
0xf0, 0x8a, 0x78, 0xcb, 0xba, 0xee, 0x08, 0x2b, 0x05, 0x2a, 0xe0, 0x70, 0x8f, 0x32, 0xfa, 0x1e, | ||
0x50, 0xc5, 0xc4, 0x21, 0xaa, 0x77, 0x2b, 0xa5, 0xdb, 0xb4, 0x06, 0xa2, 0xea, 0x6b, 0xe3, 0x42, | ||
}; | ||
unsigned char out[32]; | ||
secp256k1_sha256 hasher; | ||
secp256k1_sha256_initialize(&hasher); | ||
secp256k1_sha256_write(&hasher, (const unsigned char*)input63, 63); | ||
secp256k1_sha256_finalize(&hasher, out); | ||
return memcmp(out, output32, 32) == 0; | ||
} | ||
|
||
static int secp256k1_selftest(void) { | ||
return secp256k1_selftest_sha256(); | ||
} | ||
|
||
#endif /* SECP256K1_SELFTEST_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters