@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
package/sha3/sph_bmw.h ADDED
@@ -0,0 +1,328 @@
1
+ /* $Id: sph_bmw.h 216 2010-06-08 09:46:57Z tp $ */
2
+ /**
3
+ * BMW interface. BMW (aka "Blue Midnight Wish") is a family of
4
+ * functions which differ by their output size; this implementation
5
+ * defines BMW for output sizes 224, 256, 384 and 512 bits.
6
+ *
7
+ * ==========================(LICENSE BEGIN)============================
8
+ *
9
+ * Copyright (c) 2007-2010 Projet RNRT SAPHIR
10
+ *
11
+ * Permission is hereby granted, free of charge, to any person obtaining
12
+ * a copy of this software and associated documentation files (the
13
+ * "Software"), to deal in the Software without restriction, including
14
+ * without limitation the rights to use, copy, modify, merge, publish,
15
+ * distribute, sublicense, and/or sell copies of the Software, and to
16
+ * permit persons to whom the Software is furnished to do so, subject to
17
+ * the following conditions:
18
+ *
19
+ * The above copyright notice and this permission notice shall be
20
+ * included in all copies or substantial portions of the Software.
21
+ *
22
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
26
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
28
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29
+ *
30
+ * ===========================(LICENSE END)=============================
31
+ *
32
+ * @file sph_bmw.h
33
+ * @author Thomas Pornin <thomas.pornin@cryptolog.com>
34
+ */
35
+
36
+ #ifndef SPH_BMW_H__
37
+ #define SPH_BMW_H__
38
+
39
+ #ifdef __cplusplus
40
+ extern "C"{
41
+ #endif
42
+
43
+ #include <stddef.h>
44
+ #include "sph_types.h"
45
+
46
+ /**
47
+ * Output size (in bits) for BMW-224.
48
+ */
49
+ #define SPH_SIZE_bmw224 224
50
+
51
+ /**
52
+ * Output size (in bits) for BMW-256.
53
+ */
54
+ #define SPH_SIZE_bmw256 256
55
+
56
+ #if SPH_64
57
+
58
+ /**
59
+ * Output size (in bits) for BMW-384.
60
+ */
61
+ #define SPH_SIZE_bmw384 384
62
+
63
+ /**
64
+ * Output size (in bits) for BMW-512.
65
+ */
66
+ #define SPH_SIZE_bmw512 512
67
+
68
+ #endif
69
+
70
+ /**
71
+ * This structure is a context for BMW-224 and BMW-256 computations:
72
+ * it contains the intermediate values and some data from the last
73
+ * entered block. Once a BMW computation has been performed, the
74
+ * context can be reused for another computation.
75
+ *
76
+ * The contents of this structure are private. A running BMW
77
+ * computation can be cloned by copying the context (e.g. with a simple
78
+ * <code>memcpy()</code>).
79
+ */
80
+ typedef struct {
81
+ #ifndef DOXYGEN_IGNORE
82
+ unsigned char buf[64]; /* first field, for alignment */
83
+ size_t ptr;
84
+ sph_u32 H[16];
85
+ #if SPH_64
86
+ sph_u64 bit_count;
87
+ #else
88
+ sph_u32 bit_count_high, bit_count_low;
89
+ #endif
90
+ #endif
91
+ } sph_bmw_small_context;
92
+
93
+ /**
94
+ * This structure is a context for BMW-224 computations. It is
95
+ * identical to the common <code>sph_bmw_small_context</code>.
96
+ */
97
+ typedef sph_bmw_small_context sph_bmw224_context;
98
+
99
+ /**
100
+ * This structure is a context for BMW-256 computations. It is
101
+ * identical to the common <code>sph_bmw_small_context</code>.
102
+ */
103
+ typedef sph_bmw_small_context sph_bmw256_context;
104
+
105
+ #if SPH_64
106
+
107
+ /**
108
+ * This structure is a context for BMW-384 and BMW-512 computations:
109
+ * it contains the intermediate values and some data from the last
110
+ * entered block. Once a BMW computation has been performed, the
111
+ * context can be reused for another computation.
112
+ *
113
+ * The contents of this structure are private. A running BMW
114
+ * computation can be cloned by copying the context (e.g. with a simple
115
+ * <code>memcpy()</code>).
116
+ */
117
+ typedef struct {
118
+ #ifndef DOXYGEN_IGNORE
119
+ unsigned char buf[128]; /* first field, for alignment */
120
+ size_t ptr;
121
+ sph_u64 H[16];
122
+ sph_u64 bit_count;
123
+ #endif
124
+ } sph_bmw_big_context;
125
+
126
+ /**
127
+ * This structure is a context for BMW-384 computations. It is
128
+ * identical to the common <code>sph_bmw_small_context</code>.
129
+ */
130
+ typedef sph_bmw_big_context sph_bmw384_context;
131
+
132
+ /**
133
+ * This structure is a context for BMW-512 computations. It is
134
+ * identical to the common <code>sph_bmw_small_context</code>.
135
+ */
136
+ typedef sph_bmw_big_context sph_bmw512_context;
137
+
138
+ #endif
139
+
140
+ /**
141
+ * Initialize a BMW-224 context. This process performs no memory allocation.
142
+ *
143
+ * @param cc the BMW-224 context (pointer to a
144
+ * <code>sph_bmw224_context</code>)
145
+ */
146
+ void sph_bmw224_init(void *cc);
147
+
148
+ /**
149
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
150
+ * (in which case this function does nothing).
151
+ *
152
+ * @param cc the BMW-224 context
153
+ * @param data the input data
154
+ * @param len the input data length (in bytes)
155
+ */
156
+ void sph_bmw224(void *cc, const void *data, size_t len);
157
+
158
+ /**
159
+ * Terminate the current BMW-224 computation and output the result into
160
+ * the provided buffer. The destination buffer must be wide enough to
161
+ * accomodate the result (28 bytes). The context is automatically
162
+ * reinitialized.
163
+ *
164
+ * @param cc the BMW-224 context
165
+ * @param dst the destination buffer
166
+ */
167
+ void sph_bmw224_close(void *cc, void *dst);
168
+
169
+ /**
170
+ * Add a few additional bits (0 to 7) to the current computation, then
171
+ * terminate it and output the result in the provided buffer, which must
172
+ * be wide enough to accomodate the result (28 bytes). If bit number i
173
+ * in <code>ub</code> has value 2^i, then the extra bits are those
174
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
175
+ * level). The context is automatically reinitialized.
176
+ *
177
+ * @param cc the BMW-224 context
178
+ * @param ub the extra bits
179
+ * @param n the number of extra bits (0 to 7)
180
+ * @param dst the destination buffer
181
+ */
182
+ void sph_bmw224_addbits_and_close(
183
+ void *cc, unsigned ub, unsigned n, void *dst);
184
+
185
+ /**
186
+ * Initialize a BMW-256 context. This process performs no memory allocation.
187
+ *
188
+ * @param cc the BMW-256 context (pointer to a
189
+ * <code>sph_bmw256_context</code>)
190
+ */
191
+ void sph_bmw256_init(void *cc);
192
+
193
+ /**
194
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
195
+ * (in which case this function does nothing).
196
+ *
197
+ * @param cc the BMW-256 context
198
+ * @param data the input data
199
+ * @param len the input data length (in bytes)
200
+ */
201
+ void sph_bmw256(void *cc, const void *data, size_t len);
202
+
203
+ /**
204
+ * Terminate the current BMW-256 computation and output the result into
205
+ * the provided buffer. The destination buffer must be wide enough to
206
+ * accomodate the result (32 bytes). The context is automatically
207
+ * reinitialized.
208
+ *
209
+ * @param cc the BMW-256 context
210
+ * @param dst the destination buffer
211
+ */
212
+ void sph_bmw256_close(void *cc, void *dst);
213
+
214
+ /**
215
+ * Add a few additional bits (0 to 7) to the current computation, then
216
+ * terminate it and output the result in the provided buffer, which must
217
+ * be wide enough to accomodate the result (32 bytes). If bit number i
218
+ * in <code>ub</code> has value 2^i, then the extra bits are those
219
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
220
+ * level). The context is automatically reinitialized.
221
+ *
222
+ * @param cc the BMW-256 context
223
+ * @param ub the extra bits
224
+ * @param n the number of extra bits (0 to 7)
225
+ * @param dst the destination buffer
226
+ */
227
+ void sph_bmw256_addbits_and_close(
228
+ void *cc, unsigned ub, unsigned n, void *dst);
229
+
230
+ #if SPH_64
231
+
232
+ /**
233
+ * Initialize a BMW-384 context. This process performs no memory allocation.
234
+ *
235
+ * @param cc the BMW-384 context (pointer to a
236
+ * <code>sph_bmw384_context</code>)
237
+ */
238
+ void sph_bmw384_init(void *cc);
239
+
240
+ /**
241
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
242
+ * (in which case this function does nothing).
243
+ *
244
+ * @param cc the BMW-384 context
245
+ * @param data the input data
246
+ * @param len the input data length (in bytes)
247
+ */
248
+ void sph_bmw384(void *cc, const void *data, size_t len);
249
+
250
+ /**
251
+ * Terminate the current BMW-384 computation and output the result into
252
+ * the provided buffer. The destination buffer must be wide enough to
253
+ * accomodate the result (48 bytes). The context is automatically
254
+ * reinitialized.
255
+ *
256
+ * @param cc the BMW-384 context
257
+ * @param dst the destination buffer
258
+ */
259
+ void sph_bmw384_close(void *cc, void *dst);
260
+
261
+ /**
262
+ * Add a few additional bits (0 to 7) to the current computation, then
263
+ * terminate it and output the result in the provided buffer, which must
264
+ * be wide enough to accomodate the result (48 bytes). If bit number i
265
+ * in <code>ub</code> has value 2^i, then the extra bits are those
266
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
267
+ * level). The context is automatically reinitialized.
268
+ *
269
+ * @param cc the BMW-384 context
270
+ * @param ub the extra bits
271
+ * @param n the number of extra bits (0 to 7)
272
+ * @param dst the destination buffer
273
+ */
274
+ void sph_bmw384_addbits_and_close(
275
+ void *cc, unsigned ub, unsigned n, void *dst);
276
+
277
+ /**
278
+ * Initialize a BMW-512 context. This process performs no memory allocation.
279
+ *
280
+ * @param cc the BMW-512 context (pointer to a
281
+ * <code>sph_bmw512_context</code>)
282
+ */
283
+ void sph_bmw512_init(void *cc);
284
+
285
+ /**
286
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
287
+ * (in which case this function does nothing).
288
+ *
289
+ * @param cc the BMW-512 context
290
+ * @param data the input data
291
+ * @param len the input data length (in bytes)
292
+ */
293
+ void sph_bmw512(void *cc, const void *data, size_t len);
294
+
295
+ /**
296
+ * Terminate the current BMW-512 computation and output the result into
297
+ * the provided buffer. The destination buffer must be wide enough to
298
+ * accomodate the result (64 bytes). The context is automatically
299
+ * reinitialized.
300
+ *
301
+ * @param cc the BMW-512 context
302
+ * @param dst the destination buffer
303
+ */
304
+ void sph_bmw512_close(void *cc, void *dst);
305
+
306
+ /**
307
+ * Add a few additional bits (0 to 7) to the current computation, then
308
+ * terminate it and output the result in the provided buffer, which must
309
+ * be wide enough to accomodate the result (64 bytes). If bit number i
310
+ * in <code>ub</code> has value 2^i, then the extra bits are those
311
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
312
+ * level). The context is automatically reinitialized.
313
+ *
314
+ * @param cc the BMW-512 context
315
+ * @param ub the extra bits
316
+ * @param n the number of extra bits (0 to 7)
317
+ * @param dst the destination buffer
318
+ */
319
+ void sph_bmw512_addbits_and_close(
320
+ void *cc, unsigned ub, unsigned n, void *dst);
321
+
322
+ #endif
323
+
324
+ #ifdef __cplusplus
325
+ }
326
+ #endif
327
+
328
+ #endif