Xuyi Wang / wolfSSL

Dependents:   OS

Committer:
wolfSSL
Date:
Tue May 02 08:44:47 2017 +0000
Revision:
7:481bce714567
wolfSSL3.10.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 7:481bce714567 1 /* sha.h for openssl */
wolfSSL 7:481bce714567 2
wolfSSL 7:481bce714567 3
wolfSSL 7:481bce714567 4 #ifndef WOLFSSL_SHA_H_
wolfSSL 7:481bce714567 5 #define WOLFSSL_SHA_H_
wolfSSL 7:481bce714567 6
wolfSSL 7:481bce714567 7 #include <wolfssl/wolfcrypt/settings.h>
wolfSSL 7:481bce714567 8
wolfSSL 7:481bce714567 9 #ifdef WOLFSSL_PREFIX
wolfSSL 7:481bce714567 10 #include "prefix_sha.h"
wolfSSL 7:481bce714567 11 #endif
wolfSSL 7:481bce714567 12
wolfSSL 7:481bce714567 13 #ifdef __cplusplus
wolfSSL 7:481bce714567 14 extern "C" {
wolfSSL 7:481bce714567 15 #endif
wolfSSL 7:481bce714567 16
wolfSSL 7:481bce714567 17
wolfSSL 7:481bce714567 18 typedef struct WOLFSSL_SHA_CTX {
wolfSSL 7:481bce714567 19 int holder[24]; /* big enough to hold wolfcrypt sha, but check on init */
wolfSSL 7:481bce714567 20 } WOLFSSL_SHA_CTX;
wolfSSL 7:481bce714567 21
wolfSSL 7:481bce714567 22 WOLFSSL_API void wolfSSL_SHA_Init(WOLFSSL_SHA_CTX*);
wolfSSL 7:481bce714567 23 WOLFSSL_API void wolfSSL_SHA_Update(WOLFSSL_SHA_CTX*, const void*, unsigned long);
wolfSSL 7:481bce714567 24 WOLFSSL_API void wolfSSL_SHA_Final(unsigned char*, WOLFSSL_SHA_CTX*);
wolfSSL 7:481bce714567 25
wolfSSL 7:481bce714567 26 /* SHA1 points to above, shouldn't use SHA0 ever */
wolfSSL 7:481bce714567 27 WOLFSSL_API void wolfSSL_SHA1_Init(WOLFSSL_SHA_CTX*);
wolfSSL 7:481bce714567 28 WOLFSSL_API void wolfSSL_SHA1_Update(WOLFSSL_SHA_CTX*, const void*, unsigned long);
wolfSSL 7:481bce714567 29 WOLFSSL_API void wolfSSL_SHA1_Final(unsigned char*, WOLFSSL_SHA_CTX*);
wolfSSL 7:481bce714567 30
wolfSSL 7:481bce714567 31 enum {
wolfSSL 7:481bce714567 32 SHA_DIGEST_LENGTH = 20
wolfSSL 7:481bce714567 33 };
wolfSSL 7:481bce714567 34
wolfSSL 7:481bce714567 35
wolfSSL 7:481bce714567 36 typedef WOLFSSL_SHA_CTX SHA_CTX;
wolfSSL 7:481bce714567 37
wolfSSL 7:481bce714567 38 #define SHA_Init wolfSSL_SHA_Init
wolfSSL 7:481bce714567 39 #define SHA_Update wolfSSL_SHA_Update
wolfSSL 7:481bce714567 40 #define SHA_Final wolfSSL_SHA_Final
wolfSSL 7:481bce714567 41
wolfSSL 7:481bce714567 42 #define SHA1_Init wolfSSL_SHA1_Init
wolfSSL 7:481bce714567 43 #define SHA1_Update wolfSSL_SHA1_Update
wolfSSL 7:481bce714567 44 #define SHA1_Final wolfSSL_SHA1_Final
wolfSSL 7:481bce714567 45
wolfSSL 7:481bce714567 46
wolfSSL 7:481bce714567 47 #ifdef WOLFSSL_SHA224
wolfSSL 7:481bce714567 48
wolfSSL 7:481bce714567 49 /* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256
wolfSSL 7:481bce714567 50 * struct are 16 byte aligned. Any derefrence to those elements after casting to
wolfSSL 7:481bce714567 51 * Sha224, is expected to also be 16 byte aligned addresses. */
wolfSSL 7:481bce714567 52 typedef struct WOLFSSL_SHA224_CTX {
wolfSSL 7:481bce714567 53 ALIGN16 long long holder[28]; /* big enough, but check on init */
wolfSSL 7:481bce714567 54 } WOLFSSL_SHA224_CTX;
wolfSSL 7:481bce714567 55
wolfSSL 7:481bce714567 56 WOLFSSL_API void wolfSSL_SHA224_Init(WOLFSSL_SHA224_CTX*);
wolfSSL 7:481bce714567 57 WOLFSSL_API void wolfSSL_SHA224_Update(WOLFSSL_SHA224_CTX*, const void*,
wolfSSL 7:481bce714567 58 unsigned long);
wolfSSL 7:481bce714567 59 WOLFSSL_API void wolfSSL_SHA224_Final(unsigned char*, WOLFSSL_SHA224_CTX*);
wolfSSL 7:481bce714567 60
wolfSSL 7:481bce714567 61 enum {
wolfSSL 7:481bce714567 62 SHA224_DIGEST_LENGTH = 28
wolfSSL 7:481bce714567 63 };
wolfSSL 7:481bce714567 64
wolfSSL 7:481bce714567 65
wolfSSL 7:481bce714567 66 typedef WOLFSSL_SHA224_CTX SHA224_CTX;
wolfSSL 7:481bce714567 67
wolfSSL 7:481bce714567 68 #define SHA224_Init wolfSSL_SHA224_Init
wolfSSL 7:481bce714567 69 #define SHA224_Update wolfSSL_SHA224_Update
wolfSSL 7:481bce714567 70 #define SHA224_Final wolfSSL_SHA224_Final
wolfSSL 7:481bce714567 71
wolfSSL 7:481bce714567 72 #endif /* WOLFSSL_SHA224 */
wolfSSL 7:481bce714567 73
wolfSSL 7:481bce714567 74
wolfSSL 7:481bce714567 75 /* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256
wolfSSL 7:481bce714567 76 * struct are 16 byte aligned. Any derefrence to those elements after casting to
wolfSSL 7:481bce714567 77 * Sha256, is expected to also be 16 byte aligned addresses. */
wolfSSL 7:481bce714567 78 typedef struct WOLFSSL_SHA256_CTX {
wolfSSL 7:481bce714567 79 ALIGN16 int holder[28]; /* big enough to hold wolfcrypt sha, but check on init */
wolfSSL 7:481bce714567 80 } WOLFSSL_SHA256_CTX;
wolfSSL 7:481bce714567 81
wolfSSL 7:481bce714567 82 WOLFSSL_API void wolfSSL_SHA256_Init(WOLFSSL_SHA256_CTX*);
wolfSSL 7:481bce714567 83 WOLFSSL_API void wolfSSL_SHA256_Update(WOLFSSL_SHA256_CTX*, const void*,
wolfSSL 7:481bce714567 84 unsigned long);
wolfSSL 7:481bce714567 85 WOLFSSL_API void wolfSSL_SHA256_Final(unsigned char*, WOLFSSL_SHA256_CTX*);
wolfSSL 7:481bce714567 86
wolfSSL 7:481bce714567 87 enum {
wolfSSL 7:481bce714567 88 SHA256_DIGEST_LENGTH = 32
wolfSSL 7:481bce714567 89 };
wolfSSL 7:481bce714567 90
wolfSSL 7:481bce714567 91
wolfSSL 7:481bce714567 92 typedef WOLFSSL_SHA256_CTX SHA256_CTX;
wolfSSL 7:481bce714567 93
wolfSSL 7:481bce714567 94 #define SHA256_Init wolfSSL_SHA256_Init
wolfSSL 7:481bce714567 95 #define SHA256_Update wolfSSL_SHA256_Update
wolfSSL 7:481bce714567 96 #define SHA256_Final wolfSSL_SHA256_Final
wolfSSL 7:481bce714567 97
wolfSSL 7:481bce714567 98
wolfSSL 7:481bce714567 99 #ifdef WOLFSSL_SHA384
wolfSSL 7:481bce714567 100
wolfSSL 7:481bce714567 101 typedef struct WOLFSSL_SHA384_CTX {
wolfSSL 7:481bce714567 102 long long holder[32]; /* big enough, but check on init */
wolfSSL 7:481bce714567 103 } WOLFSSL_SHA384_CTX;
wolfSSL 7:481bce714567 104
wolfSSL 7:481bce714567 105 WOLFSSL_API void wolfSSL_SHA384_Init(WOLFSSL_SHA384_CTX*);
wolfSSL 7:481bce714567 106 WOLFSSL_API void wolfSSL_SHA384_Update(WOLFSSL_SHA384_CTX*, const void*,
wolfSSL 7:481bce714567 107 unsigned long);
wolfSSL 7:481bce714567 108 WOLFSSL_API void wolfSSL_SHA384_Final(unsigned char*, WOLFSSL_SHA384_CTX*);
wolfSSL 7:481bce714567 109
wolfSSL 7:481bce714567 110 enum {
wolfSSL 7:481bce714567 111 SHA384_DIGEST_LENGTH = 48
wolfSSL 7:481bce714567 112 };
wolfSSL 7:481bce714567 113
wolfSSL 7:481bce714567 114
wolfSSL 7:481bce714567 115 typedef WOLFSSL_SHA384_CTX SHA384_CTX;
wolfSSL 7:481bce714567 116
wolfSSL 7:481bce714567 117 #define SHA384_Init wolfSSL_SHA384_Init
wolfSSL 7:481bce714567 118 #define SHA384_Update wolfSSL_SHA384_Update
wolfSSL 7:481bce714567 119 #define SHA384_Final wolfSSL_SHA384_Final
wolfSSL 7:481bce714567 120
wolfSSL 7:481bce714567 121 #endif /* WOLFSSL_SHA384 */
wolfSSL 7:481bce714567 122
wolfSSL 7:481bce714567 123 #ifdef WOLFSSL_SHA512
wolfSSL 7:481bce714567 124
wolfSSL 7:481bce714567 125 typedef struct WOLFSSL_SHA512_CTX {
wolfSSL 7:481bce714567 126 long long holder[36]; /* big enough, but check on init */
wolfSSL 7:481bce714567 127 } WOLFSSL_SHA512_CTX;
wolfSSL 7:481bce714567 128
wolfSSL 7:481bce714567 129 WOLFSSL_API void wolfSSL_SHA512_Init(WOLFSSL_SHA512_CTX*);
wolfSSL 7:481bce714567 130 WOLFSSL_API void wolfSSL_SHA512_Update(WOLFSSL_SHA512_CTX*, const void*,
wolfSSL 7:481bce714567 131 unsigned long);
wolfSSL 7:481bce714567 132 WOLFSSL_API void wolfSSL_SHA512_Final(unsigned char*, WOLFSSL_SHA512_CTX*);
wolfSSL 7:481bce714567 133
wolfSSL 7:481bce714567 134 enum {
wolfSSL 7:481bce714567 135 SHA512_DIGEST_LENGTH = 64
wolfSSL 7:481bce714567 136 };
wolfSSL 7:481bce714567 137
wolfSSL 7:481bce714567 138
wolfSSL 7:481bce714567 139 typedef WOLFSSL_SHA512_CTX SHA512_CTX;
wolfSSL 7:481bce714567 140
wolfSSL 7:481bce714567 141 #define SHA512_Init wolfSSL_SHA512_Init
wolfSSL 7:481bce714567 142 #define SHA512_Update wolfSSL_SHA512_Update
wolfSSL 7:481bce714567 143 #define SHA512_Final wolfSSL_SHA512_Final
wolfSSL 7:481bce714567 144
wolfSSL 7:481bce714567 145 #endif /* WOLFSSL_SHA512 */
wolfSSL 7:481bce714567 146
wolfSSL 7:481bce714567 147
wolfSSL 7:481bce714567 148
wolfSSL 7:481bce714567 149
wolfSSL 7:481bce714567 150 #ifdef __cplusplus
wolfSSL 7:481bce714567 151 } /* extern "C" */
wolfSSL 7:481bce714567 152 #endif
wolfSSL 7:481bce714567 153
wolfSSL 7:481bce714567 154
wolfSSL 7:481bce714567 155 #endif /* WOLFSSL_SHA_H_ */
wolfSSL 7:481bce714567 156
wolfSSL 7:481bce714567 157