react-native-quick-crypto 1.0.0-beta.2 → 1.0.0-beta.21

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 (462) hide show
  1. package/QuickCrypto.podspec +143 -7
  2. package/README.md +12 -6
  3. package/android/CMakeLists.txt +82 -21
  4. package/android/build.gradle +47 -4
  5. package/android/src/main/cpp/cpp-adapter.cpp +3 -10
  6. package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +13 -10
  7. package/app.plugin.js +3 -0
  8. package/cpp/blake3/HybridBlake3.cpp +118 -0
  9. package/cpp/blake3/HybridBlake3.hpp +35 -0
  10. package/cpp/cipher/CCMCipher.cpp +199 -0
  11. package/cpp/cipher/CCMCipher.hpp +26 -0
  12. package/cpp/cipher/ChaCha20Cipher.cpp +97 -0
  13. package/cpp/cipher/ChaCha20Cipher.hpp +25 -0
  14. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +170 -0
  15. package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +30 -0
  16. package/cpp/cipher/HybridCipher.cpp +322 -0
  17. package/cpp/cipher/HybridCipher.hpp +68 -0
  18. package/cpp/cipher/HybridCipherFactory.hpp +97 -0
  19. package/cpp/cipher/OCBCipher.cpp +55 -0
  20. package/cpp/cipher/OCBCipher.hpp +19 -0
  21. package/cpp/cipher/XSalsa20Cipher.cpp +61 -0
  22. package/cpp/cipher/XSalsa20Cipher.hpp +33 -0
  23. package/cpp/ec/HybridEcKeyPair.cpp +428 -0
  24. package/cpp/ec/HybridEcKeyPair.hpp +48 -0
  25. package/cpp/ed25519/HybridEdKeyPair.cpp +300 -0
  26. package/cpp/ed25519/HybridEdKeyPair.hpp +63 -0
  27. package/cpp/hash/HybridHash.cpp +185 -0
  28. package/cpp/hash/HybridHash.hpp +43 -0
  29. package/cpp/hmac/HybridHmac.cpp +95 -0
  30. package/cpp/hmac/HybridHmac.hpp +31 -0
  31. package/cpp/keys/HybridKeyObjectHandle.cpp +243 -0
  32. package/cpp/keys/HybridKeyObjectHandle.hpp +42 -0
  33. package/cpp/keys/KeyObjectData.cpp +226 -0
  34. package/cpp/keys/KeyObjectData.hpp +71 -0
  35. package/cpp/keys/node.h +5 -0
  36. package/cpp/pbkdf2/HybridPbkdf2.cpp +51 -0
  37. package/cpp/pbkdf2/HybridPbkdf2.hpp +24 -0
  38. package/cpp/random/HybridRandom.cpp +32 -18
  39. package/cpp/random/HybridRandom.hpp +18 -30
  40. package/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
  41. package/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
  42. package/cpp/utils/Macros.hpp +68 -0
  43. package/cpp/utils/Utils.hpp +53 -1
  44. package/deps/blake3/.cargo/config.toml +2 -0
  45. package/deps/blake3/.git-blame-ignore-revs +2 -0
  46. package/deps/blake3/.github/workflows/build_b3sum.py +38 -0
  47. package/deps/blake3/.github/workflows/ci.yml +491 -0
  48. package/deps/blake3/.github/workflows/tag.yml +43 -0
  49. package/deps/blake3/.github/workflows/upload_github_release_asset.py +73 -0
  50. package/deps/blake3/CONTRIBUTING.md +31 -0
  51. package/deps/blake3/Cargo.toml +135 -0
  52. package/deps/blake3/LICENSE_A2 +202 -0
  53. package/deps/blake3/LICENSE_A2LLVM +219 -0
  54. package/deps/blake3/LICENSE_CC0 +121 -0
  55. package/deps/blake3/README.md +229 -0
  56. package/deps/blake3/b3sum/Cargo.lock +513 -0
  57. package/deps/blake3/b3sum/Cargo.toml +26 -0
  58. package/deps/blake3/b3sum/README.md +72 -0
  59. package/deps/blake3/b3sum/src/main.rs +564 -0
  60. package/deps/blake3/b3sum/src/unit_tests.rs +235 -0
  61. package/deps/blake3/b3sum/tests/cli_tests.rs +680 -0
  62. package/deps/blake3/b3sum/what_does_check_do.md +176 -0
  63. package/deps/blake3/benches/bench.rs +623 -0
  64. package/deps/blake3/build.rs +389 -0
  65. package/deps/blake3/c/CMakeLists.txt +383 -0
  66. package/deps/blake3/c/CMakePresets.json +73 -0
  67. package/deps/blake3/c/Makefile.testing +82 -0
  68. package/deps/blake3/c/README.md +403 -0
  69. package/deps/blake3/c/blake3-config.cmake.in +14 -0
  70. package/deps/blake3/c/blake3.c +650 -0
  71. package/deps/blake3/c/blake3.h +86 -0
  72. package/deps/blake3/c/blake3_avx2.c +326 -0
  73. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +1815 -0
  74. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +1817 -0
  75. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +1828 -0
  76. package/deps/blake3/c/blake3_avx512.c +1388 -0
  77. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +4824 -0
  78. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +2615 -0
  79. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +2634 -0
  80. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +32 -0
  81. package/deps/blake3/c/blake3_c_rust_bindings/README.md +4 -0
  82. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +477 -0
  83. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +253 -0
  84. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +31 -0
  85. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +333 -0
  86. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +696 -0
  87. package/deps/blake3/c/blake3_dispatch.c +332 -0
  88. package/deps/blake3/c/blake3_impl.h +333 -0
  89. package/deps/blake3/c/blake3_neon.c +366 -0
  90. package/deps/blake3/c/blake3_portable.c +160 -0
  91. package/deps/blake3/c/blake3_sse2.c +566 -0
  92. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +2291 -0
  93. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +2332 -0
  94. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +2350 -0
  95. package/deps/blake3/c/blake3_sse41.c +560 -0
  96. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +2028 -0
  97. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +2069 -0
  98. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +2089 -0
  99. package/deps/blake3/c/blake3_tbb.cpp +37 -0
  100. package/deps/blake3/c/dependencies/CMakeLists.txt +3 -0
  101. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +28 -0
  102. package/deps/blake3/c/example.c +36 -0
  103. package/deps/blake3/c/example_tbb.c +57 -0
  104. package/deps/blake3/c/libblake3.pc.in +12 -0
  105. package/deps/blake3/c/main.c +166 -0
  106. package/deps/blake3/c/test.py +97 -0
  107. package/deps/blake3/media/B3.svg +70 -0
  108. package/deps/blake3/media/BLAKE3.svg +85 -0
  109. package/deps/blake3/media/speed.svg +1474 -0
  110. package/deps/blake3/reference_impl/Cargo.toml +8 -0
  111. package/deps/blake3/reference_impl/README.md +14 -0
  112. package/deps/blake3/reference_impl/reference_impl.rs +374 -0
  113. package/deps/blake3/src/ffi_avx2.rs +65 -0
  114. package/deps/blake3/src/ffi_avx512.rs +169 -0
  115. package/deps/blake3/src/ffi_neon.rs +82 -0
  116. package/deps/blake3/src/ffi_sse2.rs +126 -0
  117. package/deps/blake3/src/ffi_sse41.rs +126 -0
  118. package/deps/blake3/src/guts.rs +60 -0
  119. package/deps/blake3/src/hazmat.rs +704 -0
  120. package/deps/blake3/src/io.rs +64 -0
  121. package/deps/blake3/src/join.rs +92 -0
  122. package/deps/blake3/src/lib.rs +1835 -0
  123. package/deps/blake3/src/platform.rs +587 -0
  124. package/deps/blake3/src/portable.rs +198 -0
  125. package/deps/blake3/src/rust_avx2.rs +474 -0
  126. package/deps/blake3/src/rust_sse2.rs +775 -0
  127. package/deps/blake3/src/rust_sse41.rs +766 -0
  128. package/deps/blake3/src/test.rs +1049 -0
  129. package/deps/blake3/src/traits.rs +227 -0
  130. package/deps/blake3/src/wasm32_simd.rs +794 -0
  131. package/deps/blake3/test_vectors/Cargo.toml +19 -0
  132. package/deps/blake3/test_vectors/cross_test.sh +25 -0
  133. package/deps/blake3/test_vectors/src/bin/generate.rs +4 -0
  134. package/deps/blake3/test_vectors/src/lib.rs +350 -0
  135. package/deps/blake3/test_vectors/test_vectors.json +217 -0
  136. package/deps/blake3/tools/compiler_version/Cargo.toml +7 -0
  137. package/deps/blake3/tools/compiler_version/build.rs +6 -0
  138. package/deps/blake3/tools/compiler_version/src/main.rs +27 -0
  139. package/deps/blake3/tools/instruction_set_support/Cargo.toml +6 -0
  140. package/deps/blake3/tools/instruction_set_support/src/main.rs +10 -0
  141. package/deps/blake3/tools/release.md +16 -0
  142. package/deps/fastpbkdf2/fastpbkdf2.c +356 -0
  143. package/deps/fastpbkdf2/fastpbkdf2.h +68 -0
  144. package/deps/ncrypto/ncrypto.cc +4679 -0
  145. package/deps/ncrypto/ncrypto.h +1625 -0
  146. package/lib/commonjs/blake3.js +98 -0
  147. package/lib/commonjs/blake3.js.map +1 -0
  148. package/lib/commonjs/cipher.js +180 -0
  149. package/lib/commonjs/cipher.js.map +1 -0
  150. package/lib/commonjs/ec.js +344 -0
  151. package/lib/commonjs/ec.js.map +1 -0
  152. package/lib/commonjs/ed.js +185 -0
  153. package/lib/commonjs/ed.js.map +1 -0
  154. package/lib/commonjs/expo-plugin/@types.js +2 -0
  155. package/lib/commonjs/expo-plugin/@types.js.map +1 -0
  156. package/lib/commonjs/expo-plugin/withRNQC.js +25 -0
  157. package/lib/commonjs/expo-plugin/withRNQC.js.map +1 -0
  158. package/lib/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
  159. package/lib/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
  160. package/lib/commonjs/expo-plugin/withSodiumIos.js +26 -0
  161. package/lib/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
  162. package/lib/commonjs/expo-plugin/withXCode.js +51 -0
  163. package/lib/commonjs/expo-plugin/withXCode.js.map +1 -0
  164. package/lib/commonjs/hash.js +215 -0
  165. package/lib/commonjs/hash.js.map +1 -0
  166. package/lib/commonjs/hmac.js +109 -0
  167. package/lib/commonjs/hmac.js.map +1 -0
  168. package/lib/commonjs/index.js +152 -32
  169. package/lib/commonjs/index.js.map +1 -1
  170. package/lib/commonjs/keys/classes.js +250 -0
  171. package/lib/commonjs/keys/classes.js.map +1 -0
  172. package/lib/commonjs/keys/generateKeyPair.js +102 -0
  173. package/lib/commonjs/keys/generateKeyPair.js.map +1 -0
  174. package/lib/commonjs/keys/index.js +89 -0
  175. package/lib/commonjs/keys/index.js.map +1 -0
  176. package/lib/commonjs/keys/signVerify.js +41 -0
  177. package/lib/commonjs/keys/signVerify.js.map +1 -0
  178. package/lib/commonjs/keys/utils.js +123 -0
  179. package/lib/commonjs/keys/utils.js.map +1 -0
  180. package/lib/commonjs/pbkdf2.js +89 -0
  181. package/lib/commonjs/pbkdf2.js.map +1 -0
  182. package/lib/commonjs/random.js +9 -3
  183. package/lib/commonjs/random.js.map +1 -1
  184. package/lib/commonjs/rsa.js +129 -0
  185. package/lib/commonjs/rsa.js.map +1 -0
  186. package/lib/commonjs/specs/blake3.nitro.js +6 -0
  187. package/lib/commonjs/specs/blake3.nitro.js.map +1 -0
  188. package/lib/commonjs/specs/cipher.nitro.js +6 -0
  189. package/lib/commonjs/specs/cipher.nitro.js.map +1 -0
  190. package/lib/commonjs/specs/ecKeyPair.nitro.js +6 -0
  191. package/lib/commonjs/specs/ecKeyPair.nitro.js.map +1 -0
  192. package/lib/commonjs/specs/edKeyPair.nitro.js +6 -0
  193. package/lib/commonjs/specs/edKeyPair.nitro.js.map +1 -0
  194. package/lib/commonjs/specs/hash.nitro.js +6 -0
  195. package/lib/commonjs/specs/hash.nitro.js.map +1 -0
  196. package/lib/commonjs/specs/hmac.nitro.js +6 -0
  197. package/lib/commonjs/specs/hmac.nitro.js.map +1 -0
  198. package/lib/commonjs/specs/keyObjectHandle.nitro.js +6 -0
  199. package/lib/commonjs/specs/keyObjectHandle.nitro.js.map +1 -0
  200. package/lib/commonjs/specs/pbkdf2.nitro.js +6 -0
  201. package/lib/commonjs/specs/pbkdf2.nitro.js.map +1 -0
  202. package/lib/commonjs/specs/rsaKeyPair.nitro.js +6 -0
  203. package/lib/commonjs/specs/rsaKeyPair.nitro.js.map +1 -0
  204. package/lib/commonjs/subtle.js +365 -0
  205. package/lib/commonjs/subtle.js.map +1 -0
  206. package/lib/commonjs/utils/cipher.js +64 -0
  207. package/lib/commonjs/utils/cipher.js.map +1 -0
  208. package/lib/commonjs/utils/conversion.js +140 -6
  209. package/lib/commonjs/utils/conversion.js.map +1 -1
  210. package/lib/commonjs/utils/errors.js +14 -0
  211. package/lib/commonjs/utils/errors.js.map +1 -0
  212. package/lib/commonjs/utils/hashnames.js +91 -0
  213. package/lib/commonjs/utils/hashnames.js.map +1 -0
  214. package/lib/commonjs/utils/index.js +65 -5
  215. package/lib/commonjs/utils/index.js.map +1 -1
  216. package/lib/commonjs/utils/noble.js +82 -0
  217. package/lib/commonjs/utils/noble.js.map +1 -0
  218. package/lib/commonjs/utils/types.js +52 -0
  219. package/lib/commonjs/utils/types.js.map +1 -1
  220. package/lib/commonjs/utils/validation.js +98 -0
  221. package/lib/commonjs/utils/validation.js.map +1 -0
  222. package/lib/module/blake3.js +90 -0
  223. package/lib/module/blake3.js.map +1 -0
  224. package/lib/module/cipher.js +173 -0
  225. package/lib/module/cipher.js.map +1 -0
  226. package/lib/module/ec.js +336 -0
  227. package/lib/module/ec.js.map +1 -0
  228. package/lib/module/ed.js +178 -0
  229. package/lib/module/ed.js.map +1 -0
  230. package/lib/module/expo-plugin/@types.js +2 -0
  231. package/lib/module/expo-plugin/@types.js.map +1 -0
  232. package/lib/module/expo-plugin/withRNQC.js +21 -0
  233. package/lib/module/expo-plugin/withRNQC.js.map +1 -0
  234. package/lib/module/expo-plugin/withSodiumAndroid.js +20 -0
  235. package/lib/module/expo-plugin/withSodiumAndroid.js.map +1 -0
  236. package/lib/module/expo-plugin/withSodiumIos.js +20 -0
  237. package/lib/module/expo-plugin/withSodiumIos.js.map +1 -0
  238. package/lib/module/expo-plugin/withXCode.js +46 -0
  239. package/lib/module/expo-plugin/withXCode.js.map +1 -0
  240. package/lib/module/hash.js +207 -0
  241. package/lib/module/hash.js.map +1 -0
  242. package/lib/module/hmac.js +104 -0
  243. package/lib/module/hmac.js.map +1 -0
  244. package/lib/module/index.js +33 -29
  245. package/lib/module/index.js.map +1 -1
  246. package/lib/module/keys/classes.js +241 -0
  247. package/lib/module/keys/classes.js.map +1 -0
  248. package/lib/module/keys/generateKeyPair.js +96 -0
  249. package/lib/module/keys/generateKeyPair.js.map +1 -0
  250. package/lib/module/keys/index.js +32 -0
  251. package/lib/module/keys/index.js.map +1 -0
  252. package/lib/module/keys/signVerify.js +41 -0
  253. package/lib/module/keys/signVerify.js.map +1 -0
  254. package/lib/module/keys/utils.js +114 -0
  255. package/lib/module/keys/utils.js.map +1 -0
  256. package/lib/module/pbkdf2.js +83 -0
  257. package/lib/module/pbkdf2.js.map +1 -0
  258. package/lib/module/random.js +7 -1
  259. package/lib/module/random.js.map +1 -1
  260. package/lib/module/rsa.js +123 -0
  261. package/lib/module/rsa.js.map +1 -0
  262. package/lib/module/specs/blake3.nitro.js +4 -0
  263. package/lib/module/specs/blake3.nitro.js.map +1 -0
  264. package/lib/module/specs/cipher.nitro.js +4 -0
  265. package/lib/module/specs/cipher.nitro.js.map +1 -0
  266. package/lib/module/specs/ecKeyPair.nitro.js +4 -0
  267. package/lib/module/specs/ecKeyPair.nitro.js.map +1 -0
  268. package/lib/module/specs/edKeyPair.nitro.js +4 -0
  269. package/lib/module/specs/edKeyPair.nitro.js.map +1 -0
  270. package/lib/module/specs/hash.nitro.js +4 -0
  271. package/lib/module/specs/hash.nitro.js.map +1 -0
  272. package/lib/module/specs/hmac.nitro.js +4 -0
  273. package/lib/module/specs/hmac.nitro.js.map +1 -0
  274. package/lib/module/specs/keyObjectHandle.nitro.js +4 -0
  275. package/lib/module/specs/keyObjectHandle.nitro.js.map +1 -0
  276. package/lib/module/specs/pbkdf2.nitro.js +4 -0
  277. package/lib/module/specs/pbkdf2.nitro.js.map +1 -0
  278. package/lib/module/specs/rsaKeyPair.nitro.js +4 -0
  279. package/lib/module/specs/rsaKeyPair.nitro.js.map +1 -0
  280. package/lib/module/subtle.js +360 -0
  281. package/lib/module/subtle.js.map +1 -0
  282. package/lib/module/utils/cipher.js +56 -0
  283. package/lib/module/utils/cipher.js.map +1 -0
  284. package/lib/module/utils/conversion.js +120 -8
  285. package/lib/module/utils/conversion.js.map +1 -1
  286. package/lib/module/utils/errors.js +10 -0
  287. package/lib/module/utils/errors.js.map +1 -0
  288. package/lib/module/utils/hashnames.js +89 -0
  289. package/lib/module/utils/hashnames.js.map +1 -0
  290. package/lib/module/utils/index.js +6 -5
  291. package/lib/module/utils/index.js.map +1 -1
  292. package/lib/module/utils/noble.js +76 -0
  293. package/lib/module/utils/noble.js.map +1 -0
  294. package/lib/module/utils/types.js +53 -0
  295. package/lib/module/utils/types.js.map +1 -1
  296. package/lib/module/utils/validation.js +87 -0
  297. package/lib/module/utils/validation.js.map +1 -0
  298. package/lib/tsconfig.tsbuildinfo +1 -1
  299. package/lib/typescript/blake3.d.ts +33 -0
  300. package/lib/typescript/blake3.d.ts.map +1 -0
  301. package/lib/typescript/cipher.d.ts +60 -0
  302. package/lib/typescript/cipher.d.ts.map +1 -0
  303. package/lib/typescript/ec.d.ts +13 -0
  304. package/lib/typescript/ec.d.ts.map +1 -0
  305. package/lib/typescript/ed.d.ts +43 -0
  306. package/lib/typescript/ed.d.ts.map +1 -0
  307. package/lib/typescript/expo-plugin/@types.d.ts +8 -0
  308. package/lib/typescript/expo-plugin/@types.d.ts.map +1 -0
  309. package/lib/typescript/expo-plugin/withRNQC.d.ts +4 -0
  310. package/lib/typescript/expo-plugin/withRNQC.d.ts.map +1 -0
  311. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts +4 -0
  312. package/lib/typescript/expo-plugin/withSodiumAndroid.d.ts.map +1 -0
  313. package/lib/typescript/expo-plugin/withSodiumIos.d.ts +4 -0
  314. package/lib/typescript/expo-plugin/withSodiumIos.d.ts.map +1 -0
  315. package/lib/typescript/expo-plugin/withXCode.d.ts +9 -0
  316. package/lib/typescript/expo-plugin/withXCode.d.ts.map +1 -0
  317. package/lib/typescript/hash.d.ts +122 -0
  318. package/lib/typescript/hash.d.ts.map +1 -0
  319. package/lib/typescript/hmac.d.ts +66 -0
  320. package/lib/typescript/hmac.d.ts.map +1 -0
  321. package/lib/typescript/index.d.ts +110 -9
  322. package/lib/typescript/index.d.ts.map +1 -1
  323. package/lib/typescript/keys/classes.d.ts +79 -0
  324. package/lib/typescript/keys/classes.d.ts.map +1 -0
  325. package/lib/typescript/keys/generateKeyPair.d.ts +6 -0
  326. package/lib/typescript/keys/generateKeyPair.d.ts.map +1 -0
  327. package/lib/typescript/keys/index.d.ts +7 -0
  328. package/lib/typescript/keys/index.d.ts.map +1 -0
  329. package/lib/typescript/keys/signVerify.d.ts +1 -0
  330. package/lib/typescript/keys/signVerify.d.ts.map +1 -0
  331. package/lib/typescript/keys/utils.d.ts +34 -0
  332. package/lib/typescript/keys/utils.d.ts.map +1 -0
  333. package/lib/typescript/pbkdf2.d.ts +12 -0
  334. package/lib/typescript/pbkdf2.d.ts.map +1 -0
  335. package/lib/typescript/random.d.ts +11 -5
  336. package/lib/typescript/random.d.ts.map +1 -1
  337. package/lib/typescript/rsa.d.ts +10 -0
  338. package/lib/typescript/rsa.d.ts.map +1 -0
  339. package/lib/typescript/specs/blake3.nitro.d.ts +15 -0
  340. package/lib/typescript/specs/blake3.nitro.d.ts.map +1 -0
  341. package/lib/typescript/specs/cipher.nitro.d.ts +29 -0
  342. package/lib/typescript/specs/cipher.nitro.d.ts.map +1 -0
  343. package/lib/typescript/specs/ecKeyPair.nitro.d.ts +20 -0
  344. package/lib/typescript/specs/ecKeyPair.nitro.d.ts.map +1 -0
  345. package/lib/typescript/specs/edKeyPair.nitro.d.ts +17 -0
  346. package/lib/typescript/specs/edKeyPair.nitro.d.ts.map +1 -0
  347. package/lib/typescript/specs/hash.nitro.d.ts +13 -0
  348. package/lib/typescript/specs/hash.nitro.d.ts.map +1 -0
  349. package/lib/typescript/specs/hmac.nitro.d.ts +10 -0
  350. package/lib/typescript/specs/hmac.nitro.d.ts.map +1 -0
  351. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +14 -0
  352. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -0
  353. package/lib/typescript/specs/pbkdf2.nitro.d.ts +9 -0
  354. package/lib/typescript/specs/pbkdf2.nitro.d.ts.map +1 -0
  355. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts +20 -0
  356. package/lib/typescript/specs/rsaKeyPair.nitro.d.ts.map +1 -0
  357. package/lib/typescript/subtle.d.ts +17 -0
  358. package/lib/typescript/subtle.d.ts.map +1 -0
  359. package/lib/typescript/utils/cipher.d.ts +7 -0
  360. package/lib/typescript/utils/cipher.d.ts.map +1 -0
  361. package/lib/typescript/utils/conversion.d.ts +24 -2
  362. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  363. package/lib/typescript/utils/errors.d.ts +7 -0
  364. package/lib/typescript/utils/errors.d.ts.map +1 -0
  365. package/lib/typescript/utils/hashnames.d.ts +13 -0
  366. package/lib/typescript/utils/hashnames.d.ts.map +1 -0
  367. package/lib/typescript/utils/index.d.ts +6 -5
  368. package/lib/typescript/utils/index.d.ts.map +1 -1
  369. package/lib/typescript/utils/noble.d.ts +19 -0
  370. package/lib/typescript/utils/noble.d.ts.map +1 -0
  371. package/lib/typescript/utils/types.d.ts +252 -2
  372. package/lib/typescript/utils/types.d.ts.map +1 -1
  373. package/lib/typescript/utils/validation.d.ts +13 -0
  374. package/lib/typescript/utils/validation.d.ts.map +1 -0
  375. package/nitrogen/generated/.gitattributes +1 -0
  376. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +47 -4
  377. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +4 -3
  378. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +144 -0
  379. package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +25 -0
  380. package/nitrogen/generated/android/kotlin/com/margelo/nitro/crypto/QuickCryptoOnLoad.kt +35 -0
  381. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +11 -8
  382. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +11 -3
  383. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +5 -3
  384. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +16 -7
  385. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +135 -0
  386. package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +12 -0
  387. package/nitrogen/generated/shared/c++/CFRGKeyPairType.hpp +84 -0
  388. package/nitrogen/generated/shared/c++/CipherArgs.hpp +86 -0
  389. package/nitrogen/generated/shared/c++/HybridBlake3Spec.cpp +28 -0
  390. package/nitrogen/generated/shared/c++/HybridBlake3Spec.hpp +76 -0
  391. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.cpp +21 -0
  392. package/nitrogen/generated/shared/c++/HybridCipherFactorySpec.hpp +67 -0
  393. package/nitrogen/generated/shared/c++/HybridCipherSpec.cpp +28 -0
  394. package/nitrogen/generated/shared/c++/HybridCipherSpec.hpp +76 -0
  395. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.cpp +29 -0
  396. package/nitrogen/generated/shared/c++/HybridEcKeyPairSpec.hpp +77 -0
  397. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp +30 -0
  398. package/nitrogen/generated/shared/c++/HybridEdKeyPairSpec.hpp +75 -0
  399. package/nitrogen/generated/shared/c++/HybridHashSpec.cpp +26 -0
  400. package/nitrogen/generated/shared/c++/HybridHashSpec.hpp +75 -0
  401. package/nitrogen/generated/shared/c++/HybridHmacSpec.cpp +23 -0
  402. package/nitrogen/generated/shared/c++/HybridHmacSpec.hpp +66 -0
  403. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +26 -0
  404. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +92 -0
  405. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +22 -0
  406. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +66 -0
  407. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +2 -3
  408. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +9 -6
  409. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.cpp +29 -0
  410. package/nitrogen/generated/shared/c++/HybridRsaKeyPairSpec.hpp +77 -0
  411. package/nitrogen/generated/shared/c++/JWK.hpp +161 -0
  412. package/nitrogen/generated/shared/c++/JWKkty.hpp +84 -0
  413. package/nitrogen/generated/shared/c++/JWKuse.hpp +76 -0
  414. package/nitrogen/generated/shared/c++/KFormatType.hpp +63 -0
  415. package/nitrogen/generated/shared/c++/KeyDetail.hpp +92 -0
  416. package/nitrogen/generated/shared/c++/KeyEncoding.hpp +64 -0
  417. package/nitrogen/generated/shared/c++/KeyObject.hpp +67 -0
  418. package/nitrogen/generated/shared/c++/KeyType.hpp +63 -0
  419. package/nitrogen/generated/shared/c++/KeyUsage.hpp +116 -0
  420. package/nitrogen/generated/shared/c++/NamedCurve.hpp +80 -0
  421. package/package.json +66 -39
  422. package/src/blake3.ts +123 -0
  423. package/src/cipher.ts +335 -0
  424. package/src/ec.ts +432 -0
  425. package/src/ed.ts +256 -0
  426. package/src/expo-plugin/@types.ts +7 -0
  427. package/src/expo-plugin/withRNQC.ts +23 -0
  428. package/src/expo-plugin/withSodiumAndroid.ts +24 -0
  429. package/src/expo-plugin/withSodiumIos.ts +30 -0
  430. package/src/expo-plugin/withXCode.ts +55 -0
  431. package/src/hash.ts +274 -0
  432. package/src/hmac.ts +135 -0
  433. package/src/index.ts +32 -29
  434. package/src/keys/classes.ts +317 -0
  435. package/src/keys/generateKeyPair.ts +145 -0
  436. package/src/keys/index.ts +52 -0
  437. package/src/keys/signVerify.ts +39 -0
  438. package/src/keys/utils.ts +190 -0
  439. package/src/pbkdf2.ts +154 -0
  440. package/src/random.ts +26 -23
  441. package/src/rsa.ts +176 -0
  442. package/src/specs/blake3.nitro.ts +12 -0
  443. package/src/specs/cipher.nitro.ts +25 -0
  444. package/src/specs/ecKeyPair.nitro.ts +38 -0
  445. package/src/specs/edKeyPair.nitro.ts +43 -0
  446. package/src/specs/hash.nitro.ts +10 -0
  447. package/src/specs/hmac.nitro.ts +7 -0
  448. package/src/specs/keyObjectHandle.nitro.ts +31 -0
  449. package/src/specs/pbkdf2.nitro.ts +18 -0
  450. package/src/specs/random.nitro.ts +2 -2
  451. package/src/specs/rsaKeyPair.nitro.ts +33 -0
  452. package/src/subtle.ts +614 -0
  453. package/src/utils/cipher.ts +60 -0
  454. package/src/utils/conversion.ts +143 -9
  455. package/src/utils/errors.ts +15 -0
  456. package/src/utils/hashnames.ts +98 -0
  457. package/src/utils/index.ts +6 -6
  458. package/src/utils/noble.ts +85 -0
  459. package/src/utils/types.ts +423 -3
  460. package/src/utils/validation.ts +130 -0
  461. package/ios/QuickCryptoOnLoad.mm +0 -19
  462. package/lib/module/package.json +0 -1
@@ -0,0 +1,37 @@
1
+ #include <cstddef>
2
+ #include <cstdint>
3
+
4
+ #include <oneapi/tbb/parallel_invoke.h>
5
+
6
+ #include "blake3_impl.h"
7
+
8
+ static_assert(TBB_USE_EXCEPTIONS == 0,
9
+ "This file should be compiled with C++ exceptions disabled.");
10
+
11
+ extern "C" void blake3_compress_subtree_wide_join_tbb(
12
+ // shared params
13
+ const uint32_t key[8], uint8_t flags, bool use_tbb,
14
+ // left-hand side params
15
+ const uint8_t *l_input, size_t l_input_len, uint64_t l_chunk_counter,
16
+ uint8_t *l_cvs, size_t *l_n,
17
+ // right-hand side params
18
+ const uint8_t *r_input, size_t r_input_len, uint64_t r_chunk_counter,
19
+ uint8_t *r_cvs, size_t *r_n) noexcept {
20
+ if (!use_tbb) {
21
+ *l_n = blake3_compress_subtree_wide(l_input, l_input_len, key,
22
+ l_chunk_counter, flags, l_cvs, use_tbb);
23
+ *r_n = blake3_compress_subtree_wide(r_input, r_input_len, key,
24
+ r_chunk_counter, flags, r_cvs, use_tbb);
25
+ return;
26
+ }
27
+
28
+ oneapi::tbb::parallel_invoke(
29
+ [=]() {
30
+ *l_n = blake3_compress_subtree_wide(
31
+ l_input, l_input_len, key, l_chunk_counter, flags, l_cvs, use_tbb);
32
+ },
33
+ [=]() {
34
+ *r_n = blake3_compress_subtree_wide(
35
+ r_input, r_input_len, key, r_chunk_counter, flags, r_cvs, use_tbb);
36
+ });
37
+ }
@@ -0,0 +1,3 @@
1
+ if(BLAKE3_USE_TBB)
2
+ add_subdirectory(tbb)
3
+ endif()
@@ -0,0 +1,28 @@
1
+ find_package(TBB 2021.11.0 QUIET)
2
+
3
+ if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.11)
4
+ include(FetchContent)
5
+
6
+ if(NOT TBB_FOUND AND BLAKE3_FETCH_TBB)
7
+ set(CMAKE_C_STANDARD 99)
8
+ set(CMAKE_C_EXTENSIONS OFF)
9
+
10
+ set(CMAKE_CXX_STANDARD 20)
11
+ set(CMAKE_CXX_EXTENSIONS ON)
12
+
13
+ option(TBB_TEST OFF "")
14
+ option(TBBMALLOC_BUILD OFF "")
15
+
16
+ mark_as_advanced(TBB_TEST)
17
+ mark_as_advanced(TBBMALLOC_BUILD)
18
+
19
+ FetchContent_Declare(
20
+ TBB
21
+ GIT_REPOSITORY https://github.com/uxlfoundation/oneTBB
22
+ GIT_TAG 0c0ff192a2304e114bc9e6557582dfba101360ff # v2022.0.0
23
+ GIT_SHALLOW TRUE
24
+ )
25
+
26
+ FetchContent_MakeAvailable(TBB)
27
+ endif()
28
+ endif()
@@ -0,0 +1,36 @@
1
+ #include "blake3.h"
2
+ #include <errno.h>
3
+ #include <stdio.h>
4
+ #include <string.h>
5
+ #include <unistd.h>
6
+
7
+ int main(void) {
8
+ // Initialize the hasher.
9
+ blake3_hasher hasher;
10
+ blake3_hasher_init(&hasher);
11
+
12
+ // Read input bytes from stdin.
13
+ unsigned char buf[65536];
14
+ while (1) {
15
+ ssize_t n = read(STDIN_FILENO, buf, sizeof(buf));
16
+ if (n > 0) {
17
+ blake3_hasher_update(&hasher, buf, n);
18
+ } else if (n == 0) {
19
+ break; // end of file
20
+ } else {
21
+ fprintf(stderr, "read failed: %s\n", strerror(errno));
22
+ return 1;
23
+ }
24
+ }
25
+
26
+ // Finalize the hash. BLAKE3_OUT_LEN is the default output length, 32 bytes.
27
+ uint8_t output[BLAKE3_OUT_LEN];
28
+ blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN);
29
+
30
+ // Print the hash as hexadecimal.
31
+ for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) {
32
+ printf("%02x", output[i]);
33
+ }
34
+ printf("\n");
35
+ return 0;
36
+ }
@@ -0,0 +1,57 @@
1
+ #include "blake3.h"
2
+ #include <errno.h>
3
+ #include <fcntl.h>
4
+ #include <stdio.h>
5
+ #include <string.h>
6
+ #include <sys/mman.h>
7
+ #include <sys/stat.h>
8
+ #include <unistd.h>
9
+
10
+ int main(int argc, char **argv) {
11
+ // For each filepath argument, memory map it and hash it.
12
+ for (int i = 1; i < argc; i++) {
13
+ // Open and memory map the file.
14
+ int fd = open(argv[i], O_RDONLY);
15
+ if (fd == -1) {
16
+ fprintf(stderr, "open failed: %s\n", strerror(errno));
17
+ return 1;
18
+ }
19
+ struct stat statbuf;
20
+ if (fstat(fd, &statbuf) == -1) {
21
+ fprintf(stderr, "stat failed: %s\n", strerror(errno));
22
+ return 1;
23
+ }
24
+ void *mapped = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
25
+ if (mapped == MAP_FAILED) {
26
+ fprintf(stderr, "mmap failed: %s\n", strerror(errno));
27
+ return 1;
28
+ }
29
+
30
+ // Initialize the hasher.
31
+ blake3_hasher hasher;
32
+ blake3_hasher_init(&hasher);
33
+
34
+ // Hash the mapped file using multiple threads.
35
+ blake3_hasher_update_tbb(&hasher, mapped, statbuf.st_size);
36
+
37
+ // Unmap and close the file.
38
+ if (munmap(mapped, statbuf.st_size) == -1) {
39
+ fprintf(stderr, "munmap failed: %s\n", strerror(errno));
40
+ return 1;
41
+ }
42
+ if (close(fd) == -1) {
43
+ fprintf(stderr, "close failed: %s\n", strerror(errno));
44
+ return 1;
45
+ }
46
+
47
+ // Finalize the hash. BLAKE3_OUT_LEN is the default output length, 32 bytes.
48
+ uint8_t output[BLAKE3_OUT_LEN];
49
+ blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN);
50
+
51
+ // Print the hash as hexadecimal.
52
+ for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) {
53
+ printf("%02x", output[i]);
54
+ }
55
+ printf("\n");
56
+ }
57
+ }
@@ -0,0 +1,12 @@
1
+ prefix="@CMAKE_INSTALL_PREFIX@"
2
+ exec_prefix="${prefix}"
3
+ libdir="@PKG_CONFIG_INSTALL_LIBDIR@"
4
+ includedir="@PKG_CONFIG_INSTALL_INCLUDEDIR@"
5
+
6
+ Name: @PROJECT_NAME@
7
+ Description: @PROJECT_DESCRIPTION@
8
+ Version: @PROJECT_VERSION@
9
+
10
+ Requires: @PKG_CONFIG_REQUIRES@
11
+ Libs: -L"${libdir}" -lblake3 @PKG_CONFIG_LIBS@
12
+ Cflags: -I"${includedir}" @PKG_CONFIG_CFLAGS@
@@ -0,0 +1,166 @@
1
+ /*
2
+ * This main file is intended for testing via `make test`. It does not build in
3
+ * other settings. See README.md in this directory for examples of how to build
4
+ * C code.
5
+ */
6
+
7
+ #include <assert.h>
8
+ #include <errno.h>
9
+ #include <stdbool.h>
10
+ #include <stdint.h>
11
+ #include <stdio.h>
12
+ #include <stdlib.h>
13
+
14
+ #include "blake3.h"
15
+ #include "blake3_impl.h"
16
+
17
+ #define HASH_MODE 0
18
+ #define KEYED_HASH_MODE 1
19
+ #define DERIVE_KEY_MODE 2
20
+
21
+ static void hex_char_value(uint8_t c, uint8_t *value, bool *valid) {
22
+ if ('0' <= c && c <= '9') {
23
+ *value = c - '0';
24
+ *valid = true;
25
+ } else if ('a' <= c && c <= 'f') {
26
+ *value = 10 + c - 'a';
27
+ *valid = true;
28
+ } else {
29
+ *valid = false;
30
+ }
31
+ }
32
+
33
+ static int parse_key(char *hex_key, uint8_t out[BLAKE3_KEY_LEN]) {
34
+ size_t hex_len = strlen(hex_key);
35
+ if (hex_len != 64) {
36
+ fprintf(stderr, "Expected a 64-char hexadecimal key, got %zu chars.\n",
37
+ hex_len);
38
+ return 1;
39
+ }
40
+ for (size_t i = 0; i < 64; i++) {
41
+ uint8_t value;
42
+ bool valid;
43
+ hex_char_value(hex_key[i], &value, &valid);
44
+ if (!valid) {
45
+ fprintf(stderr, "Invalid hex char.\n");
46
+ return 1;
47
+ }
48
+ if (i % 2 == 0) {
49
+ out[i / 2] = 0;
50
+ value <<= 4;
51
+ }
52
+ out[i / 2] += value;
53
+ }
54
+ return 0;
55
+ }
56
+
57
+ /* A little repetition here */
58
+ enum cpu_feature {
59
+ SSE2 = 1 << 0,
60
+ SSSE3 = 1 << 1,
61
+ SSE41 = 1 << 2,
62
+ AVX = 1 << 3,
63
+ AVX2 = 1 << 4,
64
+ AVX512F = 1 << 5,
65
+ AVX512VL = 1 << 6,
66
+ /* ... */
67
+ UNDEFINED = 1 << 30
68
+ };
69
+
70
+ extern enum cpu_feature g_cpu_features;
71
+ enum cpu_feature get_cpu_features(void);
72
+
73
+ int main(int argc, char **argv) {
74
+ size_t out_len = BLAKE3_OUT_LEN;
75
+ uint8_t key[BLAKE3_KEY_LEN];
76
+ char *context = "";
77
+ uint8_t mode = HASH_MODE;
78
+ while (argc > 1) {
79
+ if (argc <= 2) {
80
+ fprintf(stderr, "Odd number of arguments.\n");
81
+ return 1;
82
+ }
83
+ if (strcmp("--length", argv[1]) == 0) {
84
+ char *endptr = NULL;
85
+ errno = 0;
86
+ unsigned long long out_len_ll = strtoull(argv[2], &endptr, 10);
87
+ if (errno != 0 || out_len_ll > SIZE_MAX || endptr == argv[2] ||
88
+ *endptr != 0) {
89
+ fprintf(stderr, "Bad length argument.\n");
90
+ return 1;
91
+ }
92
+ out_len = (size_t)out_len_ll;
93
+ } else if (strcmp("--keyed", argv[1]) == 0) {
94
+ mode = KEYED_HASH_MODE;
95
+ int ret = parse_key(argv[2], key);
96
+ if (ret != 0) {
97
+ return ret;
98
+ }
99
+ } else if (strcmp("--derive-key", argv[1]) == 0) {
100
+ mode = DERIVE_KEY_MODE;
101
+ context = argv[2];
102
+ } else {
103
+ fprintf(stderr, "Unknown flag.\n");
104
+ return 1;
105
+ }
106
+ argc -= 2;
107
+ argv += 2;
108
+ }
109
+
110
+ /*
111
+ * We're going to hash the input multiple times, so we need to buffer it all.
112
+ * This is just for test cases, so go ahead and assume that the input is less
113
+ * than 1 MiB.
114
+ */
115
+ size_t buf_capacity = 1 << 20;
116
+ uint8_t *buf = malloc(buf_capacity);
117
+ assert(buf != NULL);
118
+ size_t buf_len = 0;
119
+ while (1) {
120
+ size_t n = fread(&buf[buf_len], 1, buf_capacity - buf_len, stdin);
121
+ if (n == 0) {
122
+ break;
123
+ }
124
+ buf_len += n;
125
+ assert(buf_len < buf_capacity);
126
+ }
127
+
128
+ const int mask = get_cpu_features();
129
+ int feature = 0;
130
+ do {
131
+ fprintf(stderr, "Testing 0x%08X\n", feature);
132
+ g_cpu_features = feature;
133
+ blake3_hasher hasher;
134
+ switch (mode) {
135
+ case HASH_MODE:
136
+ blake3_hasher_init(&hasher);
137
+ break;
138
+ case KEYED_HASH_MODE:
139
+ blake3_hasher_init_keyed(&hasher, key);
140
+ break;
141
+ case DERIVE_KEY_MODE:
142
+ blake3_hasher_init_derive_key(&hasher, context);
143
+ break;
144
+ default:
145
+ abort();
146
+ }
147
+
148
+ blake3_hasher_update(&hasher, buf, buf_len);
149
+
150
+ /* TODO: An incremental output reader API to avoid this allocation. */
151
+ uint8_t *out = malloc(out_len);
152
+ if (out_len > 0 && out == NULL) {
153
+ fprintf(stderr, "malloc() failed.\n");
154
+ return 1;
155
+ }
156
+ blake3_hasher_finalize(&hasher, out, out_len);
157
+ for (size_t i = 0; i < out_len; i++) {
158
+ printf("%02x", out[i]);
159
+ }
160
+ printf("\n");
161
+ free(out);
162
+ feature = (feature - mask) & mask;
163
+ } while (feature != 0);
164
+ free(buf);
165
+ return 0;
166
+ }
@@ -0,0 +1,97 @@
1
+ #! /usr/bin/env python3
2
+
3
+ from binascii import hexlify
4
+ import json
5
+ from os import path
6
+ import subprocess
7
+
8
+ HERE = path.dirname(__file__)
9
+ TEST_VECTORS_PATH = path.join(HERE, "..", "test_vectors", "test_vectors.json")
10
+ TEST_VECTORS = json.load(open(TEST_VECTORS_PATH))
11
+
12
+
13
+ def run_blake3(args, input):
14
+ output = subprocess.run([path.join(HERE, "blake3")] + args,
15
+ input=input,
16
+ stdout=subprocess.PIPE,
17
+ check=True)
18
+ return output.stdout.decode().strip()
19
+
20
+
21
+ # Fill the input with a repeating byte pattern. We use a cycle length of 251,
22
+ # because that's the largest prime number less than 256. This makes it unlikely
23
+ # to swapping any two adjacent input blocks or chunks will give the same
24
+ # answer.
25
+ def make_test_input(length):
26
+ i = 0
27
+ buf = bytearray()
28
+ while len(buf) < length:
29
+ buf.append(i)
30
+ i = (i + 1) % 251
31
+ return buf
32
+
33
+
34
+ def main():
35
+ for case in TEST_VECTORS["cases"]:
36
+ input_len = case["input_len"]
37
+ input = make_test_input(input_len)
38
+ hex_key = hexlify(TEST_VECTORS["key"].encode())
39
+ context_string = TEST_VECTORS["context_string"]
40
+ expected_hash_xof = case["hash"]
41
+ expected_hash = expected_hash_xof[:64]
42
+ expected_keyed_hash_xof = case["keyed_hash"]
43
+ expected_keyed_hash = expected_keyed_hash_xof[:64]
44
+ expected_derive_key_xof = case["derive_key"]
45
+ expected_derive_key = expected_derive_key_xof[:64]
46
+
47
+ # Test the default hash.
48
+ test_hash = run_blake3([], input)
49
+ for line in test_hash.splitlines():
50
+ assert expected_hash == line, \
51
+ "hash({}): {} != {}".format(input_len, expected_hash, line)
52
+
53
+ # Test the extended hash.
54
+ xof_len = len(expected_hash_xof) // 2
55
+ test_hash_xof = run_blake3(["--length", str(xof_len)], input)
56
+ for line in test_hash_xof.splitlines():
57
+ assert expected_hash_xof == line, \
58
+ "hash_xof({}): {} != {}".format(
59
+ input_len, expected_hash_xof, line)
60
+
61
+ # Test the default keyed hash.
62
+ test_keyed_hash = run_blake3(["--keyed", hex_key], input)
63
+ for line in test_keyed_hash.splitlines():
64
+ assert expected_keyed_hash == line, \
65
+ "keyed_hash({}): {} != {}".format(
66
+ input_len, expected_keyed_hash, line)
67
+
68
+ # Test the extended keyed hash.
69
+ xof_len = len(expected_keyed_hash_xof) // 2
70
+ test_keyed_hash_xof = run_blake3(
71
+ ["--keyed", hex_key, "--length",
72
+ str(xof_len)], input)
73
+ for line in test_keyed_hash_xof.splitlines():
74
+ assert expected_keyed_hash_xof == line, \
75
+ "keyed_hash_xof({}): {} != {}".format(
76
+ input_len, expected_keyed_hash_xof, line)
77
+
78
+ # Test the default derive key.
79
+ test_derive_key = run_blake3(["--derive-key", context_string], input)
80
+ for line in test_derive_key.splitlines():
81
+ assert expected_derive_key == line, \
82
+ "derive_key({}): {} != {}".format(
83
+ input_len, expected_derive_key, line)
84
+
85
+ # Test the extended derive key.
86
+ xof_len = len(expected_derive_key_xof) // 2
87
+ test_derive_key_xof = run_blake3(
88
+ ["--derive-key", context_string, "--length",
89
+ str(xof_len)], input)
90
+ for line in test_derive_key_xof.splitlines():
91
+ assert expected_derive_key_xof == line, \
92
+ "derive_key_xof({}): {} != {}".format(
93
+ input_len, expected_derive_key_xof, line)
94
+
95
+
96
+ if __name__ == "__main__":
97
+ main()
@@ -0,0 +1,70 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="13.356165mm"
13
+ height="7.1437497mm"
14
+ viewBox="0 0 13.356165 7.1437497"
15
+ version="1.1"
16
+ id="svg8"
17
+ sodipodi:docname="B3.svg"
18
+ inkscape:version="0.92.4 5da689c313, 2019-01-14">
19
+ <defs
20
+ id="defs2" />
21
+ <sodipodi:namedview
22
+ id="base"
23
+ pagecolor="#ffffff"
24
+ bordercolor="#666666"
25
+ borderopacity="1.0"
26
+ inkscape:pageopacity="0.0"
27
+ inkscape:pageshadow="2"
28
+ inkscape:zoom="4"
29
+ inkscape:cx="72.73328"
30
+ inkscape:cy="-34.835127"
31
+ inkscape:document-units="mm"
32
+ inkscape:current-layer="layer1"
33
+ showgrid="false"
34
+ inkscape:window-width="1920"
35
+ inkscape:window-height="1016"
36
+ inkscape:window-x="0"
37
+ inkscape:window-y="27"
38
+ inkscape:window-maximized="1" />
39
+ <metadata
40
+ id="metadata5">
41
+ <rdf:RDF>
42
+ <cc:Work
43
+ rdf:about="">
44
+ <dc:format>image/svg+xml</dc:format>
45
+ <dc:type
46
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
47
+ <dc:title />
48
+ </cc:Work>
49
+ </rdf:RDF>
50
+ </metadata>
51
+ <g
52
+ inkscape:label="Layer 1"
53
+ inkscape:groupmode="layer"
54
+ id="layer1"
55
+ transform="translate(-24.441005,-113.52518)">
56
+ <g
57
+ aria-label="B3"
58
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
59
+ id="text868">
60
+ <path
61
+ d="m 28.176921,113.52518 q 0.635,0 1.0795,0.14817 0.455084,0.13758 0.740834,0.40216 0.296333,0.254 0.433916,0.61384 0.137584,0.35983 0.137584,0.79375 0,0.62441 -0.264584,1.00541 -0.254,0.381 -0.762,0.58209 0.508,0.21166 0.783167,0.61383 0.275167,0.39158 0.275167,1.016 0,0.43392 -0.137584,0.79375 -0.137583,0.35983 -0.433916,0.62442 -0.28575,0.254 -0.740834,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.174999 q -0.592667,0 -0.592667,-0.58208 v -5.97959 q 0,-0.58208 0.592667,-0.58208 z m -2.508249,5.78908 q 0,0.11642 0.137583,0.11642 h 2.434166 q 0.5715,0 0.836084,-0.24342 0.264583,-0.24341 0.264583,-0.68791 0,-0.92075 -1.100667,-0.92075 h -2.571749 z m 0,-2.77283 h 2.539999 q 1.100667,0 1.100667,-0.85725 0,-0.42333 -0.264583,-0.67733 -0.254,-0.254 -0.8255,-0.254 h -2.413 q -0.137583,0 -0.137583,0.127 z"
62
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
63
+ id="path814" />
64
+ <path
65
+ d="m 35.38417,113.52518 q 0.635,0 1.0795,0.14817 0.455083,0.13758 0.740833,0.40216 0.296333,0.254 0.433917,0.60325 0.137583,0.34925 0.137583,0.762 0,0.635 -0.264583,1.03717 -0.254,0.39158 -0.751417,0.60325 0.508,0.21167 0.772583,0.62442 0.264584,0.40216 0.264584,1.04775 0,0.40216 -0.137584,0.75141 -0.137583,0.34925 -0.423333,0.61384 -0.28575,0.254 -0.740833,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.608917 v -1.24883 h 3.608917 q 0.550333,0 0.814917,-0.23284 0.264583,-0.24341 0.264583,-0.67733 0,-0.85725 -1.090083,-0.85725 h -2.201334 v -1.13242 h 2.169584 q 0.550333,0 0.814916,-0.20108 0.275167,-0.21167 0.275167,-0.65617 0,-0.40216 -0.254,-0.64558 -0.254,-0.24342 -0.8255,-0.24342 h -3.566583 v -1.24883 z"
66
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
67
+ id="path816" />
68
+ </g>
69
+ </g>
70
+ </svg>
@@ -0,0 +1,85 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="43.063534mm"
13
+ height="7.2707496mm"
14
+ viewBox="0 0 43.063534 7.2707496"
15
+ version="1.1"
16
+ id="svg8"
17
+ sodipodi:docname="BLAKE3.svg"
18
+ inkscape:version="0.92.4 5da689c313, 2019-01-14">
19
+ <defs
20
+ id="defs2" />
21
+ <sodipodi:namedview
22
+ id="base"
23
+ pagecolor="#ffffff"
24
+ bordercolor="#666666"
25
+ borderopacity="1.0"
26
+ inkscape:pageopacity="0.0"
27
+ inkscape:pageshadow="2"
28
+ inkscape:zoom="4"
29
+ inkscape:cx="72.73328"
30
+ inkscape:cy="-34.835127"
31
+ inkscape:document-units="mm"
32
+ inkscape:current-layer="layer1"
33
+ showgrid="false"
34
+ inkscape:window-width="1920"
35
+ inkscape:window-height="1016"
36
+ inkscape:window-x="0"
37
+ inkscape:window-y="27"
38
+ inkscape:window-maximized="1" />
39
+ <metadata
40
+ id="metadata5">
41
+ <rdf:RDF>
42
+ <cc:Work
43
+ rdf:about="">
44
+ <dc:format>image/svg+xml</dc:format>
45
+ <dc:type
46
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
47
+ </cc:Work>
48
+ </rdf:RDF>
49
+ </metadata>
50
+ <g
51
+ inkscape:label="Layer 1"
52
+ inkscape:groupmode="layer"
53
+ id="layer1"
54
+ transform="translate(-24.441005,-113.39818)">
55
+ <g
56
+ aria-label="BLAKE3"
57
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
58
+ id="text868">
59
+ <path
60
+ d="m 28.176921,113.52518 q 0.635,0 1.0795,0.14817 0.455084,0.13758 0.740834,0.40216 0.296333,0.254 0.433916,0.61384 0.137584,0.35983 0.137584,0.79375 0,0.62441 -0.264584,1.00541 -0.254,0.381 -0.762,0.58209 0.508,0.21166 0.783167,0.61383 0.275167,0.39158 0.275167,1.016 0,0.43392 -0.137584,0.79375 -0.137583,0.35983 -0.433916,0.62442 -0.28575,0.254 -0.740834,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.174999 q -0.592667,0 -0.592667,-0.58208 v -5.97959 q 0,-0.58208 0.592667,-0.58208 z m -2.508249,5.78908 q 0,0.11642 0.137583,0.11642 h 2.434166 q 0.5715,0 0.836084,-0.24342 0.264583,-0.24341 0.264583,-0.68791 0,-0.92075 -1.100667,-0.92075 h -2.571749 z m 0,-2.77283 h 2.539999 q 1.100667,0 1.100667,-0.85725 0,-0.42333 -0.264583,-0.67733 -0.254,-0.254 -0.8255,-0.254 h -2.413 q -0.137583,0 -0.137583,0.127 z"
61
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
62
+ id="path814" />
63
+ <path
64
+ d="m 33.22517,113.52518 v 4.66725 q 0,0.254 0.0635,0.48683 0.07408,0.22225 0.243417,0.39159 0.169333,0.15875 0.4445,0.254 0.28575,0.0953 0.709083,0.0953 h 2.772833 v 1.24883 h -2.846916 q -0.709084,0 -1.217084,-0.17992 -0.497416,-0.1905 -0.814916,-0.51858 -0.3175,-0.32808 -0.465667,-0.77258 -0.137583,-0.45509 -0.137583,-0.99484 v -4.67783 z"
65
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
66
+ id="path816" />
67
+ <path
68
+ d="M 39.342334,120.66893 H 37.9665 l 2.50825,-6.35 q 0.201084,-0.508 0.560917,-0.70908 0.370417,-0.21167 0.941917,-0.21167 0.560916,0 0.92075,0.21167 0.370416,0.20108 0.560916,0.70908 l 2.413,6.35 h -1.386416 l -2.169584,-5.74675 q -0.09525,-0.24342 -0.34925,-0.24342 -0.254,0 -0.359833,0.24342 z"
69
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
70
+ id="path818" />
71
+ <path
72
+ d="m 48.179401,113.52518 v 3.02683 h 0.687917 q 0.455083,0 0.740833,-0.0212 0.296333,-0.0318 0.486833,-0.127 0.1905,-0.0953 0.3175,-0.26459 0.137584,-0.17991 0.28575,-0.47625 l 1.090084,-2.13783 h 1.344083 l -1.121833,2.2225 q -0.243417,0.47625 -0.518584,0.79375 -0.275166,0.3175 -0.719666,0.508 0.254,0.0635 0.4445,0.17992 0.1905,0.10583 0.34925,0.27516 0.169333,0.15875 0.3175,0.39159 0.148166,0.22225 0.306916,0.52916 l 1.153584,2.24367 h -1.397 l -1.090084,-2.11667 q -0.148166,-0.28575 -0.28575,-0.45508 -0.137583,-0.16933 -0.34925,-0.26458 -0.211666,-0.0952 -0.529166,-0.11642 -0.3175,-0.0317 -0.8255,-0.0317 h -0.687917 v 2.9845 h -1.248833 v -7.14375 z"
73
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
74
+ id="path820" />
75
+ <path
76
+ d="m 60.127965,113.52518 v 1.24883 h -3.577166 q -0.5715,0 -0.8255,0.24342 -0.254,0.24342 -0.254,0.65617 0,0.84666 1.090083,0.84666 h 3.513667 v 1.13242 h -3.545417 q -1.090083,0 -1.090083,0.86783 0,0.42334 0.264583,0.66675 0.264583,0.23284 0.814917,0.23284 h 3.6195 v 1.24883 h -3.6195 q -0.635,0 -1.090083,-0.14817 -0.4445,-0.14816 -0.740834,-0.40216 -0.28575,-0.26459 -0.423333,-0.62442 -0.127,-0.35983 -0.127,-0.77258 0,-0.61384 0.264583,-1.016 0.264584,-0.41275 0.762,-0.62442 -1.005416,-0.41275 -1.005416,-1.60867 0,-0.42333 0.137583,-0.78316 0.137583,-0.35984 0.423333,-0.61384 0.296334,-0.26458 0.740834,-0.40216 0.455083,-0.14817 1.090083,-0.14817 z"
77
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
78
+ id="path822" />
79
+ <path
80
+ d="m 65.091539,113.52518 q 0.635,0 1.0795,0.14817 0.455083,0.13758 0.740833,0.40216 0.296333,0.254 0.433917,0.60325 0.137583,0.34925 0.137583,0.762 0,0.635 -0.264583,1.03717 -0.254,0.39158 -0.751417,0.60325 0.508,0.21167 0.772583,0.62442 0.264584,0.40216 0.264584,1.04775 0,0.40216 -0.137584,0.75141 -0.137583,0.34925 -0.423333,0.61384 -0.28575,0.254 -0.740833,0.40216 -0.4445,0.14817 -1.0795,0.14817 h -3.608917 v -1.24883 h 3.608917 q 0.550333,0 0.814916,-0.23284 0.264584,-0.24341 0.264584,-0.67733 0,-0.85725 -1.090084,-0.85725 h -2.201333 v -1.13242 h 2.169583 q 0.550334,0 0.814917,-0.20108 0.275167,-0.21167 0.275167,-0.65617 0,-0.40216 -0.254,-0.64558 -0.254,-0.24342 -0.8255,-0.24342 h -3.566583 v -1.24883 z"
81
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nasalization;-inkscape-font-specification:Nasalization;stroke-width:0.26458332"
82
+ id="path824" />
83
+ </g>
84
+ </g>
85
+ </svg>