00001
00041 #ifndef SPH_SKEIN_H__
00042 #define SPH_SKEIN_H__
00043
00044 #include <stddef.h>
00045 #include "sph_types.h"
00046
00047 #if SPH_64
00048
00052 #define SPH_SIZE_skein224 224
00053
00057 #define SPH_SIZE_skein256 256
00058
00062 #define SPH_SIZE_skein384 384
00063
00067 #define SPH_SIZE_skein512 512
00068
00079 typedef struct {
00080 #ifndef DOXYGEN_IGNORE
00081 unsigned char buf[32];
00082 size_t ptr;
00083 sph_u64 h0, h1, h2, h3;
00084 sph_u64 bcount;
00085 #endif
00086 } sph_skein_small_context;
00087
00091 typedef sph_skein_small_context sph_skein224_context;
00092
00096 typedef sph_skein_small_context sph_skein256_context;
00097
00108 typedef struct {
00109 #ifndef DOXYGEN_IGNORE
00110 unsigned char buf[64];
00111 size_t ptr;
00112 sph_u64 h0, h1, h2, h3, h4, h5, h6, h7;
00113 sph_u64 bcount;
00114 #endif
00115 } sph_skein_big_context;
00116
00120 typedef sph_skein_big_context sph_skein384_context;
00121
00125 typedef sph_skein_big_context sph_skein512_context;
00126
00133 void sph_skein224_init(void *cc);
00134
00143 void sph_skein224(void *cc, const void *data, size_t len);
00144
00154 void sph_skein224_close(void *cc, void *dst);
00155
00169 void sph_skein224_addbits_and_close(
00170 void *cc, unsigned ub, unsigned n, void *dst);
00171
00178 void sph_skein256_init(void *cc);
00179
00188 void sph_skein256(void *cc, const void *data, size_t len);
00189
00199 void sph_skein256_close(void *cc, void *dst);
00200
00214 void sph_skein256_addbits_and_close(
00215 void *cc, unsigned ub, unsigned n, void *dst);
00216
00223 void sph_skein384_init(void *cc);
00224
00233 void sph_skein384(void *cc, const void *data, size_t len);
00234
00244 void sph_skein384_close(void *cc, void *dst);
00245
00259 void sph_skein384_addbits_and_close(
00260 void *cc, unsigned ub, unsigned n, void *dst);
00261
00268 void sph_skein512_init(void *cc);
00269
00278 void sph_skein512(void *cc, const void *data, size_t len);
00279
00289 void sph_skein512_close(void *cc, void *dst);
00290
00304 void sph_skein512_addbits_and_close(
00305 void *cc, unsigned ub, unsigned n, void *dst);
00306
00307 #endif
00308
00309 #endif