00001
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];
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];
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