00001
00036 #ifndef SPH_FUGUE_H__
00037 #define SPH_FUGUE_H__
00038
00039 #include <stddef.h>
00040 #include "sph_types.h"
00041
00045 #define SPH_SIZE_fugue224 224
00046
00050 #define SPH_SIZE_fugue256 256
00051
00055 #define SPH_SIZE_fugue384 384
00056
00060 #define SPH_SIZE_fugue512 512
00061
00072 typedef struct {
00073 #ifndef DOXYGEN_IGNORE
00074 sph_u32 partial;
00075 unsigned partial_len;
00076 unsigned round_shift;
00077 sph_u32 S[36];
00078 #if SPH_64
00079 sph_u64 bit_count;
00080 #else
00081 sph_u32 bit_count_high, bit_count_low;
00082 #endif
00083 #endif
00084 } sph_fugue_context;
00085
00089 typedef sph_fugue_context sph_fugue224_context;
00090
00094 typedef sph_fugue_context sph_fugue256_context;
00095
00099 typedef sph_fugue_context sph_fugue384_context;
00100
00104 typedef sph_fugue_context sph_fugue512_context;
00105
00112 void sph_fugue224_init(void *cc);
00113
00122 void sph_fugue224(void *cc, const void *data, size_t len);
00123
00133 void sph_fugue224_close(void *cc, void *dst);
00134
00148 void sph_fugue224_addbits_and_close(
00149 void *cc, unsigned ub, unsigned n, void *dst);
00150
00157 void sph_fugue256_init(void *cc);
00158
00167 void sph_fugue256(void *cc, const void *data, size_t len);
00168
00178 void sph_fugue256_close(void *cc, void *dst);
00179
00193 void sph_fugue256_addbits_and_close(
00194 void *cc, unsigned ub, unsigned n, void *dst);
00195
00202 void sph_fugue384_init(void *cc);
00203
00212 void sph_fugue384(void *cc, const void *data, size_t len);
00213
00223 void sph_fugue384_close(void *cc, void *dst);
00224
00238 void sph_fugue384_addbits_and_close(
00239 void *cc, unsigned ub, unsigned n, void *dst);
00240
00247 void sph_fugue512_init(void *cc);
00248
00257 void sph_fugue512(void *cc, const void *data, size_t len);
00258
00268 void sph_fugue512_close(void *cc, void *dst);
00269
00283 void sph_fugue512_addbits_and_close(
00284 void *cc, unsigned ub, unsigned n, void *dst);
00285
00286 #endif