• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

c4e_sha.h (Version 521)

Go to the documentation of this file.
00001 /****************************** -*- mode: C -*- ******************************/
00013 #ifndef C4E_SHA_H
00014 #define C4E_SHA_H
00015 
00016 
00017 /* INCLUDES ******************************************************************/
00018 
00019 #include "c4e_sys.h"
00020 #include "c4e_algo32.h"
00021 #include "c4e_hash.h" /* C4eHashId */
00022 
00023 
00024 
00025 #ifdef  __cplusplus
00026 extern "C" {
00027 #endif
00028 
00029 
00030 /* DEFINES *******************************************************************/
00031 
00035 #define C4E_SHA12_BLOCK_LOG2LEN (6U)
00036 
00037 
00045 /* -------------------------------- SHA-1 ---------------------------------- */
00046 
00047 #define C4E_SHA1_DIGEST_LEN     (20U)  
00052 #define C4E_SHA1_BLOCK_LEN      (1U << C4E_SHA12_BLOCK_LOG2LEN)
00053 
00057 #define C4E_SHA1_CTX_WORDS      ((C4E_SHA1_DIGEST_LEN / 4U) + 1U)
00058 
00063 #define C4E_SHA1_TMP_WORDS      ((C4E_SHA1_DIGEST_LEN + C4E_SHA1_BLOCK_LEN) / 4U)
00064 
00068 #define C4E_SHA1_MEM_WORDS      (C4E_SHA1_CTX_WORDS + C4E_SHA1_TMP_WORDS)
00069 
00070 
00071 /* ---------------------------- SHA-256/224 -------------------------------- */
00072 
00073 #define C4E_SHA224_DIGEST_LEN   (28U) 
00074 #define C4E_SHA256_DIGEST_LEN   (32U) 
00080 #define C4E_SHA2_BLOCK_LEN      (1U << C4E_SHA12_BLOCK_LOG2LEN)
00081 
00085 #define C4E_SHA2_CTX_WORDS      ((C4E_SHA256_DIGEST_LEN / 4U) + 1U)
00086 
00091 #define C4E_SHA2_TMP_WORDS      ((C4E_SHA256_DIGEST_LEN + C4E_SHA2_BLOCK_LEN) / 4U)
00092 
00096 #define C4E_SHA2_MEM_WORDS      (C4E_SHA2_CTX_WORDS + C4E_SHA2_TMP_WORDS)
00097 
00098 
00099 
00100 /* TYPEDEFS ******************************************************************/
00101 
00102 
00103 /* MACROS ********************************************************************/
00104 
00105 
00106 /* PROTOTYPES ****************************************************************/
00107 
00108 
00109 /* FUNCTION ******************************************************************/
00134     void c4e_sha1_start(C4eAlgo32Uint ctx[C4E_SHA1_CTX_WORDS]);
00135 
00136 
00137 /* FUNCTION ******************************************************************/
00171     void c4e_sha1_next(C4eAlgo32Uint ctx[C4E_RESTRICT C4E_SHA1_CTX_WORDS],
00172                        C4eAlgo32Uint wtmp[C4E_RESTRICT C4E_SHA1_TMP_WORDS],
00173                        C4E_CONST void* C4E_RESTRICT next);
00174 
00175 
00176 /* FUNCTION ******************************************************************/
00205     void c4e_sha1_stop(C4eAlgo32Uint ctx[C4E_RESTRICT C4E_SHA1_CTX_WORDS],
00206                        C4eAlgo32Uint wtmp[C4E_RESTRICT C4E_SHA1_TMP_WORDS],
00207                        C4E_CONST void* C4E_RESTRICT last,
00208                        C4eArchUint len,
00209                        C4eArchUint8 digest[C4E_RESTRICT C4E_SHA1_DIGEST_LEN]);
00210 
00211 
00212 /* FUNCTION ******************************************************************/
00241     void c4e_sha1_mem(C4eAlgo32Uint tmp[C4E_RESTRICT C4E_SHA1_MEM_WORDS],
00242                       C4E_CONST void* C4E_RESTRICT mem,
00243                       C4eArchSize len,
00244                       C4eArchUint8 digest[C4E_RESTRICT C4E_SHA1_DIGEST_LEN]);
00245 
00246 
00247 /* FUNCTION ******************************************************************/
00274     void c4e_sha2_start(C4eAlgo32Uint ctx[C4E_SHA2_CTX_WORDS], C4eHashId hid);
00275 
00276 
00277 
00278 /* FUNCTION ******************************************************************/
00312     void c4e_sha2_next(C4eAlgo32Uint ctx[C4E_RESTRICT C4E_SHA2_CTX_WORDS],
00313                        C4eAlgo32Uint wtmp[C4E_RESTRICT C4E_SHA2_TMP_WORDS],
00314                        C4E_CONST void* C4E_RESTRICT next);
00315 
00316 
00317 
00318 /* FUNCTION ******************************************************************/
00347     void c4e_sha2_stop(C4eAlgo32Uint ctx[C4E_RESTRICT C4E_SHA2_CTX_WORDS],
00348                        C4eAlgo32Uint wtmp[C4E_RESTRICT C4E_SHA2_TMP_WORDS],
00349                        C4E_CONST void* C4E_RESTRICT last,
00350                        C4eArchUint len,
00351                        C4eArchUint8 digest[C4E_RESTRICT C4E_SHA256_DIGEST_LEN]);
00352 
00353 
00354 /* FUNCTION ******************************************************************/
00385     void c4e_sha2_mem(C4eAlgo32Uint tmp[C4E_RESTRICT C4E_SHA2_MEM_WORDS],
00386                       C4eHashId hid,
00387                       C4E_CONST void* C4E_RESTRICT mem,
00388                       C4eArchSize len,
00389                       C4eArchUint8 digest[C4E_RESTRICT C4E_SHA256_DIGEST_LEN]);
00390 
00391 
00396 #ifdef  __cplusplus
00397 }
00398 #endif
00399 
00400 
00401 #endif /* C4E_SHA_H */
00402 
00403 
00404 /******************************************************************************/
00405 /* END OF FILE                                                                */
00406 /******************************************************************************/
00407 

Generated by Ralf Hoppe, Ginsterweg 49, 73230 Kirchheim unter Teck, Germany
on Sun Jun 7 14:10:49 2015 for CRY4E using doxygen 1.6.1