sphlib

sph_bmw.h

Go to the documentation of this file.
00001 /* $Id: sph_bmw.h 216 2010-06-08 09:46:57Z tp $ */
00036 #ifndef SPH_BMW_H__
00037 #define SPH_BMW_H__
00038 
00039 #include <stddef.h>
00040 #include "sph_types.h"
00041 
00045 #define SPH_SIZE_bmw224   224
00046 
00050 #define SPH_SIZE_bmw256   256
00051 
00052 #if SPH_64
00053 
00057 #define SPH_SIZE_bmw384   384
00058 
00062 #define SPH_SIZE_bmw512   512
00063 
00064 #endif
00065 
00076 typedef struct {
00077 #ifndef DOXYGEN_IGNORE
00078         unsigned char buf[64];    /* first field, for alignment */
00079         size_t ptr;
00080         sph_u32 H[16];
00081 #if SPH_64
00082         sph_u64 bit_count;
00083 #else
00084         sph_u32 bit_count_high, bit_count_low;
00085 #endif
00086 #endif
00087 } sph_bmw_small_context;
00088 
00093 typedef sph_bmw_small_context sph_bmw224_context;
00094 
00099 typedef sph_bmw_small_context sph_bmw256_context;
00100 
00101 #if SPH_64
00102 
00113 typedef struct {
00114 #ifndef DOXYGEN_IGNORE
00115         unsigned char buf[128];    /* first field, for alignment */
00116         size_t ptr;
00117         sph_u64 H[16];
00118         sph_u64 bit_count;
00119 #endif
00120 } sph_bmw_big_context;
00121 
00126 typedef sph_bmw_big_context sph_bmw384_context;
00127 
00132 typedef sph_bmw_big_context sph_bmw512_context;
00133 
00134 #endif
00135 
00142 void sph_bmw224_init(void *cc);
00143 
00152 void sph_bmw224(void *cc, const void *data, size_t len);
00153 
00163 void sph_bmw224_close(void *cc, void *dst);
00164 
00178 void sph_bmw224_addbits_and_close(
00179         void *cc, unsigned ub, unsigned n, void *dst);
00180 
00187 void sph_bmw256_init(void *cc);
00188 
00197 void sph_bmw256(void *cc, const void *data, size_t len);
00198 
00208 void sph_bmw256_close(void *cc, void *dst);
00209 
00223 void sph_bmw256_addbits_and_close(
00224         void *cc, unsigned ub, unsigned n, void *dst);
00225 
00226 #if SPH_64
00227 
00234 void sph_bmw384_init(void *cc);
00235 
00244 void sph_bmw384(void *cc, const void *data, size_t len);
00245 
00255 void sph_bmw384_close(void *cc, void *dst);
00256 
00270 void sph_bmw384_addbits_and_close(
00271         void *cc, unsigned ub, unsigned n, void *dst);
00272 
00279 void sph_bmw512_init(void *cc);
00280 
00289 void sph_bmw512(void *cc, const void *data, size_t len);
00290 
00300 void sph_bmw512_close(void *cc, void *dst);
00301 
00315 void sph_bmw512_addbits_and_close(
00316         void *cc, unsigned ub, unsigned n, void *dst);
00317 
00318 #endif
00319 
00320 #endif