ssl/libcrypto/src/crypto/sha/sha.h
branchRCL_3
changeset 9 fa985af77159
parent 0 e4d67989cc36
child 45 4b03adbd26ca
equal deleted inserted replaced
3:18f64da82512 9:fa985af77159
    54  * derivative of this code cannot be changed.  i.e. this code cannot simply be
    54  * derivative of this code cannot be changed.  i.e. this code cannot simply be
    55  * copied and put under another distribution licence
    55  * copied and put under another distribution licence
    56  * [including the GNU Public Licence.]
    56  * [including the GNU Public Licence.]
    57  */
    57  */
    58 /*
    58 /*
    59  © Portions copyright (c) 2006 Nokia Corporation.  All rights reserved.
    59  © Portions copyright (c) 2006-2010 Nokia Corporation.  All rights reserved.
    60  */
    60  */
    61 
    61 
    62 #ifndef HEADER_SHA_H
    62 #ifndef HEADER_SHA_H
    63 #define HEADER_SHA_H
    63 #define HEADER_SHA_H
    64 
    64 
   127 IMPORT_C int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
   127 IMPORT_C int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
   128 IMPORT_C int SHA1_Final(unsigned char *md, SHA_CTX *c);
   128 IMPORT_C int SHA1_Final(unsigned char *md, SHA_CTX *c);
   129 IMPORT_C unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md);
   129 IMPORT_C unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md);
   130 IMPORT_C void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
   130 IMPORT_C void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
   131 #endif
   131 #endif
       
   132 
       
   133 #define SHA256_CBLOCK	(SHA_LBLOCK*4)	/* SHA-256 treats input data as a
       
   134 					 * contiguous array of 32 bit
       
   135 					 * wide big-endian values. */
       
   136 #define SHA224_DIGEST_LENGTH	28
       
   137 #define SHA256_DIGEST_LENGTH	32
       
   138 
       
   139 typedef struct SHA256state_st
       
   140 	{
       
   141 	SHA_LONG h[8];
       
   142 	SHA_LONG Nl,Nh;
       
   143 	SHA_LONG data[SHA_LBLOCK];
       
   144 	unsigned int num,md_len;
       
   145 	} SHA256_CTX;
       
   146 
       
   147 #ifndef OPENSSL_NO_SHA256
       
   148 IMPORT_C int SHA224_Init(SHA256_CTX *c);
       
   149 IMPORT_C int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
       
   150 IMPORT_C int SHA224_Final(unsigned char *md, SHA256_CTX *c);
       
   151 IMPORT_C unsigned char *SHA224(const unsigned char *d, size_t n,unsigned char *md);
       
   152 IMPORT_C int SHA256_Init(SHA256_CTX *c);
       
   153 IMPORT_C int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
       
   154 IMPORT_C int SHA256_Final(unsigned char *md, SHA256_CTX *c);
       
   155 IMPORT_C unsigned char *SHA256(const unsigned char *d, size_t n,unsigned char *md);
       
   156 IMPORT_C void SHA256_Transform(SHA256_CTX *c, const unsigned char *data);
       
   157 #endif
       
   158 
       
   159 #define SHA384_DIGEST_LENGTH	48
       
   160 #define SHA512_DIGEST_LENGTH	64
       
   161 
       
   162 #ifndef OPENSSL_NO_SHA512
       
   163 /*
       
   164  * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64
       
   165  * being exactly 64-bit wide. See Implementation Notes in sha512.c
       
   166  * for further details.
       
   167  */
       
   168 #define SHA512_CBLOCK	(SHA_LBLOCK*8)	/* SHA-512 treats input data as a
       
   169 					 * contiguous array of 64 bit
       
   170 					 * wide big-endian values. */
       
   171 #ifdef SYMBIAN
       
   172 #define SHA_LONG64 TUint64
       
   173 #define U64(C)     C##ULL
       
   174 #else
       
   175 #if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
       
   176 #define SHA_LONG64 unsigned __int64
       
   177 #define U64(C)     C##UI64
       
   178 #elif defined(__arch64__)
       
   179 #define SHA_LONG64 unsigned long
       
   180 #define U64(C)     C##UL
       
   181 #else
       
   182 #define SHA_LONG64 unsigned long long
       
   183 #define U64(C)     C##ULL
       
   184 #endif
       
   185 #endif
       
   186 
       
   187 typedef struct SHA512state_st
       
   188 	{
       
   189 	SHA_LONG64 h[8];
       
   190 	SHA_LONG64 Nl,Nh;
       
   191 	union {
       
   192 		SHA_LONG64	d[SHA_LBLOCK];
       
   193 		unsigned char	p[SHA512_CBLOCK];
       
   194 	} u;
       
   195 	unsigned int num,md_len;
       
   196 	} SHA512_CTX;
       
   197 #endif
       
   198 
       
   199 #ifndef OPENSSL_NO_SHA512
       
   200 IMPORT_C int SHA384_Init(SHA512_CTX *c);
       
   201 IMPORT_C int SHA384_Update(SHA512_CTX *c, const void *data, size_t len);
       
   202 IMPORT_C int SHA384_Final(unsigned char *md, SHA512_CTX *c);
       
   203 IMPORT_C unsigned char *SHA384(const unsigned char *d, size_t n,unsigned char *md);
       
   204 IMPORT_C int SHA512_Init(SHA512_CTX *c);
       
   205 IMPORT_C int SHA512_Update(SHA512_CTX *c, const void *data, size_t len);
       
   206 IMPORT_C int SHA512_Final(unsigned char *md, SHA512_CTX *c);
       
   207 IMPORT_C unsigned char *SHA512(const unsigned char *d, size_t n,unsigned char *md);
       
   208 IMPORT_C void SHA512_Transform(SHA512_CTX *c, const unsigned char *data);
       
   209 #endif
       
   210 
   132 #ifdef  __cplusplus
   211 #ifdef  __cplusplus
   133 }
   212 }
   134 #endif
   213 #endif
   135 
   214 
   136 #endif
   215 #endif