Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of wolfSSL by
sha.h
00001 /* sha.h for openssl */ 00002 00003 00004 #ifndef WOLFSSL_SHA_H_ 00005 #define WOLFSSL_SHA_H_ 00006 00007 #include <wolfssl/wolfcrypt/settings.h> 00008 #include <wolfssl/wolfcrypt/types.h> 00009 00010 #ifdef WOLFSSL_PREFIX 00011 #include "prefix_sha.h" 00012 #endif 00013 00014 #ifdef __cplusplus 00015 extern "C" { 00016 #endif 00017 00018 00019 typedef struct WOLFSSL_SHA_CTX { 00020 /* big enough to hold wolfcrypt Sha, but check on init */ 00021 int holder[28 + (WC_ASYNC_DEV_SIZE / sizeof(int))]; 00022 } WOLFSSL_SHA_CTX; 00023 00024 WOLFSSL_API void wolfSSL_SHA_Init(WOLFSSL_SHA_CTX*); 00025 WOLFSSL_API void wolfSSL_SHA_Update(WOLFSSL_SHA_CTX*, const void*, unsigned long); 00026 WOLFSSL_API void wolfSSL_SHA_Final(unsigned char*, WOLFSSL_SHA_CTX*); 00027 00028 /* SHA1 points to above, shouldn't use SHA0 ever */ 00029 WOLFSSL_API void wolfSSL_SHA1_Init(WOLFSSL_SHA_CTX*); 00030 WOLFSSL_API void wolfSSL_SHA1_Update(WOLFSSL_SHA_CTX*, const void*, unsigned long); 00031 WOLFSSL_API void wolfSSL_SHA1_Final(unsigned char*, WOLFSSL_SHA_CTX*); 00032 00033 enum { 00034 SHA_DIGEST_LENGTH = 20 00035 }; 00036 00037 00038 typedef WOLFSSL_SHA_CTX SHA_CTX; 00039 00040 #define SHA_Init wolfSSL_SHA_Init 00041 #define SHA_Update wolfSSL_SHA_Update 00042 #define SHA_Final wolfSSL_SHA_Final 00043 00044 #define SHA1_Init wolfSSL_SHA1_Init 00045 #define SHA1_Update wolfSSL_SHA1_Update 00046 #define SHA1_Final wolfSSL_SHA1_Final 00047 00048 00049 #ifdef WOLFSSL_SHA224 00050 00051 /* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 00052 * struct are 16 byte aligned. Any derefrence to those elements after casting to 00053 * Sha224, is expected to also be 16 byte aligned addresses. */ 00054 typedef struct WOLFSSL_SHA224_CTX { 00055 /* big enough to hold wolfcrypt Sha224, but check on init */ 00056 ALIGN16 int holder[34 + (WC_ASYNC_DEV_SIZE / sizeof(int))]; 00057 } WOLFSSL_SHA224_CTX; 00058 00059 WOLFSSL_API void wolfSSL_SHA224_Init(WOLFSSL_SHA224_CTX*); 00060 WOLFSSL_API void wolfSSL_SHA224_Update(WOLFSSL_SHA224_CTX*, const void*, 00061 unsigned long); 00062 WOLFSSL_API void wolfSSL_SHA224_Final(unsigned char*, WOLFSSL_SHA224_CTX*); 00063 00064 enum { 00065 SHA224_DIGEST_LENGTH = 28 00066 }; 00067 00068 00069 typedef WOLFSSL_SHA224_CTX SHA224_CTX; 00070 00071 #define SHA224_Init wolfSSL_SHA224_Init 00072 #define SHA224_Update wolfSSL_SHA224_Update 00073 #define SHA224_Final wolfSSL_SHA224_Final 00074 00075 #endif /* WOLFSSL_SHA224 */ 00076 00077 00078 /* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 00079 * struct are 16 byte aligned. Any derefrence to those elements after casting to 00080 * Sha256, is expected to also be 16 byte aligned addresses. */ 00081 typedef struct WOLFSSL_SHA256_CTX { 00082 /* big enough to hold wolfcrypt Sha256, but check on init */ 00083 ALIGN16 int holder[34 + (WC_ASYNC_DEV_SIZE / sizeof(int))]; 00084 } WOLFSSL_SHA256_CTX; 00085 00086 WOLFSSL_API void wolfSSL_SHA256_Init(WOLFSSL_SHA256_CTX*); 00087 WOLFSSL_API void wolfSSL_SHA256_Update(WOLFSSL_SHA256_CTX*, const void*, 00088 unsigned long); 00089 WOLFSSL_API void wolfSSL_SHA256_Final(unsigned char*, WOLFSSL_SHA256_CTX*); 00090 00091 enum { 00092 SHA256_DIGEST_LENGTH = 32 00093 }; 00094 00095 00096 typedef WOLFSSL_SHA256_CTX SHA256_CTX; 00097 00098 #define SHA256_Init wolfSSL_SHA256_Init 00099 #define SHA256_Update wolfSSL_SHA256_Update 00100 #define SHA256_Final wolfSSL_SHA256_Final 00101 00102 00103 #ifdef WOLFSSL_SHA384 00104 00105 typedef struct WOLFSSL_SHA384_CTX { 00106 /* big enough to hold wolfCrypt Sha384, but check on init */ 00107 long long holder[32 + (WC_ASYNC_DEV_SIZE / sizeof(long long))]; 00108 } WOLFSSL_SHA384_CTX; 00109 00110 WOLFSSL_API void wolfSSL_SHA384_Init(WOLFSSL_SHA384_CTX*); 00111 WOLFSSL_API void wolfSSL_SHA384_Update(WOLFSSL_SHA384_CTX*, const void*, 00112 unsigned long); 00113 WOLFSSL_API void wolfSSL_SHA384_Final(unsigned char*, WOLFSSL_SHA384_CTX*); 00114 00115 enum { 00116 SHA384_DIGEST_LENGTH = 48 00117 }; 00118 00119 00120 typedef WOLFSSL_SHA384_CTX SHA384_CTX; 00121 00122 #define SHA384_Init wolfSSL_SHA384_Init 00123 #define SHA384_Update wolfSSL_SHA384_Update 00124 #define SHA384_Final wolfSSL_SHA384_Final 00125 00126 #endif /* WOLFSSL_SHA384 */ 00127 00128 #ifdef WOLFSSL_SHA512 00129 00130 typedef struct WOLFSSL_SHA512_CTX { 00131 /* big enough to hold wolfCrypt Sha384, but check on init */ 00132 long long holder[36 + (WC_ASYNC_DEV_SIZE / sizeof(long long))]; 00133 } WOLFSSL_SHA512_CTX; 00134 00135 WOLFSSL_API void wolfSSL_SHA512_Init(WOLFSSL_SHA512_CTX*); 00136 WOLFSSL_API void wolfSSL_SHA512_Update(WOLFSSL_SHA512_CTX*, const void*, 00137 unsigned long); 00138 WOLFSSL_API void wolfSSL_SHA512_Final(unsigned char*, WOLFSSL_SHA512_CTX*); 00139 00140 enum { 00141 SHA512_DIGEST_LENGTH = 64 00142 }; 00143 00144 00145 typedef WOLFSSL_SHA512_CTX SHA512_CTX; 00146 00147 #define SHA512_Init wolfSSL_SHA512_Init 00148 #define SHA512_Update wolfSSL_SHA512_Update 00149 #define SHA512_Final wolfSSL_SHA512_Final 00150 00151 #endif /* WOLFSSL_SHA512 */ 00152 00153 00154 00155 00156 #ifdef __cplusplus 00157 } /* extern "C" */ 00158 #endif 00159 00160 00161 #endif /* WOLFSSL_SHA_H_ */ 00162 00163
Generated on Tue Jul 12 2022 23:30:59 by
 1.7.2 
    