- Timestamp:
- Feb 7, 2019, 8:36:33 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_arm/trunk/wolfssl-3.12.2/wolfssl/wolfcrypt/hmac.h
r352 r372 20 20 */ 21 21 22 22 /*! 23 \file wolfssl/wolfcrypt/hmac.h 24 */ 23 25 24 26 #ifndef NO_HMAC … … 27 29 #define WOLF_CRYPT_HMAC_H 28 30 29 #include <wolfssl/wolfcrypt/ types.h>31 #include <wolfssl/wolfcrypt/hash.h> 30 32 31 #ifndef NO_MD5 32 #include <wolfssl/wolfcrypt/md5.h> 33 #if defined(HAVE_FIPS) && \ 34 (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) 35 /* for fips @wc_fips */ 36 #include <cyassl/ctaocrypt/hmac.h> 37 #define WC_HMAC_BLOCK_SIZE HMAC_BLOCK_SIZE 33 38 #endif 34 39 35 #ifndef NO_SHA 36 #include <wolfssl/wolfcrypt/sha.h> 40 41 #if defined(HAVE_FIPS) && \ 42 defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) 43 #include <wolfssl/wolfcrypt/fips.h> 37 44 #endif 38 39 #if !defined(NO_SHA256) || defined(WOLFSSL_SHA224)40 #include <wolfssl/wolfcrypt/sha256.h>41 #endif42 43 #ifdef WOLFSSL_SHA51244 #include <wolfssl/wolfcrypt/sha512.h>45 #endif46 47 #ifdef HAVE_BLAKE248 #include <wolfssl/wolfcrypt/blake2.h>49 #endif50 51 #ifdef HAVE_FIPS52 /* for fips */53 #include <cyassl/ctaocrypt/hmac.h>54 #endif55 56 45 57 46 #ifdef __cplusplus 58 47 extern "C" { 59 48 #endif 60 #ifndef HAVE_FIPS 49 50 /* avoid redefinition of structs */ 51 #if !defined(HAVE_FIPS) || \ 52 (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) 61 53 62 54 #ifdef WOLFSSL_ASYNC_CRYPT 63 55 #include <wolfssl/wolfcrypt/async.h> 56 #endif 57 58 #ifndef NO_OLD_WC_NAMES 59 #define HMAC_BLOCK_SIZE WC_HMAC_BLOCK_SIZE 64 60 #endif 65 61 … … 72 68 /* If any hash is not enabled, add the ID here. */ 73 69 #ifdef NO_MD5 74 WC_MD5 = 0,70 WC_MD5 = WC_HASH_TYPE_MD5, 75 71 #endif 76 72 #ifdef NO_SHA 77 WC_SHA = 1,73 WC_SHA = WC_HASH_TYPE_SHA, 78 74 #endif 79 75 #ifdef NO_SHA256 80 WC_SHA256 = 2,76 WC_SHA256 = WC_HASH_TYPE_SHA256, 81 77 #endif 82 78 #ifndef WOLFSSL_SHA512 83 WC_SHA512 = 4,79 WC_SHA512 = WC_HASH_TYPE_SHA512, 84 80 #endif 85 81 #ifndef WOLFSSL_SHA384 86 WC_SHA384 = 5,82 WC_SHA384 = WC_HASH_TYPE_SHA384, 87 83 #endif 88 84 #ifndef HAVE_BLAKE2 89 BLAKE2B_ID = 7,85 BLAKE2B_ID = WC_HASH_TYPE_BLAKE2B, 90 86 #endif 91 87 #ifndef WOLFSSL_SHA224 92 WC_SHA224 = 8,88 WC_SHA224 = WC_HASH_TYPE_SHA224, 93 89 #endif 94 90 #ifndef WOLFSSL_SHA3 91 WC_SHA3_224 = WC_HASH_TYPE_SHA3_224, 92 WC_SHA3_256 = WC_HASH_TYPE_SHA3_256, 93 WC_SHA3_384 = WC_HASH_TYPE_SHA3_384, 94 WC_SHA3_512 = WC_HASH_TYPE_SHA3_512, 95 #endif 96 }; 95 97 96 98 /* Select the largest available hash for the buffer size. */ 97 #if defined(WOLFSSL_SHA512) 98 MAX_DIGEST_SIZE = WC_SHA512_DIGEST_SIZE, 99 HMAC_BLOCK_SIZE = WC_SHA512_BLOCK_SIZE, 100 #elif defined(HAVE_BLAKE2) 101 MAX_DIGEST_SIZE = BLAKE2B_OUTBYTES, 102 HMAC_BLOCK_SIZE = BLAKE2B_BLOCKBYTES, 103 #elif defined(WOLFSSL_SHA384) 104 MAX_DIGEST_SIZE = WC_SHA384_DIGEST_SIZE, 105 HMAC_BLOCK_SIZE = WC_SHA384_BLOCK_SIZE 106 #elif !defined(NO_SHA256) 107 MAX_DIGEST_SIZE = WC_SHA256_DIGEST_SIZE, 108 HMAC_BLOCK_SIZE = WC_SHA256_BLOCK_SIZE 109 #elif defined(WOLFSSL_SHA224) 110 MAX_DIGEST_SIZE = WC_SHA224_DIGEST_SIZE, 111 HMAC_BLOCK_SIZE = WC_SHA224_BLOCK_SIZE 112 #elif !defined(NO_SHA) 113 MAX_DIGEST_SIZE = WC_SHA_DIGEST_SIZE, 114 HMAC_BLOCK_SIZE = WC_SHA_BLOCK_SIZE, 115 #elif !defined(NO_MD5) 116 MAX_DIGEST_SIZE = WC_MD5_DIGEST_SIZE, 117 HMAC_BLOCK_SIZE = WC_MD5_BLOCK_SIZE, 118 #else 99 #define WC_HMAC_BLOCK_SIZE WC_MAX_BLOCK_SIZE 100 101 #if !defined(WOLFSSL_SHA3) && !defined(WOLFSSL_SHA512) && !defined(HAVE_BLAKE2) && \ 102 !defined(WOLFSSL_SHA384) && defined(NO_SHA256) && defined(WOLFSSL_SHA224) && \ 103 defined(NO_SHA) && defined(NO_MD5) 119 104 #error "You have to have some kind of hash if you want to use HMAC." 120 105 #endif 121 };122 106 123 107 … … 136 120 wc_Sha256 sha256; 137 121 #endif 138 #ifdef WOLFSSL_SHA512139 122 #ifdef WOLFSSL_SHA384 140 123 wc_Sha384 sha384; 141 124 #endif 125 #ifdef WOLFSSL_SHA512 142 126 wc_Sha512 sha512; 143 127 #endif 144 128 #ifdef HAVE_BLAKE2 145 129 Blake2b blake2b; 130 #endif 131 #ifdef WOLFSSL_SHA3 132 wc_Sha3 sha3; 146 133 #endif 147 134 } Hash; … … 150 137 typedef struct Hmac { 151 138 Hash hash; 152 word32 ipad[ HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/153 word32 opad[ HMAC_BLOCK_SIZE / sizeof(word32)];154 word32 innerHash[ MAX_DIGEST_SIZE / sizeof(word32)];139 word32 ipad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/ 140 word32 opad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; 141 word32 innerHash[WC_MAX_DIGEST_SIZE / sizeof(word32)]; 155 142 void* heap; /* heap hint */ 156 143 byte macType; /* md5 sha or sha256 */ … … 160 147 WC_ASYNC_DEV asyncDev; 161 148 word16 keyLen; /* hmac key length (key in ipad) */ 162 #ifdef HAVE_CAVIUM163 byte* data; /* buffered input data for one call */164 word16 dataLen;165 #endif /* HAVE_CAVIUM */166 149 #endif /* WOLFSSL_ASYNC_CRYPT */ 167 150 } Hmac; … … 179 162 180 163 WOLFSSL_API int wolfSSL_GetHmacMaxSize(void); 164 165 WOLFSSL_LOCAL int _InitHmac(Hmac* hmac, int type, void* heap); 181 166 182 167 #ifdef HAVE_HKDF
Note:
See TracChangeset
for help on using the changeset viewer.