github.com/ebceco/ebc@v1.8.19-0.20190309150932-8cb0b9e06484/crypto/secp256k1/libsecp256k1/src/hash.h (about)

     1  /**********************************************************************
     2   * Copyright (c) 2014 Pieter Wuille                                   *
     3   * Distributed under the MIT software license, see the accompanying   *
     4   * file COPYING or http://www.opensource.org/licenses/mit-license.php.*
     5   **********************************************************************/
     6  
     7  #ifndef _SECP256K1_HASH_
     8  #define _SECP256K1_HASH_
     9  
    10  #include <stdlib.h>
    11  #include <stdint.h>
    12  
    13  typedef struct {
    14      uint32_t s[8];
    15      uint32_t buf[16]; /* In big endian */
    16      size_t bytes;
    17  } secp256k1_sha256_t;
    18  
    19  static void secp256k1_sha256_initialize(secp256k1_sha256_t *hash);
    20  static void secp256k1_sha256_write(secp256k1_sha256_t *hash, const unsigned char *data, size_t size);
    21  static void secp256k1_sha256_finalize(secp256k1_sha256_t *hash, unsigned char *out32);
    22  
    23  typedef struct {
    24      secp256k1_sha256_t inner, outer;
    25  } secp256k1_hmac_sha256_t;
    26  
    27  static void secp256k1_hmac_sha256_initialize(secp256k1_hmac_sha256_t *hash, const unsigned char *key, size_t size);
    28  static void secp256k1_hmac_sha256_write(secp256k1_hmac_sha256_t *hash, const unsigned char *data, size_t size);
    29  static void secp256k1_hmac_sha256_finalize(secp256k1_hmac_sha256_t *hash, unsigned char *out32);
    30  
    31  typedef struct {
    32      unsigned char v[32];
    33      unsigned char k[32];
    34      int retry;
    35  } secp256k1_rfc6979_hmac_sha256_t;
    36  
    37  static void secp256k1_rfc6979_hmac_sha256_initialize(secp256k1_rfc6979_hmac_sha256_t *rng, const unsigned char *key, size_t keylen);
    38  static void secp256k1_rfc6979_hmac_sha256_generate(secp256k1_rfc6979_hmac_sha256_t *rng, unsigned char *out, size_t outlen);
    39  static void secp256k1_rfc6979_hmac_sha256_finalize(secp256k1_rfc6979_hmac_sha256_t *rng);
    40  
    41  #endif