@leocuvee/wrkzcoin-multi-hashing 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/.travis.yml +5 -0
  2. package/LICENSE +674 -0
  3. package/README.md +87 -0
  4. package/appveyor.yml +12 -0
  5. package/argon2/.gitattributes +10 -0
  6. package/argon2/.travis.yml +25 -0
  7. package/argon2/Argon2.sln +160 -0
  8. package/argon2/CHANGELOG.md +32 -0
  9. package/argon2/CMakeLists.txt +87 -0
  10. package/argon2/LICENSE +314 -0
  11. package/argon2/Makefile +196 -0
  12. package/argon2/README.md +297 -0
  13. package/argon2/appveyor.yml +40 -0
  14. package/argon2/argon2-specs.pdf +0 -0
  15. package/argon2/export.sh +7 -0
  16. package/argon2/include/argon2.h +427 -0
  17. package/argon2/latex/CMakeLists.txt +34 -0
  18. package/argon2/latex/IEEEtran.cls +6347 -0
  19. package/argon2/latex/Makefile +18 -0
  20. package/argon2/latex/argon2-specs.tex +920 -0
  21. package/argon2/latex/pics/argon2-par.pdf +0 -0
  22. package/argon2/latex/pics/compression.pdf +0 -0
  23. package/argon2/latex/pics/generic.pdf +0 -0
  24. package/argon2/latex/pics/power-distribution.jpg +0 -0
  25. package/argon2/latex/tradeoff.bib +822 -0
  26. package/argon2/libargon2.pc +16 -0
  27. package/argon2/man/CMakeLists.txt +8 -0
  28. package/argon2/man/argon2.1 +57 -0
  29. package/argon2/meson.build +16 -0
  30. package/argon2/meson_options.txt +1 -0
  31. package/argon2/src/CMakeLists.txt +147 -0
  32. package/argon2/src/argon2.c +452 -0
  33. package/argon2/src/argon2.pc.in +11 -0
  34. package/argon2/src/blake2/blake2-impl.h +156 -0
  35. package/argon2/src/blake2/blake2.h +89 -0
  36. package/argon2/src/blake2/blake2b.c +390 -0
  37. package/argon2/src/blake2/blamka-round-opt.h +471 -0
  38. package/argon2/src/blake2/blamka-round-ref.h +56 -0
  39. package/argon2/src/core.c +634 -0
  40. package/argon2/src/core.h +228 -0
  41. package/argon2/src/encoding.c +467 -0
  42. package/argon2/src/encoding.h +57 -0
  43. package/argon2/src/genkat.h +51 -0
  44. package/argon2/src/meson.build +68 -0
  45. package/argon2/src/opt.c +283 -0
  46. package/argon2/src/optimization/CMakeLists.txt +10 -0
  47. package/argon2/src/ref.c +194 -0
  48. package/argon2/src/thread.c +57 -0
  49. package/argon2/src/thread.h +67 -0
  50. package/argon2/tests/CMakeLists.txt +43 -0
  51. package/argon2/tests/bench.c +111 -0
  52. package/argon2/tests/genkat.c +207 -0
  53. package/argon2/tests/kats/argon2d +12304 -0
  54. package/argon2/tests/kats/argon2d.shasum +1 -0
  55. package/argon2/tests/kats/argon2d_v16 +12304 -0
  56. package/argon2/tests/kats/argon2d_v16.shasum +1 -0
  57. package/argon2/tests/kats/argon2i +12304 -0
  58. package/argon2/tests/kats/argon2i.shasum +1 -0
  59. package/argon2/tests/kats/argon2i_v16 +12304 -0
  60. package/argon2/tests/kats/argon2i_v16.shasum +1 -0
  61. package/argon2/tests/kats/argon2id +12304 -0
  62. package/argon2/tests/kats/argon2id.shasum +1 -0
  63. package/argon2/tests/kats/argon2id_v16 +12304 -0
  64. package/argon2/tests/kats/argon2id_v16.shasum +1 -0
  65. package/argon2/tests/kats/check-sums.ps1 +48 -0
  66. package/argon2/tests/kats/check-sums.sh +16 -0
  67. package/argon2/tests/kats/test.ps1 +132 -0
  68. package/argon2/tests/kats/test.sh +117 -0
  69. package/argon2/tests/meson.build +34 -0
  70. package/argon2/tests/test.c +289 -0
  71. package/argon2/tool/CMakeLists.txt +7 -0
  72. package/argon2/tool/main.c +339 -0
  73. package/argon2/tool/meson.build +8 -0
  74. package/argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj +226 -0
  75. package/argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters +69 -0
  76. package/argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj +226 -0
  77. package/argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters +69 -0
  78. package/argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj +225 -0
  79. package/argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj.filters +66 -0
  80. package/argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj +239 -0
  81. package/argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters +72 -0
  82. package/argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj +227 -0
  83. package/argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters +69 -0
  84. package/argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj +226 -0
  85. package/argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters +69 -0
  86. package/argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj +226 -0
  87. package/argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters +69 -0
  88. package/argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj +225 -0
  89. package/argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj.filters +66 -0
  90. package/argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj +227 -0
  91. package/argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters +72 -0
  92. package/argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj +226 -0
  93. package/argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters +69 -0
  94. package/bcrypt.c +566 -0
  95. package/bcrypt.h +14 -0
  96. package/binding.gyp +93 -0
  97. package/blake.c +17 -0
  98. package/blake.h +16 -0
  99. package/boolberry.cc +11 -0
  100. package/boolberry.h +6 -0
  101. package/build/Makefile +354 -0
  102. package/build/Release/.deps/Release/multihashing.node.d +1 -0
  103. package/build/Release/.deps/Release/obj.target/multihashing/argon2/src/argon2.o.d +8 -0
  104. package/build/Release/.deps/Release/obj.target/multihashing/argon2/src/blake2/blake2b.o.d +8 -0
  105. package/build/Release/.deps/Release/obj.target/multihashing/argon2/src/core.o.d +10 -0
  106. package/build/Release/.deps/Release/obj.target/multihashing/argon2/src/encoding.o.d +8 -0
  107. package/build/Release/.deps/Release/obj.target/multihashing/argon2/src/ref.o.d +14 -0
  108. package/build/Release/.deps/Release/obj.target/multihashing/argon2/src/thread.o.d +5 -0
  109. package/build/Release/.deps/Release/obj.target/multihashing/bcrypt.o.d +4 -0
  110. package/build/Release/.deps/Release/obj.target/multihashing/blake.o.d +7 -0
  111. package/build/Release/.deps/Release/obj.target/multihashing/boolberry.o.d +12 -0
  112. package/build/Release/.deps/Release/obj.target/multihashing/c11.o.d +20 -0
  113. package/build/Release/.deps/Release/obj.target/multihashing/crypto/aesb.o.d +3 -0
  114. package/build/Release/.deps/Release/obj.target/multihashing/crypto/c_blake256.o.d +5 -0
  115. package/build/Release/.deps/Release/obj.target/multihashing/crypto/c_groestl.o.d +10 -0
  116. package/build/Release/.deps/Release/obj.target/multihashing/crypto/c_jh.o.d +9 -0
  117. package/build/Release/.deps/Release/obj.target/multihashing/crypto/c_keccak.o.d +7 -0
  118. package/build/Release/.deps/Release/obj.target/multihashing/crypto/c_skein.o.d +10 -0
  119. package/build/Release/.deps/Release/obj.target/multihashing/crypto/hash.o.d +7 -0
  120. package/build/Release/.deps/Release/obj.target/multihashing/crypto/oaes_lib.o.d +6 -0
  121. package/build/Release/.deps/Release/obj.target/multihashing/crypto/wild_keccak.o.d +8 -0
  122. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight.o.d +18 -0
  123. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight_dark.o.d +18 -0
  124. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight_dark_lite.o.d +18 -0
  125. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight_fast.o.d +18 -0
  126. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight_lite.o.d +18 -0
  127. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight_soft_shell.o.d +18 -0
  128. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight_turtle.o.d +18 -0
  129. package/build/Release/.deps/Release/obj.target/multihashing/cryptonight_turtle_lite.o.d +18 -0
  130. package/build/Release/.deps/Release/obj.target/multihashing/fresh.o.d +10 -0
  131. package/build/Release/.deps/Release/obj.target/multihashing/fugue.o.d +7 -0
  132. package/build/Release/.deps/Release/obj.target/multihashing/groestl.o.d +8 -0
  133. package/build/Release/.deps/Release/obj.target/multihashing/hefty1.o.d +12 -0
  134. package/build/Release/.deps/Release/obj.target/multihashing/keccak.o.d +8 -0
  135. package/build/Release/.deps/Release/obj.target/multihashing/multihashing.o.d +155 -0
  136. package/build/Release/.deps/Release/obj.target/multihashing/nist5.o.d +12 -0
  137. package/build/Release/.deps/Release/obj.target/multihashing/quark.o.d +14 -0
  138. package/build/Release/.deps/Release/obj.target/multihashing/qubit.o.d +12 -0
  139. package/build/Release/.deps/Release/obj.target/multihashing/scryptjane.o.d +30 -0
  140. package/build/Release/.deps/Release/obj.target/multihashing/scryptn.o.d +6 -0
  141. package/build/Release/.deps/Release/obj.target/multihashing/sha1.o.d +24 -0
  142. package/build/Release/.deps/Release/obj.target/multihashing/sha3/aes_helper.o.d +5 -0
  143. package/build/Release/.deps/Release/obj.target/multihashing/sha3/hamsi.o.d +7 -0
  144. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_blake.o.d +6 -0
  145. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_bmw.o.d +6 -0
  146. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_cubehash.o.d +6 -0
  147. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_echo.o.d +7 -0
  148. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_fugue.o.d +6 -0
  149. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_groestl.o.d +6 -0
  150. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_hefty1.o.d +5 -0
  151. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_jh.o.d +6 -0
  152. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_keccak.o.d +6 -0
  153. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_luffa.o.d +6 -0
  154. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_shabal.o.d +6 -0
  155. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_shavite.o.d +7 -0
  156. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_simd.o.d +6 -0
  157. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_skein.o.d +6 -0
  158. package/build/Release/.deps/Release/obj.target/multihashing/sha3/sph_whirlpool.o.d +8 -0
  159. package/build/Release/.deps/Release/obj.target/multihashing/shavite3.o.d +7 -0
  160. package/build/Release/.deps/Release/obj.target/multihashing/skein.o.d +8 -0
  161. package/build/Release/.deps/Release/obj.target/multihashing/x11.o.d +20 -0
  162. package/build/Release/.deps/Release/obj.target/multihashing/x13.o.d +23 -0
  163. package/build/Release/.deps/Release/obj.target/multihashing/x15.o.d +26 -0
  164. package/build/Release/.deps/Release/obj.target/multihashing.node.d +1 -0
  165. package/build/Release/multihashing.node +0 -0
  166. package/build/binding.Makefile +6 -0
  167. package/build/multihashing.target.mk +255 -0
  168. package/c11.c +85 -0
  169. package/c11.h +17 -0
  170. package/crypto/aesb.c +177 -0
  171. package/crypto/c_blake256.c +326 -0
  172. package/crypto/c_blake256.h +43 -0
  173. package/crypto/c_groestl.c +360 -0
  174. package/crypto/c_groestl.h +56 -0
  175. package/crypto/c_jh.c +367 -0
  176. package/crypto/c_jh.h +20 -0
  177. package/crypto/c_keccak.c +112 -0
  178. package/crypto/c_keccak.h +26 -0
  179. package/crypto/c_skein.c +2036 -0
  180. package/crypto/c_skein.h +45 -0
  181. package/crypto/crypto.h +186 -0
  182. package/crypto/cryptonote_core/account.cpp +50 -0
  183. package/crypto/cryptonote_core/account.h +61 -0
  184. package/crypto/cryptonote_core/cryptonote_basic_impl.cpp +186 -0
  185. package/crypto/cryptonote_core/cryptonote_basic_impl.h +65 -0
  186. package/crypto/cryptonote_core/cryptonote_format_utils.cpp +766 -0
  187. package/crypto/cryptonote_core/cryptonote_format_utils.h +30 -0
  188. package/crypto/cryptonote_protocol/cryptonote_protocol_defs.h +152 -0
  189. package/crypto/groestl_tables.h +38 -0
  190. package/crypto/hash-ops.h +57 -0
  191. package/crypto/hash.c +24 -0
  192. package/crypto/hash.h +22 -0
  193. package/crypto/int-util.h +230 -0
  194. package/crypto/oaes_config.h +50 -0
  195. package/crypto/oaes_lib.c +1468 -0
  196. package/crypto/oaes_lib.h +215 -0
  197. package/crypto/skein_port.h +190 -0
  198. package/crypto/variant2_int_sqrt.h +168 -0
  199. package/crypto/wild_keccak.cpp +119 -0
  200. package/crypto/wild_keccak.h +168 -0
  201. package/cryptonight.c +300 -0
  202. package/cryptonight.h +17 -0
  203. package/cryptonight_dark.c +300 -0
  204. package/cryptonight_dark.h +17 -0
  205. package/cryptonight_dark_lite.c +300 -0
  206. package/cryptonight_dark_lite.h +17 -0
  207. package/cryptonight_fast.c +300 -0
  208. package/cryptonight_fast.h +17 -0
  209. package/cryptonight_lite.c +300 -0
  210. package/cryptonight_lite.h +17 -0
  211. package/cryptonight_soft_shell.c +298 -0
  212. package/cryptonight_soft_shell.h +17 -0
  213. package/cryptonight_turtle.c +300 -0
  214. package/cryptonight_turtle.h +17 -0
  215. package/cryptonight_turtle_lite.c +300 -0
  216. package/cryptonight_turtle_lite.h +17 -0
  217. package/fresh.c +42 -0
  218. package/fresh.h +16 -0
  219. package/fugue.c +12 -0
  220. package/fugue.h +16 -0
  221. package/groestl.c +40 -0
  222. package/groestl.h +17 -0
  223. package/hefty1.c +63 -0
  224. package/hefty1.h +16 -0
  225. package/index.js +1 -0
  226. package/keccak.c +14 -0
  227. package/keccak.h +16 -0
  228. package/leocuvee-wrkzcoin-multi-hashing-0.0.20.tgz +0 -0
  229. package/multihashing.cc +699 -0
  230. package/nist5.c +46 -0
  231. package/nist5.h +16 -0
  232. package/package.json +56 -0
  233. package/quark.c +210 -0
  234. package/quark.h +16 -0
  235. package/qubit.c +45 -0
  236. package/qubit.h +16 -0
  237. package/scryptjane/scrypt-jane-chacha.h +132 -0
  238. package/scryptjane/scrypt-jane-hash.h +48 -0
  239. package/scryptjane/scrypt-jane-hash_keccak.h +168 -0
  240. package/scryptjane/scrypt-jane-hash_sha256.h +135 -0
  241. package/scryptjane/scrypt-jane-mix_chacha-avx.h +340 -0
  242. package/scryptjane/scrypt-jane-mix_chacha-sse2.h +371 -0
  243. package/scryptjane/scrypt-jane-mix_chacha-ssse3.h +348 -0
  244. package/scryptjane/scrypt-jane-mix_chacha.h +69 -0
  245. package/scryptjane/scrypt-jane-mix_salsa-avx.h +381 -0
  246. package/scryptjane/scrypt-jane-mix_salsa-sse2.h +443 -0
  247. package/scryptjane/scrypt-jane-mix_salsa.h +70 -0
  248. package/scryptjane/scrypt-jane-pbkdf2.h +112 -0
  249. package/scryptjane/scrypt-jane-portable-x86.h +364 -0
  250. package/scryptjane/scrypt-jane-portable.h +281 -0
  251. package/scryptjane/scrypt-jane-romix-basic.h +67 -0
  252. package/scryptjane/scrypt-jane-romix-template.h +118 -0
  253. package/scryptjane/scrypt-jane-romix.h +27 -0
  254. package/scryptjane/scrypt-jane-salsa.h +106 -0
  255. package/scryptjane/scrypt-jane-test-vectors.h +261 -0
  256. package/scryptjane.c +223 -0
  257. package/scryptjane.h +36 -0
  258. package/scryptn.c +258 -0
  259. package/scryptn.h +16 -0
  260. package/sha1.c +65 -0
  261. package/sha1.h +16 -0
  262. package/sha256.h +440 -0
  263. package/sha3/aes_helper.c +392 -0
  264. package/sha3/hamsi.c +867 -0
  265. package/sha3/hamsi_helper.c +39648 -0
  266. package/sha3/md_helper.c +347 -0
  267. package/sha3/sph_blake.c +1114 -0
  268. package/sha3/sph_blake.h +327 -0
  269. package/sha3/sph_bmw.c +965 -0
  270. package/sha3/sph_bmw.h +328 -0
  271. package/sha3/sph_cubehash.c +723 -0
  272. package/sha3/sph_cubehash.h +292 -0
  273. package/sha3/sph_echo.c +1031 -0
  274. package/sha3/sph_echo.h +320 -0
  275. package/sha3/sph_fugue.c +1208 -0
  276. package/sha3/sph_fugue.h +81 -0
  277. package/sha3/sph_groestl.c +3119 -0
  278. package/sha3/sph_groestl.h +329 -0
  279. package/sha3/sph_hamsi.h +321 -0
  280. package/sha3/sph_hefty1.c +378 -0
  281. package/sha3/sph_hefty1.h +66 -0
  282. package/sha3/sph_jh.c +1116 -0
  283. package/sha3/sph_jh.h +298 -0
  284. package/sha3/sph_keccak.c +1824 -0
  285. package/sha3/sph_keccak.h +293 -0
  286. package/sha3/sph_luffa.c +1426 -0
  287. package/sha3/sph_luffa.h +296 -0
  288. package/sha3/sph_shabal.c +806 -0
  289. package/sha3/sph_shabal.h +344 -0
  290. package/sha3/sph_shavite.c +1764 -0
  291. package/sha3/sph_shavite.h +314 -0
  292. package/sha3/sph_simd.c +1799 -0
  293. package/sha3/sph_simd.h +309 -0
  294. package/sha3/sph_skein.c +1254 -0
  295. package/sha3/sph_skein.h +298 -0
  296. package/sha3/sph_types.h +1976 -0
  297. package/sha3/sph_whirlpool.c +3480 -0
  298. package/sha3/sph_whirlpool.h +209 -0
  299. package/shavite3.c +24 -0
  300. package/shavite3.h +16 -0
  301. package/skein.c +26 -0
  302. package/skein.h +16 -0
  303. package/stdint.h +259 -0
  304. package/tests/argon2-tests.js +16 -0
  305. package/tests/benchmark.js +36 -0
  306. package/tests/cryptonight-tests.js +189 -0
  307. package/tests/cryptonight_monero.js +53 -0
  308. package/tests/test.js +16 -0
  309. package/x11.c +85 -0
  310. package/x11.h +16 -0
  311. package/x13.c +97 -0
  312. package/x13.h +5 -0
  313. package/x15.c +106 -0
  314. package/x15.h +16 -0
@@ -0,0 +1,314 @@
1
+ /* $Id: sph_shavite.h 208 2010-06-02 20:33:00Z tp $ */
2
+ /**
3
+ * SHAvite-3 interface. This code implements SHAvite-3 with the
4
+ * recommended parameters for SHA-3, with outputs of 224, 256, 384 and
5
+ * 512 bits. In the following, we call the function "SHAvite" (without
6
+ * the "-3" suffix), thus "SHAvite-224" is "SHAvite-3 with a 224-bit
7
+ * output".
8
+ *
9
+ * ==========================(LICENSE BEGIN)============================
10
+ *
11
+ * Copyright (c) 2007-2010 Projet RNRT SAPHIR
12
+ *
13
+ * Permission is hereby granted, free of charge, to any person obtaining
14
+ * a copy of this software and associated documentation files (the
15
+ * "Software"), to deal in the Software without restriction, including
16
+ * without limitation the rights to use, copy, modify, merge, publish,
17
+ * distribute, sublicense, and/or sell copies of the Software, and to
18
+ * permit persons to whom the Software is furnished to do so, subject to
19
+ * the following conditions:
20
+ *
21
+ * The above copyright notice and this permission notice shall be
22
+ * included in all copies or substantial portions of the Software.
23
+ *
24
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
+ *
32
+ * ===========================(LICENSE END)=============================
33
+ *
34
+ * @file sph_shavite.h
35
+ * @author Thomas Pornin <thomas.pornin@cryptolog.com>
36
+ */
37
+
38
+ #ifndef SPH_SHAVITE_H__
39
+ #define SPH_SHAVITE_H__
40
+
41
+ #include <stddef.h>
42
+ #include "sph_types.h"
43
+
44
+ #ifdef __cplusplus
45
+ extern "C"{
46
+ #endif
47
+
48
+ /**
49
+ * Output size (in bits) for SHAvite-224.
50
+ */
51
+ #define SPH_SIZE_shavite224 224
52
+
53
+ /**
54
+ * Output size (in bits) for SHAvite-256.
55
+ */
56
+ #define SPH_SIZE_shavite256 256
57
+
58
+ /**
59
+ * Output size (in bits) for SHAvite-384.
60
+ */
61
+ #define SPH_SIZE_shavite384 384
62
+
63
+ /**
64
+ * Output size (in bits) for SHAvite-512.
65
+ */
66
+ #define SPH_SIZE_shavite512 512
67
+
68
+ /**
69
+ * This structure is a context for SHAvite-224 and SHAvite-256 computations:
70
+ * it contains the intermediate values and some data from the last
71
+ * entered block. Once a SHAvite computation has been performed, the
72
+ * context can be reused for another computation.
73
+ *
74
+ * The contents of this structure are private. A running SHAvite
75
+ * computation can be cloned by copying the context (e.g. with a simple
76
+ * <code>memcpy()</code>).
77
+ */
78
+ typedef struct {
79
+ #ifndef DOXYGEN_IGNORE
80
+ unsigned char buf[64]; /* first field, for alignment */
81
+ size_t ptr;
82
+ sph_u32 h[8];
83
+ sph_u32 count0, count1;
84
+ #endif
85
+ } sph_shavite_small_context;
86
+
87
+ /**
88
+ * This structure is a context for SHAvite-224 computations. It is
89
+ * identical to the common <code>sph_shavite_small_context</code>.
90
+ */
91
+ typedef sph_shavite_small_context sph_shavite224_context;
92
+
93
+ /**
94
+ * This structure is a context for SHAvite-256 computations. It is
95
+ * identical to the common <code>sph_shavite_small_context</code>.
96
+ */
97
+ typedef sph_shavite_small_context sph_shavite256_context;
98
+
99
+ /**
100
+ * This structure is a context for SHAvite-384 and SHAvite-512 computations:
101
+ * it contains the intermediate values and some data from the last
102
+ * entered block. Once a SHAvite computation has been performed, the
103
+ * context can be reused for another computation.
104
+ *
105
+ * The contents of this structure are private. A running SHAvite
106
+ * computation can be cloned by copying the context (e.g. with a simple
107
+ * <code>memcpy()</code>).
108
+ */
109
+ typedef struct {
110
+ #ifndef DOXYGEN_IGNORE
111
+ unsigned char buf[128]; /* first field, for alignment */
112
+ size_t ptr;
113
+ sph_u32 h[16];
114
+ sph_u32 count0, count1, count2, count3;
115
+ #endif
116
+ } sph_shavite_big_context;
117
+
118
+ /**
119
+ * This structure is a context for SHAvite-384 computations. It is
120
+ * identical to the common <code>sph_shavite_small_context</code>.
121
+ */
122
+ typedef sph_shavite_big_context sph_shavite384_context;
123
+
124
+ /**
125
+ * This structure is a context for SHAvite-512 computations. It is
126
+ * identical to the common <code>sph_shavite_small_context</code>.
127
+ */
128
+ typedef sph_shavite_big_context sph_shavite512_context;
129
+
130
+ /**
131
+ * Initialize a SHAvite-224 context. This process performs no memory allocation.
132
+ *
133
+ * @param cc the SHAvite-224 context (pointer to a
134
+ * <code>sph_shavite224_context</code>)
135
+ */
136
+ void sph_shavite224_init(void *cc);
137
+
138
+ /**
139
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
140
+ * (in which case this function does nothing).
141
+ *
142
+ * @param cc the SHAvite-224 context
143
+ * @param data the input data
144
+ * @param len the input data length (in bytes)
145
+ */
146
+ void sph_shavite224(void *cc, const void *data, size_t len);
147
+
148
+ /**
149
+ * Terminate the current SHAvite-224 computation and output the result into
150
+ * the provided buffer. The destination buffer must be wide enough to
151
+ * accomodate the result (28 bytes). The context is automatically
152
+ * reinitialized.
153
+ *
154
+ * @param cc the SHAvite-224 context
155
+ * @param dst the destination buffer
156
+ */
157
+ void sph_shavite224_close(void *cc, void *dst);
158
+
159
+ /**
160
+ * Add a few additional bits (0 to 7) to the current computation, then
161
+ * terminate it and output the result in the provided buffer, which must
162
+ * be wide enough to accomodate the result (28 bytes). If bit number i
163
+ * in <code>ub</code> has value 2^i, then the extra bits are those
164
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
165
+ * level). The context is automatically reinitialized.
166
+ *
167
+ * @param cc the SHAvite-224 context
168
+ * @param ub the extra bits
169
+ * @param n the number of extra bits (0 to 7)
170
+ * @param dst the destination buffer
171
+ */
172
+ void sph_shavite224_addbits_and_close(
173
+ void *cc, unsigned ub, unsigned n, void *dst);
174
+
175
+ /**
176
+ * Initialize a SHAvite-256 context. This process performs no memory allocation.
177
+ *
178
+ * @param cc the SHAvite-256 context (pointer to a
179
+ * <code>sph_shavite256_context</code>)
180
+ */
181
+ void sph_shavite256_init(void *cc);
182
+
183
+ /**
184
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
185
+ * (in which case this function does nothing).
186
+ *
187
+ * @param cc the SHAvite-256 context
188
+ * @param data the input data
189
+ * @param len the input data length (in bytes)
190
+ */
191
+ void sph_shavite256(void *cc, const void *data, size_t len);
192
+
193
+ /**
194
+ * Terminate the current SHAvite-256 computation and output the result into
195
+ * the provided buffer. The destination buffer must be wide enough to
196
+ * accomodate the result (32 bytes). The context is automatically
197
+ * reinitialized.
198
+ *
199
+ * @param cc the SHAvite-256 context
200
+ * @param dst the destination buffer
201
+ */
202
+ void sph_shavite256_close(void *cc, void *dst);
203
+
204
+ /**
205
+ * Add a few additional bits (0 to 7) to the current computation, then
206
+ * terminate it and output the result in the provided buffer, which must
207
+ * be wide enough to accomodate the result (32 bytes). If bit number i
208
+ * in <code>ub</code> has value 2^i, then the extra bits are those
209
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
210
+ * level). The context is automatically reinitialized.
211
+ *
212
+ * @param cc the SHAvite-256 context
213
+ * @param ub the extra bits
214
+ * @param n the number of extra bits (0 to 7)
215
+ * @param dst the destination buffer
216
+ */
217
+ void sph_shavite256_addbits_and_close(
218
+ void *cc, unsigned ub, unsigned n, void *dst);
219
+
220
+ /**
221
+ * Initialize a SHAvite-384 context. This process performs no memory allocation.
222
+ *
223
+ * @param cc the SHAvite-384 context (pointer to a
224
+ * <code>sph_shavite384_context</code>)
225
+ */
226
+ void sph_shavite384_init(void *cc);
227
+
228
+ /**
229
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
230
+ * (in which case this function does nothing).
231
+ *
232
+ * @param cc the SHAvite-384 context
233
+ * @param data the input data
234
+ * @param len the input data length (in bytes)
235
+ */
236
+ void sph_shavite384(void *cc, const void *data, size_t len);
237
+
238
+ /**
239
+ * Terminate the current SHAvite-384 computation and output the result into
240
+ * the provided buffer. The destination buffer must be wide enough to
241
+ * accomodate the result (48 bytes). The context is automatically
242
+ * reinitialized.
243
+ *
244
+ * @param cc the SHAvite-384 context
245
+ * @param dst the destination buffer
246
+ */
247
+ void sph_shavite384_close(void *cc, void *dst);
248
+
249
+ /**
250
+ * Add a few additional bits (0 to 7) to the current computation, then
251
+ * terminate it and output the result in the provided buffer, which must
252
+ * be wide enough to accomodate the result (48 bytes). If bit number i
253
+ * in <code>ub</code> has value 2^i, then the extra bits are those
254
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
255
+ * level). The context is automatically reinitialized.
256
+ *
257
+ * @param cc the SHAvite-384 context
258
+ * @param ub the extra bits
259
+ * @param n the number of extra bits (0 to 7)
260
+ * @param dst the destination buffer
261
+ */
262
+ void sph_shavite384_addbits_and_close(
263
+ void *cc, unsigned ub, unsigned n, void *dst);
264
+
265
+ /**
266
+ * Initialize a SHAvite-512 context. This process performs no memory allocation.
267
+ *
268
+ * @param cc the SHAvite-512 context (pointer to a
269
+ * <code>sph_shavite512_context</code>)
270
+ */
271
+ void sph_shavite512_init(void *cc);
272
+
273
+ /**
274
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
275
+ * (in which case this function does nothing).
276
+ *
277
+ * @param cc the SHAvite-512 context
278
+ * @param data the input data
279
+ * @param len the input data length (in bytes)
280
+ */
281
+ void sph_shavite512(void *cc, const void *data, size_t len);
282
+
283
+ /**
284
+ * Terminate the current SHAvite-512 computation and output the result into
285
+ * the provided buffer. The destination buffer must be wide enough to
286
+ * accomodate the result (64 bytes). The context is automatically
287
+ * reinitialized.
288
+ *
289
+ * @param cc the SHAvite-512 context
290
+ * @param dst the destination buffer
291
+ */
292
+ void sph_shavite512_close(void *cc, void *dst);
293
+
294
+ /**
295
+ * Add a few additional bits (0 to 7) to the current computation, then
296
+ * terminate it and output the result in the provided buffer, which must
297
+ * be wide enough to accomodate the result (64 bytes). If bit number i
298
+ * in <code>ub</code> has value 2^i, then the extra bits are those
299
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
300
+ * level). The context is automatically reinitialized.
301
+ *
302
+ * @param cc the SHAvite-512 context
303
+ * @param ub the extra bits
304
+ * @param n the number of extra bits (0 to 7)
305
+ * @param dst the destination buffer
306
+ */
307
+ void sph_shavite512_addbits_and_close(
308
+ void *cc, unsigned ub, unsigned n, void *dst);
309
+
310
+ #ifdef __cplusplus
311
+ }
312
+ #endif
313
+
314
+ #endif