00001
00061 #ifndef SPH_HAVAL_H__
00062 #define SPH_HAVAL_H__
00063
00064 #include <stddef.h>
00065 #include "sph_types.h"
00066
00070 #define SPH_SIZE_haval128_3 128
00071
00075 #define SPH_SIZE_haval128_4 128
00076
00080 #define SPH_SIZE_haval128_5 128
00081
00085 #define SPH_SIZE_haval160_3 160
00086
00090 #define SPH_SIZE_haval160_4 160
00091
00095 #define SPH_SIZE_haval160_5 160
00096
00100 #define SPH_SIZE_haval192_3 192
00101
00105 #define SPH_SIZE_haval192_4 192
00106
00110 #define SPH_SIZE_haval192_5 192
00111
00115 #define SPH_SIZE_haval224_3 224
00116
00120 #define SPH_SIZE_haval224_4 224
00121
00125 #define SPH_SIZE_haval224_5 224
00126
00130 #define SPH_SIZE_haval256_3 256
00131
00135 #define SPH_SIZE_haval256_4 256
00136
00140 #define SPH_SIZE_haval256_5 256
00141
00152 typedef struct {
00153 #ifndef DOXYGEN_IGNORE
00154 unsigned char buf[128];
00155 sph_u32 s0, s1, s2, s3, s4, s5, s6, s7;
00156 unsigned olen, passes;
00157 #if SPH_64
00158 sph_u64 count;
00159 #else
00160 sph_u32 count_high, count_low;
00161 #endif
00162 #endif
00163 } sph_haval_context;
00164
00168 typedef sph_haval_context sph_haval128_3_context;
00169
00173 typedef sph_haval_context sph_haval128_4_context;
00174
00178 typedef sph_haval_context sph_haval128_5_context;
00179
00183 typedef sph_haval_context sph_haval160_3_context;
00184
00188 typedef sph_haval_context sph_haval160_4_context;
00189
00193 typedef sph_haval_context sph_haval160_5_context;
00194
00198 typedef sph_haval_context sph_haval192_3_context;
00199
00203 typedef sph_haval_context sph_haval192_4_context;
00204
00208 typedef sph_haval_context sph_haval192_5_context;
00209
00213 typedef sph_haval_context sph_haval224_3_context;
00214
00218 typedef sph_haval_context sph_haval224_4_context;
00219
00223 typedef sph_haval_context sph_haval224_5_context;
00224
00228 typedef sph_haval_context sph_haval256_3_context;
00229
00233 typedef sph_haval_context sph_haval256_4_context;
00234
00238 typedef sph_haval_context sph_haval256_5_context;
00239
00246 void sph_haval128_3_init(void *cc);
00247
00256 void sph_haval128_3(void *cc, const void *data, size_t len);
00257
00266 void sph_haval128_3_close(void *cc, void *dst);
00267
00283 void sph_haval128_3_addbits_and_close(void *cc,
00284 unsigned ub, unsigned n, void *dst);
00285
00292 void sph_haval128_4_init(void *cc);
00293
00302 void sph_haval128_4(void *cc, const void *data, size_t len);
00303
00312 void sph_haval128_4_close(void *cc, void *dst);
00313
00329 void sph_haval128_4_addbits_and_close(void *cc,
00330 unsigned ub, unsigned n, void *dst);
00331
00338 void sph_haval128_5_init(void *cc);
00339
00348 void sph_haval128_5(void *cc, const void *data, size_t len);
00349
00358 void sph_haval128_5_close(void *cc, void *dst);
00359
00375 void sph_haval128_5_addbits_and_close(void *cc,
00376 unsigned ub, unsigned n, void *dst);
00377
00384 void sph_haval160_3_init(void *cc);
00385
00394 void sph_haval160_3(void *cc, const void *data, size_t len);
00395
00404 void sph_haval160_3_close(void *cc, void *dst);
00405
00421 void sph_haval160_3_addbits_and_close(void *cc,
00422 unsigned ub, unsigned n, void *dst);
00423
00430 void sph_haval160_4_init(void *cc);
00431
00440 void sph_haval160_4(void *cc, const void *data, size_t len);
00441
00450 void sph_haval160_4_close(void *cc, void *dst);
00451
00467 void sph_haval160_3_addbits_and_close(void *cc,
00468 unsigned ub, unsigned n, void *dst);
00469
00476 void sph_haval160_5_init(void *cc);
00477
00486 void sph_haval160_5(void *cc, const void *data, size_t len);
00487
00496 void sph_haval160_5_close(void *cc, void *dst);
00497
00513 void sph_haval160_5_addbits_and_close(void *cc,
00514 unsigned ub, unsigned n, void *dst);
00515
00522 void sph_haval192_3_init(void *cc);
00523
00532 void sph_haval192_3(void *cc, const void *data, size_t len);
00533
00542 void sph_haval192_3_close(void *cc, void *dst);
00543
00559 void sph_haval192_3_addbits_and_close(void *cc,
00560 unsigned ub, unsigned n, void *dst);
00561
00568 void sph_haval192_4_init(void *cc);
00569
00578 void sph_haval192_4(void *cc, const void *data, size_t len);
00579
00588 void sph_haval192_4_close(void *cc, void *dst);
00589
00605 void sph_haval192_4_addbits_and_close(void *cc,
00606 unsigned ub, unsigned n, void *dst);
00607
00614 void sph_haval192_5_init(void *cc);
00615
00624 void sph_haval192_5(void *cc, const void *data, size_t len);
00625
00634 void sph_haval192_5_close(void *cc, void *dst);
00635
00651 void sph_haval192_5_addbits_and_close(void *cc,
00652 unsigned ub, unsigned n, void *dst);
00653
00660 void sph_haval224_3_init(void *cc);
00661
00670 void sph_haval224_3(void *cc, const void *data, size_t len);
00671
00680 void sph_haval224_3_close(void *cc, void *dst);
00681
00697 void sph_haval224_3_addbits_and_close(void *cc,
00698 unsigned ub, unsigned n, void *dst);
00699
00706 void sph_haval224_4_init(void *cc);
00707
00716 void sph_haval224_4(void *cc, const void *data, size_t len);
00717
00726 void sph_haval224_4_close(void *cc, void *dst);
00727
00743 void sph_haval224_4_addbits_and_close(void *cc,
00744 unsigned ub, unsigned n, void *dst);
00745
00752 void sph_haval224_5_init(void *cc);
00753
00762 void sph_haval224_5(void *cc, const void *data, size_t len);
00763
00772 void sph_haval224_5_close(void *cc, void *dst);
00773
00789 void sph_haval224_5_addbits_and_close(void *cc,
00790 unsigned ub, unsigned n, void *dst);
00791
00798 void sph_haval256_3_init(void *cc);
00799
00808 void sph_haval256_3(void *cc, const void *data, size_t len);
00809
00818 void sph_haval256_3_close(void *cc, void *dst);
00819
00835 void sph_haval256_3_addbits_and_close(void *cc,
00836 unsigned ub, unsigned n, void *dst);
00837
00844 void sph_haval256_4_init(void *cc);
00845
00854 void sph_haval256_4(void *cc, const void *data, size_t len);
00855
00864 void sph_haval256_4_close(void *cc, void *dst);
00865
00881 void sph_haval256_4_addbits_and_close(void *cc,
00882 unsigned ub, unsigned n, void *dst);
00883
00890 void sph_haval256_5_init(void *cc);
00891
00900 void sph_haval256_5(void *cc, const void *data, size_t len);
00901
00910 void sph_haval256_5_close(void *cc, void *dst);
00911
00927 void sph_haval256_5_addbits_and_close(void *cc,
00928 unsigned ub, unsigned n, void *dst);
00929
00941 void sph_haval_3_comp(const sph_u32 msg[32], sph_u32 val[8]);
00942
00954 void sph_haval_4_comp(const sph_u32 msg[32], sph_u32 val[8]);
00955
00967 void sph_haval_5_comp(const sph_u32 msg[32], sph_u32 val[8]);
00968
00969 #endif