source: asp3_tinet_ecnl_arm/trunk/wolfssl-3.12.2/wolfssl/openssl/sha.h@ 352

Last change on this file since 352 was 352, checked in by coas-nagasima, 6 years ago

arm向けASP3版ECNLを追加

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