sphlib
|
00001 /* $Id: sph_haval.h 218 2010-06-08 17:06:34Z tp $ */ 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]; /* first field, for alignment */ 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