00001
00035 #ifndef SPH_HAMSI_H__
00036 #define SPH_HAMSI_H__
00037
00038 #include <stddef.h>
00039 #include "sph_types.h"
00040
00044 #define SPH_SIZE_hamsi224 224
00045
00049 #define SPH_SIZE_hamsi256 256
00050
00054 #define SPH_SIZE_hamsi384 384
00055
00059 #define SPH_SIZE_hamsi512 512
00060
00071 typedef struct {
00072 #ifndef DOXYGEN_IGNORE
00073 unsigned char partial[4];
00074 size_t partial_len;
00075 sph_u32 h[8];
00076 #if SPH_64
00077 sph_u64 count;
00078 #else
00079 sph_u32 count_high, count_low;
00080 #endif
00081 #endif
00082 } sph_hamsi_small_context;
00083
00088 typedef sph_hamsi_small_context sph_hamsi224_context;
00089
00094 typedef sph_hamsi_small_context sph_hamsi256_context;
00095
00106 typedef struct {
00107 #ifndef DOXYGEN_IGNORE
00108 unsigned char partial[8];
00109 size_t partial_len;
00110 sph_u32 h[16];
00111 #if SPH_64
00112 sph_u64 count;
00113 #else
00114 sph_u32 count_high, count_low;
00115 #endif
00116 #endif
00117 } sph_hamsi_big_context;
00118
00123 typedef sph_hamsi_big_context sph_hamsi384_context;
00124
00129 typedef sph_hamsi_big_context sph_hamsi512_context;
00130
00137 void sph_hamsi224_init(void *cc);
00138
00147 void sph_hamsi224(void *cc, const void *data, size_t len);
00148
00158 void sph_hamsi224_close(void *cc, void *dst);
00159
00173 void sph_hamsi224_addbits_and_close(
00174 void *cc, unsigned ub, unsigned n, void *dst);
00175
00182 void sph_hamsi256_init(void *cc);
00183
00192 void sph_hamsi256(void *cc, const void *data, size_t len);
00193
00203 void sph_hamsi256_close(void *cc, void *dst);
00204
00218 void sph_hamsi256_addbits_and_close(
00219 void *cc, unsigned ub, unsigned n, void *dst);
00220
00227 void sph_hamsi384_init(void *cc);
00228
00237 void sph_hamsi384(void *cc, const void *data, size_t len);
00238
00248 void sph_hamsi384_close(void *cc, void *dst);
00249
00263 void sph_hamsi384_addbits_and_close(
00264 void *cc, unsigned ub, unsigned n, void *dst);
00265
00272 void sph_hamsi512_init(void *cc);
00273
00282 void sph_hamsi512(void *cc, const void *data, size_t len);
00283
00293 void sph_hamsi512_close(void *cc, void *dst);
00294
00308 void sph_hamsi512_addbits_and_close(
00309 void *cc, unsigned ub, unsigned n, void *dst);
00310
00311 #endif