00001
00040 #ifndef SPH_BLAKE_H__
00041 #define SPH_BLAKE_H__
00042
00043 #include <stddef.h>
00044 #include "sph_types.h"
00045
00049 #define SPH_SIZE_blake224 224
00050
00054 #define SPH_SIZE_blake256 256
00055
00056 #if SPH_64
00057
00061 #define SPH_SIZE_blake384 384
00062
00066 #define SPH_SIZE_blake512 512
00067
00068 #endif
00069
00080 typedef struct {
00081 #ifndef DOXYGEN_IGNORE
00082 unsigned char buf[64];
00083 size_t ptr;
00084 sph_u32 H[8];
00085 sph_u32 S[4];
00086 sph_u32 T0, T1;
00087 #endif
00088 } sph_blake_small_context;
00089
00094 typedef sph_blake_small_context sph_blake224_context;
00095
00100 typedef sph_blake_small_context sph_blake256_context;
00101
00102 #if SPH_64
00103
00114 typedef struct {
00115 #ifndef DOXYGEN_IGNORE
00116 unsigned char buf[128];
00117 size_t ptr;
00118 sph_u64 H[8];
00119 sph_u64 S[4];
00120 sph_u64 T0, T1;
00121 #endif
00122 } sph_blake_big_context;
00123
00128 typedef sph_blake_big_context sph_blake384_context;
00129
00134 typedef sph_blake_big_context sph_blake512_context;
00135
00136 #endif
00137
00144 void sph_blake224_init(void *cc);
00145
00154 void sph_blake224(void *cc, const void *data, size_t len);
00155
00165 void sph_blake224_close(void *cc, void *dst);
00166
00180 void sph_blake224_addbits_and_close(
00181 void *cc, unsigned ub, unsigned n, void *dst);
00182
00189 void sph_blake256_init(void *cc);
00190
00199 void sph_blake256(void *cc, const void *data, size_t len);
00200
00210 void sph_blake256_close(void *cc, void *dst);
00211
00225 void sph_blake256_addbits_and_close(
00226 void *cc, unsigned ub, unsigned n, void *dst);
00227
00228 #if SPH_64
00229
00236 void sph_blake384_init(void *cc);
00237
00246 void sph_blake384(void *cc, const void *data, size_t len);
00247
00257 void sph_blake384_close(void *cc, void *dst);
00258
00272 void sph_blake384_addbits_and_close(
00273 void *cc, unsigned ub, unsigned n, void *dst);
00274
00281 void sph_blake512_init(void *cc);
00282
00291 void sph_blake512(void *cc, const void *data, size_t len);
00292
00302 void sph_blake512_close(void *cc, void *dst);
00303
00317 void sph_blake512_addbits_and_close(
00318 void *cc, unsigned ub, unsigned n, void *dst);
00319
00320 #endif
00321
00322 #endif