/ src / secp256k1 / src / selftest.h
selftest.h
 1  /***********************************************************************
 2   * Copyright (c) 2020 Pieter Wuille                                    *
 3   * Distributed under the MIT software license, see the accompanying    *
 4   * file COPYING or https://www.opensource.org/licenses/mit-license.php.*
 5   ***********************************************************************/
 6  
 7  #ifndef SECP256K1_SELFTEST_H
 8  #define SECP256K1_SELFTEST_H
 9  
10  #include "hash.h"
11  
12  #include <string.h>
13  
14  static int secp256k1_selftest_sha256(secp256k1_sha256_compression_function fn_compression) {
15      secp256k1_hash_ctx hash_ctx;
16      static const char *input63 = "For this sample, this 63-byte string will be used as input data";
17      static const unsigned char output32[32] = {
18          0xf0, 0x8a, 0x78, 0xcb, 0xba, 0xee, 0x08, 0x2b, 0x05, 0x2a, 0xe0, 0x70, 0x8f, 0x32, 0xfa, 0x1e,
19          0x50, 0xc5, 0xc4, 0x21, 0xaa, 0x77, 0x2b, 0xa5, 0xdb, 0xb4, 0x06, 0xa2, 0xea, 0x6b, 0xe3, 0x42,
20      };
21      unsigned char out[32];
22      secp256k1_sha256 hasher;
23      secp256k1_sha256_initialize(&hasher);
24      hash_ctx.fn_sha256_compression = fn_compression;
25      secp256k1_sha256_write(&hash_ctx, &hasher, (const unsigned char*)input63, 63);
26      secp256k1_sha256_finalize(&hash_ctx, &hasher, out);
27      return secp256k1_memcmp_var(out, output32, 32) == 0;
28  }
29  
30  static int secp256k1_selftest_passes(void) {
31      /* Use default sha256 compression */
32      return secp256k1_selftest_sha256(secp256k1_sha256_transform);
33  }
34  
35  #endif /* SECP256K1_SELFTEST_H */