sphlib
|
00001 /* $Id: sph_keccak.h 216 2010-06-08 09:46:57Z tp $ */ 00036 #ifndef SPH_KECCAK_H__ 00037 #define SPH_KECCAK_H__ 00038 00039 #include <stddef.h> 00040 #include "sph_types.h" 00041 00045 #define SPH_SIZE_keccak224 224 00046 00050 #define SPH_SIZE_keccak256 256 00051 00055 #define SPH_SIZE_keccak384 384 00056 00060 #define SPH_SIZE_keccak512 512 00061 00072 typedef struct { 00073 #ifndef DOXYGEN_IGNORE 00074 unsigned char buf[144]; /* first field, for alignment */ 00075 size_t ptr, lim; 00076 union { 00077 #if SPH_64 00078 sph_u64 wide[25]; 00079 #endif 00080 sph_u32 narrow[50]; 00081 } u; 00082 #endif 00083 } sph_keccak_context; 00084 00088 typedef sph_keccak_context sph_keccak224_context; 00089 00093 typedef sph_keccak_context sph_keccak256_context; 00094 00098 typedef sph_keccak_context sph_keccak384_context; 00099 00103 typedef sph_keccak_context sph_keccak512_context; 00104 00111 void sph_keccak224_init(void *cc); 00112 00121 void sph_keccak224(void *cc, const void *data, size_t len); 00122 00132 void sph_keccak224_close(void *cc, void *dst); 00133 00147 void sph_keccak224_addbits_and_close( 00148 void *cc, unsigned ub, unsigned n, void *dst); 00149 00156 void sph_keccak256_init(void *cc); 00157 00166 void sph_keccak256(void *cc, const void *data, size_t len); 00167 00177 void sph_keccak256_close(void *cc, void *dst); 00178 00192 void sph_keccak256_addbits_and_close( 00193 void *cc, unsigned ub, unsigned n, void *dst); 00194 00201 void sph_keccak384_init(void *cc); 00202 00211 void sph_keccak384(void *cc, const void *data, size_t len); 00212 00222 void sph_keccak384_close(void *cc, void *dst); 00223 00237 void sph_keccak384_addbits_and_close( 00238 void *cc, unsigned ub, unsigned n, void *dst); 00239 00246 void sph_keccak512_init(void *cc); 00247 00256 void sph_keccak512(void *cc, const void *data, size_t len); 00257 00267 void sph_keccak512_close(void *cc, void *dst); 00268 00282 void sph_keccak512_addbits_and_close( 00283 void *cc, unsigned ub, unsigned n, void *dst); 00284 00285 #endif