linux/include/crypto/sha.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Common values for SHA algorithms
   4 */
   5
   6#ifndef _CRYPTO_SHA_H
   7#define _CRYPTO_SHA_H
   8
   9#include <linux/types.h>
  10
  11#define SHA1_DIGEST_SIZE        20
  12#define SHA1_BLOCK_SIZE         64
  13
  14#define SHA224_DIGEST_SIZE      28
  15#define SHA224_BLOCK_SIZE       64
  16
  17#define SHA256_DIGEST_SIZE      32
  18#define SHA256_BLOCK_SIZE       64
  19
  20#define SHA384_DIGEST_SIZE      48
  21#define SHA384_BLOCK_SIZE       128
  22
  23#define SHA512_DIGEST_SIZE      64
  24#define SHA512_BLOCK_SIZE       128
  25
  26#define SHA1_H0         0x67452301UL
  27#define SHA1_H1         0xefcdab89UL
  28#define SHA1_H2         0x98badcfeUL
  29#define SHA1_H3         0x10325476UL
  30#define SHA1_H4         0xc3d2e1f0UL
  31
  32#define SHA224_H0       0xc1059ed8UL
  33#define SHA224_H1       0x367cd507UL
  34#define SHA224_H2       0x3070dd17UL
  35#define SHA224_H3       0xf70e5939UL
  36#define SHA224_H4       0xffc00b31UL
  37#define SHA224_H5       0x68581511UL
  38#define SHA224_H6       0x64f98fa7UL
  39#define SHA224_H7       0xbefa4fa4UL
  40
  41#define SHA256_H0       0x6a09e667UL
  42#define SHA256_H1       0xbb67ae85UL
  43#define SHA256_H2       0x3c6ef372UL
  44#define SHA256_H3       0xa54ff53aUL
  45#define SHA256_H4       0x510e527fUL
  46#define SHA256_H5       0x9b05688cUL
  47#define SHA256_H6       0x1f83d9abUL
  48#define SHA256_H7       0x5be0cd19UL
  49
  50#define SHA384_H0       0xcbbb9d5dc1059ed8ULL
  51#define SHA384_H1       0x629a292a367cd507ULL
  52#define SHA384_H2       0x9159015a3070dd17ULL
  53#define SHA384_H3       0x152fecd8f70e5939ULL
  54#define SHA384_H4       0x67332667ffc00b31ULL
  55#define SHA384_H5       0x8eb44a8768581511ULL
  56#define SHA384_H6       0xdb0c2e0d64f98fa7ULL
  57#define SHA384_H7       0x47b5481dbefa4fa4ULL
  58
  59#define SHA512_H0       0x6a09e667f3bcc908ULL
  60#define SHA512_H1       0xbb67ae8584caa73bULL
  61#define SHA512_H2       0x3c6ef372fe94f82bULL
  62#define SHA512_H3       0xa54ff53a5f1d36f1ULL
  63#define SHA512_H4       0x510e527fade682d1ULL
  64#define SHA512_H5       0x9b05688c2b3e6c1fULL
  65#define SHA512_H6       0x1f83d9abfb41bd6bULL
  66#define SHA512_H7       0x5be0cd19137e2179ULL
  67
  68extern const u8 sha1_zero_message_hash[SHA1_DIGEST_SIZE];
  69
  70extern const u8 sha224_zero_message_hash[SHA224_DIGEST_SIZE];
  71
  72extern const u8 sha256_zero_message_hash[SHA256_DIGEST_SIZE];
  73
  74extern const u8 sha384_zero_message_hash[SHA384_DIGEST_SIZE];
  75
  76extern const u8 sha512_zero_message_hash[SHA512_DIGEST_SIZE];
  77
  78struct sha1_state {
  79        u32 state[SHA1_DIGEST_SIZE / 4];
  80        u64 count;
  81        u8 buffer[SHA1_BLOCK_SIZE];
  82};
  83
  84struct sha256_state {
  85        u32 state[SHA256_DIGEST_SIZE / 4];
  86        u64 count;
  87        u8 buf[SHA256_BLOCK_SIZE];
  88};
  89
  90struct sha512_state {
  91        u64 state[SHA512_DIGEST_SIZE / 8];
  92        u64 count[2];
  93        u8 buf[SHA512_BLOCK_SIZE];
  94};
  95
  96struct shash_desc;
  97
  98extern int crypto_sha1_update(struct shash_desc *desc, const u8 *data,
  99                              unsigned int len);
 100
 101extern int crypto_sha1_finup(struct shash_desc *desc, const u8 *data,
 102                             unsigned int len, u8 *hash);
 103
 104extern int crypto_sha256_update(struct shash_desc *desc, const u8 *data,
 105                              unsigned int len);
 106
 107extern int crypto_sha256_finup(struct shash_desc *desc, const u8 *data,
 108                               unsigned int len, u8 *hash);
 109
 110extern int crypto_sha512_update(struct shash_desc *desc, const u8 *data,
 111                              unsigned int len);
 112
 113extern int crypto_sha512_finup(struct shash_desc *desc, const u8 *data,
 114                               unsigned int len, u8 *hash);
 115#endif
 116