sphlib

sph_keccak.h

Go to the documentation of this file.
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