@bsv/sdk 1.3.12 → 1.3.14

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 (607) hide show
  1. package/dist/cjs/package.json +15 -3
  2. package/dist/cjs/src/auth/Peer.js +83 -57
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +14 -9
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
  7. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  18. package/dist/cjs/src/auth/utils/createNonce.js +2 -1
  19. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  20. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
  22. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  25. package/dist/cjs/src/compat/BSM.js +7 -17
  26. package/dist/cjs/src/compat/BSM.js.map +1 -1
  27. package/dist/cjs/src/compat/ECIES.js +172 -133
  28. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  29. package/dist/cjs/src/compat/HD.js +63 -73
  30. package/dist/cjs/src/compat/HD.js.map +1 -1
  31. package/dist/cjs/src/compat/Mnemonic.js +102 -106
  32. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  33. package/dist/cjs/src/compat/Utxo.js +2 -2
  34. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  35. package/dist/cjs/src/compat/index.js +7 -17
  36. package/dist/cjs/src/compat/index.js.map +1 -1
  37. package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
  38. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  39. package/dist/cjs/src/messages/SignedMessage.js +1 -0
  40. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  41. package/dist/cjs/src/messages/index.js +7 -17
  42. package/dist/cjs/src/messages/index.js.map +1 -1
  43. package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
  44. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  45. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  46. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  47. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
  48. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  49. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  50. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  51. package/dist/cjs/src/primitives/BasePoint.js +1 -1
  52. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  53. package/dist/cjs/src/primitives/BigNumber.js +50 -62
  54. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  55. package/dist/cjs/src/primitives/Curve.js +46 -22
  56. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  57. package/dist/cjs/src/primitives/DRBG.js +2 -8
  58. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  59. package/dist/cjs/src/primitives/ECDSA.js +51 -35
  60. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  61. package/dist/cjs/src/primitives/Hash.js +191 -216
  62. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  63. package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
  64. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  65. package/dist/cjs/src/primitives/K256.js.map +1 -1
  66. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  67. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  68. package/dist/cjs/src/primitives/Point.js +117 -88
  69. package/dist/cjs/src/primitives/Point.js.map +1 -1
  70. package/dist/cjs/src/primitives/Polynomial.js +4 -2
  71. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  72. package/dist/cjs/src/primitives/PrivateKey.js +32 -33
  73. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  74. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  75. package/dist/cjs/src/primitives/Random.js +6 -5
  76. package/dist/cjs/src/primitives/Random.js.map +1 -1
  77. package/dist/cjs/src/primitives/ReductionContext.js +1 -1
  78. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  79. package/dist/cjs/src/primitives/Schnorr.js +21 -15
  80. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  81. package/dist/cjs/src/primitives/Signature.js +8 -7
  82. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  83. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  84. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  85. package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
  86. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  87. package/dist/cjs/src/primitives/index.js +7 -17
  88. package/dist/cjs/src/primitives/index.js.map +1 -1
  89. package/dist/cjs/src/primitives/utils.js +79 -68
  90. package/dist/cjs/src/primitives/utils.js.map +1 -1
  91. package/dist/cjs/src/script/OP.js +3 -3
  92. package/dist/cjs/src/script/OP.js.map +1 -1
  93. package/dist/cjs/src/script/Script.js +12 -10
  94. package/dist/cjs/src/script/Script.js.map +1 -1
  95. package/dist/cjs/src/script/Spend.js +47 -49
  96. package/dist/cjs/src/script/Spend.js.map +1 -1
  97. package/dist/cjs/src/script/templates/P2PKH.js +24 -12
  98. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  99. package/dist/cjs/src/script/templates/PushDrop.js +28 -23
  100. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  101. package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
  102. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  103. package/dist/cjs/src/totp/totp.js +2 -1
  104. package/dist/cjs/src/totp/totp.js.map +1 -1
  105. package/dist/cjs/src/transaction/Beef.js +177 -154
  106. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  107. package/dist/cjs/src/transaction/BeefParty.js +24 -24
  108. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  109. package/dist/cjs/src/transaction/BeefTx.js +26 -18
  110. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  111. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  112. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  113. package/dist/cjs/src/transaction/MerklePath.js +64 -37
  114. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  115. package/dist/cjs/src/transaction/Transaction.js +111 -137
  116. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  117. package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
  118. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  119. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
  120. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  121. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  122. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
  123. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  124. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  125. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  126. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  127. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
  128. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  129. package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
  130. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  131. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
  132. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  133. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  134. package/dist/cjs/src/transaction/index.js.map +1 -1
  135. package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
  136. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  137. package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
  138. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  139. package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
  140. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  141. package/dist/cjs/src/wallet/WalletClient.js +7 -2
  142. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  143. package/dist/cjs/src/wallet/WalletError.js +2 -2
  144. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  145. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
  146. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  147. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
  148. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  149. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  150. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  151. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
  152. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  153. package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
  154. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  155. package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
  156. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  157. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/esm/mod.js +15 -15
  159. package/dist/esm/src/auth/Peer.js +75 -54
  160. package/dist/esm/src/auth/Peer.js.map +1 -1
  161. package/dist/esm/src/auth/SessionManager.js +14 -9
  162. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  163. package/dist/esm/src/auth/certificates/Certificate.js +15 -11
  164. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  165. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
  166. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  167. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
  168. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  169. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
  170. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  171. package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
  172. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  173. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
  174. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  175. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  176. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
  177. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  178. package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
  179. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  180. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  181. package/dist/esm/src/compat/BSM.js.map +1 -1
  182. package/dist/esm/src/compat/ECIES.js +165 -116
  183. package/dist/esm/src/compat/ECIES.js.map +1 -1
  184. package/dist/esm/src/compat/HD.js +56 -56
  185. package/dist/esm/src/compat/HD.js.map +1 -1
  186. package/dist/esm/src/compat/Mnemonic.js +95 -89
  187. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  188. package/dist/esm/src/compat/Utxo.js +1 -1
  189. package/dist/esm/src/compat/Utxo.js.map +1 -1
  190. package/dist/esm/src/messages/EncryptedMessage.js +3 -1
  191. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  192. package/dist/esm/src/messages/SignedMessage.js +1 -0
  193. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  194. package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
  195. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  196. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  197. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  198. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
  199. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  200. package/dist/esm/src/primitives/AESGCM.js +1 -0
  201. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  202. package/dist/esm/src/primitives/BasePoint.js +1 -1
  203. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  204. package/dist/esm/src/primitives/BigNumber.js +50 -62
  205. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  206. package/dist/esm/src/primitives/Curve.js +45 -22
  207. package/dist/esm/src/primitives/Curve.js.map +1 -1
  208. package/dist/esm/src/primitives/DRBG.js +2 -8
  209. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  210. package/dist/esm/src/primitives/ECDSA.js +50 -35
  211. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  212. package/dist/esm/src/primitives/Hash.js +188 -213
  213. package/dist/esm/src/primitives/Hash.js.map +1 -1
  214. package/dist/esm/src/primitives/JacobianPoint.js +18 -5
  215. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  216. package/dist/esm/src/primitives/K256.js.map +1 -1
  217. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  218. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  219. package/dist/esm/src/primitives/Point.js +107 -88
  220. package/dist/esm/src/primitives/Point.js.map +1 -1
  221. package/dist/esm/src/primitives/Polynomial.js +4 -2
  222. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  223. package/dist/esm/src/primitives/PrivateKey.js +25 -16
  224. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  225. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  226. package/dist/esm/src/primitives/Random.js +7 -6
  227. package/dist/esm/src/primitives/Random.js.map +1 -1
  228. package/dist/esm/src/primitives/ReductionContext.js +1 -1
  229. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  230. package/dist/esm/src/primitives/Schnorr.js +21 -15
  231. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  232. package/dist/esm/src/primitives/Signature.js +8 -7
  233. package/dist/esm/src/primitives/Signature.js.map +1 -1
  234. package/dist/esm/src/primitives/SymmetricKey.js +13 -13
  235. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  236. package/dist/esm/src/primitives/TransactionSignature.js +22 -12
  237. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  238. package/dist/esm/src/primitives/utils.js +76 -66
  239. package/dist/esm/src/primitives/utils.js.map +1 -1
  240. package/dist/esm/src/script/OP.js +3 -3
  241. package/dist/esm/src/script/OP.js.map +1 -1
  242. package/dist/esm/src/script/Script.js +12 -10
  243. package/dist/esm/src/script/Script.js.map +1 -1
  244. package/dist/esm/src/script/Spend.js +39 -32
  245. package/dist/esm/src/script/Spend.js.map +1 -1
  246. package/dist/esm/src/script/templates/P2PKH.js +26 -11
  247. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  248. package/dist/esm/src/script/templates/PushDrop.js +29 -22
  249. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  250. package/dist/esm/src/script/templates/RPuzzle.js +11 -6
  251. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  252. package/dist/esm/src/totp/totp.js +2 -1
  253. package/dist/esm/src/totp/totp.js.map +1 -1
  254. package/dist/esm/src/transaction/Beef.js +176 -154
  255. package/dist/esm/src/transaction/Beef.js.map +1 -1
  256. package/dist/esm/src/transaction/BeefParty.js +24 -24
  257. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  258. package/dist/esm/src/transaction/BeefTx.js +26 -18
  259. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  260. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  261. package/dist/esm/src/transaction/MerklePath.js +61 -36
  262. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  263. package/dist/esm/src/transaction/Transaction.js +105 -138
  264. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  265. package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
  266. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  267. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  268. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  269. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  270. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  271. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  272. package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
  273. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  274. package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
  275. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  276. package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
  277. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  278. package/dist/esm/src/transaction/http/index.js.map +1 -1
  279. package/dist/esm/src/transaction/index.js.map +1 -1
  280. package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
  281. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  282. package/dist/esm/src/wallet/KeyDeriver.js +60 -52
  283. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  284. package/dist/esm/src/wallet/ProtoWallet.js +75 -29
  285. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  286. package/dist/esm/src/wallet/WalletClient.js +7 -2
  287. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  288. package/dist/esm/src/wallet/WalletError.js +2 -2
  289. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  290. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
  291. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  292. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
  293. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  294. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  295. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  296. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
  297. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  298. package/dist/esm/src/wallet/substrates/XDM.js +8 -3
  299. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  300. package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
  301. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  302. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  303. package/dist/types/mod.d.ts +15 -15
  304. package/dist/types/src/auth/Peer.d.ts +10 -10
  305. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  306. package/dist/types/src/auth/SessionManager.d.ts +4 -4
  307. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  308. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  309. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  310. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
  311. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  312. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  313. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  314. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  315. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  316. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  317. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  318. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  319. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  320. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  321. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  322. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  323. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  324. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  325. package/dist/types/src/compat/BSM.d.ts +1 -1
  326. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  327. package/dist/types/src/compat/ECIES.d.ts +36 -36
  328. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  329. package/dist/types/src/compat/HD.d.ts +51 -51
  330. package/dist/types/src/compat/HD.d.ts.map +1 -1
  331. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  332. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  333. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  334. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  335. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  336. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  337. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  338. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
  339. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  340. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
  341. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  342. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  343. package/dist/types/src/primitives/BasePoint.d.ts +8 -8
  344. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  345. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  346. package/dist/types/src/primitives/Curve.d.ts +14 -7
  347. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  348. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +1 -1
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +11 -11
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  354. package/dist/types/src/primitives/Point.d.ts +14 -10
  355. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  356. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  357. package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
  358. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  359. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  360. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  361. package/dist/types/src/primitives/Schnorr.d.ts +14 -14
  362. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  363. package/dist/types/src/primitives/Signature.d.ts +1 -1
  364. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
  366. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  367. package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
  368. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  369. package/dist/types/src/primitives/utils.d.ts +3 -6
  370. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  371. package/dist/types/src/script/Script.d.ts +3 -3
  372. package/dist/types/src/script/Script.d.ts.map +1 -1
  373. package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
  374. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  375. package/dist/types/src/script/Spend.d.ts.map +1 -1
  376. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  377. package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
  378. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  379. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  380. package/dist/types/src/totp/totp.d.ts.map +1 -1
  381. package/dist/types/src/transaction/Beef.d.ts +96 -96
  382. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  383. package/dist/types/src/transaction/BeefParty.d.ts +22 -22
  384. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  385. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  386. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  387. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  388. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  389. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  390. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  391. package/dist/types/src/transaction/Transaction.d.ts +4 -12
  392. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  393. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  394. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  395. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  396. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  397. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  398. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  399. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  400. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  401. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  402. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  403. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
  404. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  405. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  406. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  407. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
  408. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  409. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  410. package/dist/types/src/transaction/index.d.ts.map +1 -1
  411. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
  412. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  413. package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
  414. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  415. package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
  416. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  417. package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
  418. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  419. package/dist/types/src/wallet/WalletClient.d.ts +5 -5
  420. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  421. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
  422. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  423. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  424. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  425. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  426. package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
  427. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  428. package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
  429. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  430. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  431. package/dist/umd/bundle.js +1 -1
  432. package/docs/auth.md +92 -82
  433. package/docs/compat.md +24 -24
  434. package/docs/messages.md +7 -5
  435. package/docs/overlay-tools.md +21 -21
  436. package/docs/primitives.md +336 -315
  437. package/docs/script.md +35 -35
  438. package/docs/swagger/dist/swagger-initializer.js +7 -7
  439. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  440. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  441. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  442. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  443. package/docs/swagger/dist/swagger-ui.js +2 -2
  444. package/docs/totp.md +5 -5
  445. package/docs/transaction.md +103 -105
  446. package/docs/wallet-substrates.md +17 -17
  447. package/docs/wallet.md +202 -204
  448. package/mod.ts +15 -15
  449. package/package.json +15 -3
  450. package/src/auth/Peer.ts +271 -121
  451. package/src/auth/SessionManager.ts +17 -10
  452. package/src/auth/__tests/Peer.test.ts +361 -179
  453. package/src/auth/__tests/SessionManager.test.ts +67 -19
  454. package/src/auth/__tests/build.test.ts +11 -0
  455. package/src/auth/certificates/Certificate.ts +27 -14
  456. package/src/auth/certificates/MasterCertificate.ts +106 -62
  457. package/src/auth/certificates/VerifiableCertificate.ts +30 -8
  458. package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
  459. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
  460. package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
  461. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
  462. package/src/auth/certificates/index.ts +1 -1
  463. package/src/auth/clients/AuthFetch.ts +1 -0
  464. package/src/auth/clients/index.ts +1 -1
  465. package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
  466. package/src/auth/transports/index.ts +1 -1
  467. package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
  468. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
  469. package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
  470. package/src/auth/utils/createNonce.ts +11 -3
  471. package/src/auth/utils/getVerifiableCertificates.ts +12 -7
  472. package/src/auth/utils/validateCertificates.ts +57 -39
  473. package/src/auth/utils/verifyNonce.ts +6 -2
  474. package/src/compat/BSM.ts +10 -2
  475. package/src/compat/ECIES.ts +265 -141
  476. package/src/compat/HD.ts +81 -63
  477. package/src/compat/Mnemonic.ts +104 -91
  478. package/src/compat/Utxo.ts +8 -5
  479. package/src/compat/__tests/BSM.test.ts +42 -16
  480. package/src/compat/__tests/ECIES.test.ts +117 -52
  481. package/src/compat/__tests/HD.test.ts +55 -42
  482. package/src/compat/__tests/Mnemonic.test.ts +11 -12
  483. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  484. package/src/messages/EncryptedMessage.ts +6 -2
  485. package/src/messages/SignedMessage.ts +14 -8
  486. package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
  487. package/src/messages/__tests/SignedMessage.test.ts +17 -11
  488. package/src/overlay-tools/LookupResolver.ts +108 -56
  489. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
  490. package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
  491. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  492. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  493. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  494. package/src/primitives/AESGCM.ts +2 -0
  495. package/src/primitives/BasePoint.ts +4 -4
  496. package/src/primitives/BigNumber.ts +99 -90
  497. package/src/primitives/Curve.ts +117 -46
  498. package/src/primitives/DRBG.ts +9 -11
  499. package/src/primitives/ECDSA.ts +109 -63
  500. package/src/primitives/Hash.ts +492 -321
  501. package/src/primitives/JacobianPoint.ts +67 -19
  502. package/src/primitives/Point.ts +254 -152
  503. package/src/primitives/Polynomial.ts +8 -3
  504. package/src/primitives/PrivateKey.ts +41 -17
  505. package/src/primitives/PublicKey.ts +13 -3
  506. package/src/primitives/Random.ts +14 -8
  507. package/src/primitives/ReductionContext.ts +1 -1
  508. package/src/primitives/Schnorr.ts +40 -18
  509. package/src/primitives/Signature.ts +26 -16
  510. package/src/primitives/SymmetricKey.ts +14 -14
  511. package/src/primitives/TransactionSignature.ts +41 -17
  512. package/src/primitives/__tests/AESGCM.test.ts +457 -151
  513. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  514. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  515. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
  516. package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
  517. package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
  518. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
  519. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  520. package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
  521. package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
  522. package/src/primitives/__tests/Curve.unit.test.ts +75 -53
  523. package/src/primitives/__tests/DRBG.test.ts +1 -1
  524. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  525. package/src/primitives/__tests/ECDH.test.ts +15 -8
  526. package/src/primitives/__tests/ECDSA.test.ts +12 -6
  527. package/src/primitives/__tests/HMAC.test.ts +24 -18
  528. package/src/primitives/__tests/Hash.test.ts +57 -46
  529. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  530. package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
  531. package/src/primitives/__tests/PrivateKey.test.ts +11 -10
  532. package/src/primitives/__tests/PublicKey.test.ts +64 -53
  533. package/src/primitives/__tests/Random.test.ts +1 -1
  534. package/src/primitives/__tests/Reader.test.ts +240 -219
  535. package/src/primitives/__tests/ReductionContext.test.ts +98 -61
  536. package/src/primitives/__tests/Schnorr.test.ts +249 -237
  537. package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
  538. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  539. package/src/primitives/__tests/Writer.test.ts +23 -13
  540. package/src/primitives/__tests/bug-31.test.ts +6 -10
  541. package/src/primitives/__tests/utils.test.ts +70 -19
  542. package/src/primitives/utils.ts +103 -79
  543. package/src/script/Script.ts +18 -12
  544. package/src/script/ScriptTemplate.ts +3 -5
  545. package/src/script/Spend.ts +306 -108
  546. package/src/script/__tests/Script.test.ts +73 -55
  547. package/src/script/__tests/Spend.test.ts +208 -83
  548. package/src/script/__tests/SpendComplex.test.ts +19 -13
  549. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  550. package/src/script/__tests/script.valid.vectors.ts +728 -2764
  551. package/src/script/templates/P2PKH.ts +34 -12
  552. package/src/script/templates/PushDrop.ts +65 -31
  553. package/src/script/templates/RPuzzle.ts +29 -8
  554. package/src/script/templates/__tests/PushDrop.test.ts +146 -41
  555. package/src/totp/__tests/totp.test.ts +45 -44
  556. package/src/totp/totp.ts +3 -2
  557. package/src/transaction/Beef.ts +269 -174
  558. package/src/transaction/BeefParty.ts +41 -31
  559. package/src/transaction/BeefTx.ts +36 -26
  560. package/src/transaction/Broadcaster.ts +10 -6
  561. package/src/transaction/ChainTracker.ts +2 -2
  562. package/src/transaction/FeeModel.ts +0 -1
  563. package/src/transaction/MerklePath.ts +124 -59
  564. package/src/transaction/Transaction.ts +188 -187
  565. package/src/transaction/TransactionOutput.ts +0 -1
  566. package/src/transaction/__tests/Beef.test.ts +390 -287
  567. package/src/transaction/__tests/MerklePath.test.ts +59 -26
  568. package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
  569. package/src/transaction/__tests/Transaction.test.ts +758 -482
  570. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  571. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  572. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  573. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  574. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  575. package/src/transaction/broadcasters/ARC.ts +69 -38
  576. package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
  577. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
  578. package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
  579. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
  580. package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
  581. package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
  582. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
  583. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
  584. package/src/transaction/http/DefaultHttpClient.ts +5 -4
  585. package/src/transaction/http/FetchHttpClient.ts +18 -9
  586. package/src/transaction/http/HttpClient.ts +27 -22
  587. package/src/transaction/http/NodejsHttpClient.ts +23 -9
  588. package/src/transaction/http/index.ts +5 -1
  589. package/src/transaction/index.ts +5 -1
  590. package/src/wallet/CachedKeyDeriver.ts +151 -82
  591. package/src/wallet/KeyDeriver.ts +186 -105
  592. package/src/wallet/ProtoWallet.ts +121 -52
  593. package/src/wallet/Wallet.interfaces.ts +167 -156
  594. package/src/wallet/WalletClient.ts +314 -59
  595. package/src/wallet/WalletError.ts +2 -2
  596. package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
  597. package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
  598. package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
  599. package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
  600. package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
  601. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  602. package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
  603. package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
  604. package/src/wallet/substrates/XDM.ts +425 -36
  605. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
  606. package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
  607. package/src/wallet/substrates/window.CWI.ts +520 -61
@@ -1,3 +1,5 @@
1
+ // @ts-nocheck
2
+ /* eslint-disable @typescript-eslint/naming-convention */
1
3
  const assert = (
2
4
  expression: unknown,
3
5
  message: string = 'Hash assertion failed'
@@ -50,7 +52,10 @@ abstract class BaseHash {
50
52
  hmacStrength: number
51
53
 
52
54
  constructor (
53
- blockSize: number, outSize: number, hmacStrength: number, padLength: number
55
+ blockSize: number,
56
+ outSize: number,
57
+ hmacStrength: number,
58
+ padLength: number
54
59
  ) {
55
60
  this.pending = null
56
61
  this.pendingTotal = 0
@@ -106,7 +111,9 @@ abstract class BaseHash {
106
111
  // Process pending data in blocks
107
112
  const r = msg.length % this._delta8
108
113
  this.pending = msg.slice(msg.length - r, msg.length)
109
- if (this.pending.length === 0) { this.pending = null }
114
+ if (this.pending.length === 0) {
115
+ this.pending = null
116
+ }
110
117
 
111
118
  msg = join32(msg, 0, msg.length - r, this.endian)
112
119
  for (let i = 0; i < msg.length; i += this._delta32) {
@@ -132,7 +139,7 @@ abstract class BaseHash {
132
139
  assert(this.pending === null)
133
140
 
134
141
  return this._digest()
135
- };
142
+ }
136
143
 
137
144
  /**
138
145
  * Finalizes the hash computation and returns the hash value/result as a hex string.
@@ -149,7 +156,7 @@ abstract class BaseHash {
149
156
  assert(this.pending === null)
150
157
 
151
158
  return this._digestHex()
152
- };
159
+ }
153
160
 
154
161
  /**
155
162
  * [Private Method] Used internally to prepare the padding for the final stage of the hash computation.
@@ -159,20 +166,25 @@ abstract class BaseHash {
159
166
  *
160
167
  * @returns Returns an array denoting the padding.
161
168
  */
162
- private _pad (): number[] { //
169
+ private _pad (): number[] {
170
+ //
163
171
  let len = this.pendingTotal
164
172
  const bytes = this._delta8
165
173
  const k = bytes - ((len + this.padLength) % bytes)
166
174
  const res = new Array(k + this.padLength)
167
175
  res[0] = 0x80
168
176
  let i
169
- for (i = 1; i < k; i++) { res[i] = 0 }
177
+ for (i = 1; i < k; i++) {
178
+ res[i] = 0
179
+ }
170
180
 
171
181
  // Append length
172
182
  len <<= 3
173
183
  let t
174
184
  if (this.endian === 'big') {
175
- for (t = 8; t < this.padLength; t++) { res[i++] = 0 }
185
+ for (t = 8; t < this.padLength; t++) {
186
+ res[i++] = 0
187
+ }
176
188
 
177
189
  res[i++] = 0
178
190
  res[i++] = 0
@@ -192,7 +204,9 @@ abstract class BaseHash {
192
204
  res[i++] = 0
193
205
  res[i++] = 0
194
206
 
195
- for (t = 8; t < this.padLength; t++) { res[i++] = 0 }
207
+ for (t = 8; t < this.padLength; t++) {
208
+ res[i++] = 0
209
+ }
196
210
  }
197
211
 
198
212
  return res
@@ -200,13 +214,13 @@ abstract class BaseHash {
200
214
  }
201
215
 
202
216
  function isSurrogatePair (msg: string, i: number): boolean {
203
- if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {
217
+ if ((msg.charCodeAt(i) & 0xfc00) !== 0xd800) {
204
218
  return false
205
219
  }
206
220
  if (i < 0 || i + 1 >= msg.length) {
207
221
  return false
208
222
  }
209
- return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00
223
+ return (msg.charCodeAt(i + 1) & 0xfc00) === 0xdc00
210
224
  }
211
225
 
212
226
  /**
@@ -215,14 +229,21 @@ function isSurrogatePair (msg: string, i: number): boolean {
215
229
  * @param enc Optional. Encoding to use if msg is string. Default is 'utf8'.
216
230
  * @returns array of byte values from msg. If msg is an array, a copy is returned.
217
231
  */
218
- export function toArray (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] {
219
- if (Array.isArray(msg)) { return msg.slice() }
220
- if (!(msg as unknown as boolean)) { return [] }
232
+ export function toArray (
233
+ msg: number[] | string,
234
+ enc?: 'hex' | 'utf8'
235
+ ): number[] {
236
+ if (Array.isArray(msg)) {
237
+ return msg.slice()
238
+ }
239
+ if (!(msg as unknown as boolean)) {
240
+ return []
241
+ }
221
242
  const res = []
222
243
  if (typeof msg === 'string') {
223
244
  if (enc !== 'hex') {
224
245
  // Inspired by stringToUtf8ByteArray() in closure-library by Google
225
- // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143
246
+ // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt#L117-L143
226
247
  // Apache License 2.0
227
248
  // https://github.com/google/closure-library/blob/master/LICENSE
228
249
  let p = 0
@@ -234,7 +255,7 @@ export function toArray (msg: number[] | string, enc?: 'hex' | 'utf8'): number[]
234
255
  res[p++] = (c >> 6) | 192
235
256
  res[p++] = (c & 63) | 128
236
257
  } else if (isSurrogatePair(msg, i)) {
237
- c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF)
258
+ c = 0x10000 + ((c & 0x03ff) << 10) + (msg.charCodeAt(++i) & 0x03ff)
238
259
  res[p++] = (c >> 18) | 240
239
260
  res[p++] = ((c >> 12) & 63) | 128
240
261
  res[p++] = ((c >> 6) & 63) | 128
@@ -246,7 +267,7 @@ export function toArray (msg: number[] | string, enc?: 'hex' | 'utf8'): number[]
246
267
  }
247
268
  }
248
269
  } else {
249
- msg = msg.replace(/[^a-z0-9]+/ig, '')
270
+ msg = msg.replace(/[^a-z0-9]+/gi, '')
250
271
  if (msg.length % 2 !== 0) {
251
272
  msg = '0' + msg
252
273
  }
@@ -256,13 +277,16 @@ export function toArray (msg: number[] | string, enc?: 'hex' | 'utf8'): number[]
256
277
  }
257
278
  } else {
258
279
  msg = msg as number[]
259
- for (let i = 0; i < msg.length; i++) { res[i] = msg[i] | 0 }
280
+ for (let i = 0; i < msg.length; i++) {
281
+ res[i] = msg[i] | 0
282
+ }
260
283
  }
261
284
  return res
262
285
  }
263
286
 
264
287
  function htonl (w: number): number {
265
- const res = (w >>> 24) |
288
+ const res =
289
+ (w >>> 24) |
266
290
  ((w >>> 8) & 0xff00) |
267
291
  ((w << 8) & 0xff0000) |
268
292
  ((w & 0xff) << 24)
@@ -273,7 +297,9 @@ function toHex32 (msg: number[], endian?: 'little' | 'big'): string {
273
297
  let res = ''
274
298
  for (let i = 0; i < msg.length; i++) {
275
299
  let w = msg[i]
276
- if (endian === 'little') { w = htonl(w) }
300
+ if (endian === 'little') {
301
+ w = htonl(w)
302
+ }
277
303
  res += zero8(w.toString(16))
278
304
  }
279
305
  return res
@@ -355,19 +381,29 @@ function SUM32_4 (a: number, b: number, c: number, d: number): number {
355
381
  }
356
382
 
357
383
  function SUM32_5 (
358
- a: number, b: number, c: number, d: number, e: number
384
+ a: number,
385
+ b: number,
386
+ c: number,
387
+ d: number,
388
+ e: number
359
389
  ): number {
360
390
  return (a + b + c + d + e) >>> 0
361
391
  }
362
392
 
363
393
  function FT_1 (s, x, y, z): number {
364
- if (s === 0) { return ch32(x, y, z) }
365
- if (s === 1 || s === 3) { return p32(x, y, z) }
366
- if (s === 2) { return maj32(x, y, z) }
394
+ if (s === 0) {
395
+ return ch32(x, y, z)
396
+ }
397
+ if (s === 1 || s === 3) {
398
+ return p32(x, y, z)
399
+ }
400
+ if (s === 2) {
401
+ return maj32(x, y, z)
402
+ }
367
403
  }
368
404
 
369
405
  function ch32 (x, y, z): number {
370
- return (x & y) ^ ((~x) & z)
406
+ return (x & y) ^ (~x & z)
371
407
  }
372
408
 
373
409
  function maj32 (x, y, z): number {
@@ -395,50 +431,76 @@ function G1_256 (x): number {
395
431
  }
396
432
 
397
433
  const r = [
398
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
399
- 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
400
- 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
401
- 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
402
- 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
434
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15,
435
+ 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11,
436
+ 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7,
437
+ 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
403
438
  ]
404
439
 
405
440
  const rh = [
406
- 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
407
- 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
408
- 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
409
- 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
410
- 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
441
+ 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5,
442
+ 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0,
443
+ 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1,
444
+ 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
411
445
  ]
412
446
 
413
447
  const s = [
414
- 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
415
- 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
416
- 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
417
- 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
418
- 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
448
+ 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7,
449
+ 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5,
450
+ 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5,
451
+ 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
419
452
  ]
420
453
 
421
454
  const sh = [
422
- 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
423
- 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
424
- 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
425
- 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
426
- 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
455
+ 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8,
456
+ 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14,
457
+ 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5,
458
+ 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
427
459
  ]
428
460
 
429
461
  function f (j, x, y, z): number {
430
- if (j <= 15) { return x ^ y ^ z } else if (j <= 31) { return (x & y) | ((~x) & z) } else if (j <= 47) { return (x | (~y)) ^ z } else if (j <= 63) { return (x & z) | (y & (~z)) } else { return x ^ (y | (~z)) }
462
+ if (j <= 15) {
463
+ return x ^ y ^ z
464
+ } else if (j <= 31) {
465
+ return (x & y) | (~x & z)
466
+ } else if (j <= 47) {
467
+ return (x | ~y) ^ z
468
+ } else if (j <= 63) {
469
+ return (x & z) | (y & ~z)
470
+ } else {
471
+ return x ^ (y | ~z)
472
+ }
431
473
  }
432
474
 
433
475
  function K (j): number {
434
- if (j <= 15) { return 0x00000000 } else if (j <= 31) { return 0x5a827999 } else if (j <= 47) { return 0x6ed9eba1 } else if (j <= 63) { return 0x8f1bbcdc } else { return 0xa953fd4e }
476
+ if (j <= 15) {
477
+ return 0x00000000
478
+ } else if (j <= 31) {
479
+ return 0x5a827999
480
+ } else if (j <= 47) {
481
+ return 0x6ed9eba1
482
+ } else if (j <= 63) {
483
+ return 0x8f1bbcdc
484
+ } else {
485
+ return 0xa953fd4e
486
+ }
435
487
  }
436
488
 
437
489
  function Kh (j): number {
438
- if (j <= 15) { return 0x50a28be6 } else if (j <= 31) { return 0x5c4dd124 } else if (j <= 47) { return 0x6d703ef3 } else if (j <= 63) { return 0x7a6d76e9 } else { return 0x00000000 }
490
+ if (j <= 15) {
491
+ return 0x50a28be6
492
+ } else if (j <= 31) {
493
+ return 0x5c4dd124
494
+ } else if (j <= 47) {
495
+ return 0x6d703ef3
496
+ } else if (j <= 63) {
497
+ return 0x7a6d76e9
498
+ } else {
499
+ return 0x00000000
500
+ }
439
501
  }
440
502
 
441
- function sum64 (buf, pos, ah, al) {
503
+ function sum64 (buf: number[], pos: number, ah: number, al: number): void {
442
504
  const bh = buf[pos]
443
505
  const bl = buf[pos + 1]
444
506
 
@@ -448,18 +510,27 @@ function sum64 (buf, pos, ah, al) {
448
510
  buf[pos + 1] = lo
449
511
  }
450
512
 
451
- function sum64_hi (ah, al, bh, bl) {
513
+ function sum64HI (ah: number, al: number, bh: number, bl: number): number {
452
514
  const lo = (al + bl) >>> 0
453
515
  const hi = (lo < al ? 1 : 0) + ah + bh
454
516
  return hi >>> 0
455
517
  }
456
518
 
457
- function sum64_lo (ah, al, bh, bl) {
519
+ function sum64LO (ah: number, al: number, bh: number, bl: number): number {
458
520
  const lo = al + bl
459
521
  return lo >>> 0
460
522
  }
461
523
 
462
- function sum64_4_hi (ah, al, bh, bl, ch, cl, dh, dl) {
524
+ function sum64and4HI (
525
+ ah: number,
526
+ al: number,
527
+ bh: number,
528
+ bl: number,
529
+ ch: number,
530
+ cl: number,
531
+ dh: number,
532
+ dl: number
533
+ ): number {
463
534
  let carry = 0
464
535
  let lo = al
465
536
  lo = (lo + bl) >>> 0
@@ -473,12 +544,32 @@ function sum64_4_hi (ah, al, bh, bl, ch, cl, dh, dl) {
473
544
  return hi >>> 0
474
545
  }
475
546
 
476
- function sum64_4_lo (ah, al, bh, bl, ch, cl, dh, dl) {
547
+ function sum64and4LO (
548
+ ah: number,
549
+ al: number,
550
+ bh: number,
551
+ bl: number,
552
+ ch: number,
553
+ cl: number,
554
+ dh: number,
555
+ dl: number
556
+ ): number {
477
557
  const lo = al + bl + cl + dl
478
558
  return lo >>> 0
479
559
  }
480
560
 
481
- function sum64_5_hi (ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
561
+ function sum64and5HI (
562
+ ah: number,
563
+ al: number,
564
+ bh: number,
565
+ bl: number,
566
+ ch: number,
567
+ cl: number,
568
+ dh: number,
569
+ dl: number,
570
+ eh: number,
571
+ el: number
572
+ ): number {
482
573
  let carry = 0
483
574
  let lo = al
484
575
  lo = (lo + bl) >>> 0
@@ -494,27 +585,37 @@ function sum64_5_hi (ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
494
585
  return hi >>> 0
495
586
  }
496
587
 
497
- function sum64_5_lo (ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
588
+ function sum64and5LO (
589
+ ah: number,
590
+ al: number,
591
+ bh: number,
592
+ bl: number,
593
+ ch: number,
594
+ cl: number,
595
+ dh: number,
596
+ dl: number,
597
+ eh: number,
598
+ el: number
599
+ ): number {
498
600
  const lo = al + bl + cl + dl + el
499
-
500
601
  return lo >>> 0
501
602
  }
502
603
 
503
- function rotr64_hi (ah, al, num) {
604
+ function rotr64HI (ah: number, al: number, num: number): number {
504
605
  const r = (al << (32 - num)) | (ah >>> num)
505
606
  return r >>> 0
506
607
  }
507
608
 
508
- function rotr64_lo (ah, al, num) {
609
+ function rotr64LO (ah: number, al: number, num: number): number {
509
610
  const r = (ah << (32 - num)) | (al >>> num)
510
611
  return r >>> 0
511
612
  }
512
613
 
513
- function shr64_hi (ah, al, num) {
614
+ function shr64HI (ah: number, al: number, num: number): number {
514
615
  return ah >>> num
515
616
  }
516
617
 
517
- function shr64_lo (ah, al, num) {
618
+ function shr64LO (ah: number, al: number, num: number): number {
518
619
  const r = (ah << (32 - num)) | (al >>> num)
519
620
  return r >>> 0
520
621
  }
@@ -561,10 +662,9 @@ export class RIPEMD160 extends BaseHash {
561
662
  let T
562
663
  for (let j = 0; j < 80; j++) {
563
664
  T = sum32(
564
- rotl32(
565
- SUM32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
566
- s[j]),
567
- E)
665
+ rotl32(SUM32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]),
666
+ E
667
+ )
568
668
  A = E
569
669
  E = D
570
670
  D = rotl32(C, 10)
@@ -573,8 +673,10 @@ export class RIPEMD160 extends BaseHash {
573
673
  T = sum32(
574
674
  rotl32(
575
675
  SUM32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
576
- sh[j]),
577
- Eh)
676
+ sh[j]
677
+ ),
678
+ Eh
679
+ )
578
680
  Ah = Eh
579
681
  Eh = Dh
580
682
  Dh = rotl32(Ch, 10)
@@ -625,25 +727,20 @@ export class SHA256 extends BaseHash {
625
727
  constructor () {
626
728
  super(512, 256, 192, 64)
627
729
  this.h = [
628
- 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
629
- 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
730
+ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c,
731
+ 0x1f83d9ab, 0x5be0cd19
630
732
  ]
631
733
  this.k = [
632
- 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
633
- 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
634
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
635
- 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
636
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
637
- 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
638
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
639
- 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
640
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
641
- 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
642
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
643
- 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
644
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
645
- 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
646
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
734
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
735
+ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
736
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
737
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
738
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
739
+ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
740
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
741
+ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
742
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
743
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
647
744
  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
648
745
  ]
649
746
  this.W = new Array(64)
@@ -652,6 +749,11 @@ export class SHA256 extends BaseHash {
652
749
  _update (msg: number[], start?: number): void {
653
750
  const W = this.W
654
751
 
752
+ // Default start to 0
753
+ if (start === undefined) {
754
+ start = 0
755
+ }
756
+
655
757
  let i: number
656
758
  for (i = 0; i < 16; i++) {
657
759
  W[i] = msg[start + i]
@@ -691,7 +793,7 @@ export class SHA256 extends BaseHash {
691
793
  this.h[5] = sum32(this.h[5], f)
692
794
  this.h[6] = sum32(this.h[6], g)
693
795
  this.h[7] = sum32(this.h[7], h)
694
- };
796
+ }
695
797
 
696
798
  _digest (): number[] {
697
799
  return split32(this.h, 'big')
@@ -728,21 +830,23 @@ export class SHA1 extends BaseHash {
728
830
 
729
831
  constructor () {
730
832
  super(512, 160, 80, 64)
731
- this.k = [
732
- 0x5A827999, 0x6ED9EBA1,
733
- 0x8F1BBCDC, 0xCA62C1D6
734
- ]
735
- this.h = [
736
- 0x67452301, 0xefcdab89, 0x98badcfe,
737
- 0x10325476, 0xc3d2e1f0]
833
+ this.k = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]
834
+ this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]
738
835
  this.W = new Array(80)
739
836
  }
740
837
 
741
838
  _update (msg: number[], start?: number): void {
742
839
  const W = this.W
743
840
 
841
+ // Default start to 0
842
+ if (start === undefined) {
843
+ start = 0
844
+ }
845
+
744
846
  let i: number
745
- for (i = 0; i < 16; i++) { W[i] = msg[start + i] }
847
+ for (i = 0; i < 16; i++) {
848
+ W[i] = msg[start + i]
849
+ }
746
850
 
747
851
  for (; i < W.length; i++) {
748
852
  W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1)
@@ -807,289 +911,312 @@ export class SHA512 extends BaseHash {
807
911
  constructor () {
808
912
  super(1024, 512, 192, 128)
809
913
  this.h = [
810
- 0x6a09e667, 0xf3bcc908,
811
- 0xbb67ae85, 0x84caa73b,
812
- 0x3c6ef372, 0xfe94f82b,
813
- 0xa54ff53a, 0x5f1d36f1,
814
- 0x510e527f, 0xade682d1,
815
- 0x9b05688c, 0x2b3e6c1f,
816
- 0x1f83d9ab, 0xfb41bd6b,
817
- 0x5be0cd19, 0x137e2179]
914
+ 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b,
915
+ 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f,
916
+ 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179
917
+ ]
818
918
  this.k = [
819
- 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
820
- 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
821
- 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
822
- 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
823
- 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
824
- 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
825
- 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
826
- 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
827
- 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
828
- 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
829
- 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
830
- 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
831
- 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
832
- 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
833
- 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
834
- 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
835
- 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
836
- 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
837
- 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
838
- 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
839
- 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
840
- 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
841
- 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
842
- 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
843
- 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
844
- 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
845
- 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
846
- 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
847
- 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
848
- 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
849
- 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
850
- 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
851
- 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
852
- 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
853
- 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
854
- 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
855
- 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
856
- 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
857
- 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
919
+ 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f,
920
+ 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
921
+ 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242,
922
+ 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
923
+ 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235,
924
+ 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
925
+ 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275,
926
+ 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
927
+ 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f,
928
+ 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
929
+ 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc,
930
+ 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
931
+ 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6,
932
+ 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
933
+ 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218,
934
+ 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
935
+ 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99,
936
+ 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
937
+ 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc,
938
+ 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
939
+ 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915,
940
+ 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
941
+ 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba,
942
+ 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
943
+ 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc,
944
+ 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
858
945
  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
859
946
  ]
860
947
  this.W = new Array(160)
861
948
  }
862
949
 
863
- _prepareBlock (msg, start) {
950
+ _prepareBlock (msg: number[], start: number): void {
864
951
  const W = this.W
865
952
 
866
953
  // 32 x 32bit words
867
- let i
868
- for (i = 0; i < 32; i++) { W[i] = msg[start + i] }
954
+ let i: number
955
+ for (i = 0; i < 32; i++) {
956
+ W[i] = msg[start + i]
957
+ }
869
958
  for (; i < W.length; i += 2) {
870
- const c0_hi = g1_512_hi(W[i - 4], W[i - 3]) // i - 2
871
- const c0_lo = g1_512_lo(W[i - 4], W[i - 3])
872
- const c1_hi = W[i - 14] // i - 7
873
- const c1_lo = W[i - 13]
874
- const c2_hi = g0_512_hi(W[i - 30], W[i - 29]) // i - 15
875
- const c2_lo = g0_512_lo(W[i - 30], W[i - 29])
876
- const c3_hi = W[i - 32] // i - 16
877
- const c3_lo = W[i - 31]
878
-
879
- W[i] = sum64_4_hi(
880
- c0_hi, c0_lo,
881
- c1_hi, c1_lo,
882
- c2_hi, c2_lo,
883
- c3_hi, c3_lo)
884
- W[i + 1] = sum64_4_lo(
885
- c0_hi, c0_lo,
886
- c1_hi, c1_lo,
887
- c2_hi, c2_lo,
888
- c3_hi, c3_lo)
959
+ const c0Hi = g1_512_hi(W[i - 4], W[i - 3]) // i - 2
960
+ const c0Lo = g1_512_lo(W[i - 4], W[i - 3])
961
+ const c1Hi = W[i - 14] // i - 7
962
+ const c1Lo = W[i - 13]
963
+ const c2Hi = g0_512_hi(W[i - 30], W[i - 29]) // i - 15
964
+ const c2Lo = g0_512_lo(W[i - 30], W[i - 29])
965
+ const c3Hi = W[i - 32] // i - 16
966
+ const c3Lo = W[i - 31]
967
+
968
+ W[i] = sum64and4HI(c0Hi, c0Lo, c1Hi, c1Lo, c2Hi, c2Lo, c3Hi, c3Lo)
969
+ W[i + 1] = sum64and4LO(
970
+ c0Hi,
971
+ c0Lo,
972
+ c1Hi,
973
+ c1Lo,
974
+ c2Hi,
975
+ c2Lo,
976
+ c3Hi,
977
+ c3Lo
978
+ )
889
979
  }
890
980
  }
891
981
 
892
- _update (msg, start) {
982
+ _update (msg: any, start: number): void {
893
983
  this._prepareBlock(msg, start)
894
984
 
895
985
  const W = this.W
896
986
 
897
- let ah = this.h[0]
898
- let al = this.h[1]
899
- let bh = this.h[2]
900
- let bl = this.h[3]
901
- let ch = this.h[4]
902
- let cl = this.h[5]
903
- let dh = this.h[6]
904
- let dl = this.h[7]
905
- let eh = this.h[8]
906
- let el = this.h[9]
907
- let fh = this.h[10]
908
- let fl = this.h[11]
909
- let gh = this.h[12]
910
- let gl = this.h[13]
911
- let hh = this.h[14]
912
- let hl = this.h[15]
987
+ let aHigh = this.h[0]
988
+ let aLow = this.h[1]
989
+ let bHigh = this.h[2]
990
+ let bLow = this.h[3]
991
+ let cHigh = this.h[4]
992
+ let cLow = this.h[5]
993
+ let dHigh = this.h[6]
994
+ let dLow = this.h[7]
995
+ let eHigh = this.h[8]
996
+ let eLow = this.h[9]
997
+ let fHigh = this.h[10]
998
+ let fLow = this.h[11]
999
+ let gHigh = this.h[12]
1000
+ let gLow = this.h[13]
1001
+ let hHigh = this.h[14]
1002
+ let hLow = this.h[15]
913
1003
 
914
1004
  assert(this.k.length === W.length)
1005
+
915
1006
  for (let i = 0; i < W.length; i += 2) {
916
- let c0_hi = hh
917
- let c0_lo = hl
918
- let c1_hi = s1_512_hi(eh, el)
919
- let c1_lo = s1_512_lo(eh, el)
920
- const c2_hi = ch64_hi(eh, el, fh, fl, gh, gl)
921
- const c2_lo = ch64_lo(eh, el, fh, fl, gh, gl)
922
- const c3_hi = this.k[i]
923
- const c3_lo = this.k[i + 1]
924
- const c4_hi = W[i]
925
- const c4_lo = W[i + 1]
926
-
927
- const T1_hi = sum64_5_hi(
928
- c0_hi, c0_lo,
929
- c1_hi, c1_lo,
930
- c2_hi, c2_lo,
931
- c3_hi, c3_lo,
932
- c4_hi, c4_lo)
933
- const T1_lo = sum64_5_lo(
934
- c0_hi, c0_lo,
935
- c1_hi, c1_lo,
936
- c2_hi, c2_lo,
937
- c3_hi, c3_lo,
938
- c4_hi, c4_lo)
939
-
940
- c0_hi = s0_512_hi(ah, al)
941
- c0_lo = s0_512_lo(ah, al)
942
- c1_hi = maj64_hi(ah, al, bh, bl, ch, cl)
943
- c1_lo = maj64_lo(ah, al, bh, bl, ch, cl)
944
-
945
- const T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo)
946
- const T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo)
947
-
948
- hh = gh
949
- hl = gl
950
-
951
- gh = fh
952
- gl = fl
953
-
954
- fh = eh
955
- fl = el
956
-
957
- eh = sum64_hi(dh, dl, T1_hi, T1_lo)
958
- el = sum64_lo(dl, dl, T1_hi, T1_lo)
959
-
960
- dh = ch
961
- dl = cl
962
-
963
- ch = bh
964
- cl = bl
965
-
966
- bh = ah
967
- bl = al
968
-
969
- ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo)
970
- al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo)
1007
+ let temp0High = hHigh
1008
+ let temp0Low = hLow
1009
+ let temp1High = s1_512_hi(eHigh, eLow)
1010
+ let temp1Low = s1_512_lo(eHigh, eLow)
1011
+ const temp2High = ch64_hi(eHigh, eLow, fHigh, fLow, gHigh, gLow)
1012
+ const temp2Low = ch64_lo(eHigh, eLow, fHigh, fLow, gHigh, gLow)
1013
+ const temp3High = this.k[i]
1014
+ const temp3Low = this.k[i + 1]
1015
+ const temp4High = W[i]
1016
+ const temp4Low = W[i + 1]
1017
+
1018
+ const t1High = sum64and5HI(
1019
+ temp0High,
1020
+ temp0Low,
1021
+ temp1High,
1022
+ temp1Low,
1023
+ temp2High,
1024
+ temp2Low,
1025
+ temp3High,
1026
+ temp3Low,
1027
+ temp4High,
1028
+ temp4Low
1029
+ )
1030
+ const t1Low = sum64and5LO(
1031
+ temp0High,
1032
+ temp0Low,
1033
+ temp1High,
1034
+ temp1Low,
1035
+ temp2High,
1036
+ temp2Low,
1037
+ temp3High,
1038
+ temp3Low,
1039
+ temp4High,
1040
+ temp4Low
1041
+ )
1042
+
1043
+ temp0High = s0_512_hi(aHigh, aLow)
1044
+ temp0Low = s0_512_lo(aHigh, aLow)
1045
+ temp1High = maj64_hi(aHigh, aLow, bHigh, bLow, cHigh, cLow)
1046
+ temp1Low = maj64_lo(aHigh, aLow, bHigh, bLow, cHigh, cLow)
1047
+
1048
+ const t2High = sum64HI(temp0High, temp0Low, temp1High, temp1Low)
1049
+ const t2Low = sum64LO(temp0High, temp0Low, temp1High, temp1Low)
1050
+
1051
+ hHigh = gHigh
1052
+ hLow = gLow
1053
+
1054
+ gHigh = fHigh
1055
+ gLow = fLow
1056
+
1057
+ fHigh = eHigh
1058
+ fLow = eLow
1059
+
1060
+ eHigh = sum64HI(dHigh, dLow, t1High, t1Low)
1061
+ eLow = sum64LO(dLow, dLow, t1High, t1Low)
1062
+
1063
+ dHigh = cHigh
1064
+ dLow = cLow
1065
+
1066
+ cHigh = bHigh
1067
+ cLow = bLow
1068
+
1069
+ bHigh = aHigh
1070
+ bLow = aLow
1071
+
1072
+ aHigh = sum64HI(t1High, t1Low, t2High, t2Low)
1073
+ aLow = sum64LO(t1High, t1Low, t2High, t2Low)
971
1074
  }
972
1075
 
973
- sum64(this.h, 0, ah, al)
974
- sum64(this.h, 2, bh, bl)
975
- sum64(this.h, 4, ch, cl)
976
- sum64(this.h, 6, dh, dl)
977
- sum64(this.h, 8, eh, el)
978
- sum64(this.h, 10, fh, fl)
979
- sum64(this.h, 12, gh, gl)
980
- sum64(this.h, 14, hh, hl)
1076
+ sum64(this.h, 0, aHigh, aLow)
1077
+ sum64(this.h, 2, bHigh, bLow)
1078
+ sum64(this.h, 4, cHigh, cLow)
1079
+ sum64(this.h, 6, dHigh, dLow)
1080
+ sum64(this.h, 8, eHigh, eLow)
1081
+ sum64(this.h, 10, fHigh, fLow)
1082
+ sum64(this.h, 12, gHigh, gLow)
1083
+ sum64(this.h, 14, hHigh, hLow)
981
1084
  }
982
1085
 
983
- _digest () {
1086
+ _digest (): number[] {
984
1087
  return split32(this.h, 'big')
985
1088
  }
986
1089
 
987
- _digestHex () {
1090
+ _digestHex (): number[] {
988
1091
  return toHex32(this.h, 'big')
989
1092
  }
990
1093
  }
991
1094
 
992
- function ch64_hi (xh, xl, yh, yl, zh, zl) {
993
- let r = (xh & yh) ^ ((~xh) & zh)
994
- if (r < 0) { r += 0x100000000 }
1095
+ function ch64_hi (xh: number, xl: number, yh: number, yl: number, zh: number, zl: number): number {
1096
+ let r: number = (xh & yh) ^ (~xh & zh)
1097
+ if (r < 0) {
1098
+ r += 0x100000000
1099
+ }
995
1100
  return r
996
1101
  }
997
1102
 
998
- function ch64_lo (xh, xl, yh, yl, zh, zl) {
999
- let r = (xl & yl) ^ ((~xl) & zl)
1000
- if (r < 0) { r += 0x100000000 }
1103
+ function ch64_lo (xh: number, xl: number, yh: number, yl: number, zh: number, zl: number): number {
1104
+ let r: number = (xl & yl) ^ (~xl & zl)
1105
+ if (r < 0) {
1106
+ r += 0x100000000
1107
+ }
1001
1108
  return r
1002
1109
  }
1003
1110
 
1004
- function maj64_hi (xh, xl, yh, yl, zh, zl) {
1005
- let r = (xh & yh) ^ (xh & zh) ^ (yh & zh)
1006
- if (r < 0) { r += 0x100000000 }
1111
+ function maj64_hi (xh: number, xl: number, yh: number, yl: number, zh: number, zl: number): number {
1112
+ let r: number = (xh & yh) ^ (xh & zh) ^ (yh & zh)
1113
+ if (r < 0) {
1114
+ r += 0x100000000
1115
+ }
1007
1116
  return r
1008
1117
  }
1009
1118
 
1010
- function maj64_lo (xh, xl, yh, yl, zh, zl) {
1011
- let r = (xl & yl) ^ (xl & zl) ^ (yl & zl)
1012
- if (r < 0) { r += 0x100000000 }
1119
+ function maj64_lo (xh: number, xl: number, yh: number, yl: number, zh: number, zl: number): number {
1120
+ let r: number = (xl & yl) ^ (xl & zl) ^ (yl & zl)
1121
+ if (r < 0) {
1122
+ r += 0x100000000
1123
+ }
1013
1124
  return r
1014
1125
  }
1015
1126
 
1016
- function s0_512_hi (xh, xl) {
1017
- const c0_hi = rotr64_hi(xh, xl, 28)
1018
- const c1_hi = rotr64_hi(xl, xh, 2) // 34
1019
- const c2_hi = rotr64_hi(xl, xh, 7) // 39
1127
+ function s0_512_hi (xh: number, xl: number): number {
1128
+ const c0_hi: number = rotr64HI(xh, xl, 28)
1129
+ const c1_hi: number = rotr64HI(xl, xh, 2) // 34
1130
+ const c2_hi: number = rotr64HI(xl, xh, 7) // 39
1020
1131
 
1021
- let r = c0_hi ^ c1_hi ^ c2_hi
1022
- if (r < 0) { r += 0x100000000 }
1132
+ let r: number = c0_hi ^ c1_hi ^ c2_hi
1133
+ if (r < 0) {
1134
+ r += 0x100000000
1135
+ }
1023
1136
  return r
1024
1137
  }
1025
1138
 
1026
- function s0_512_lo (xh, xl) {
1027
- const c0_lo = rotr64_lo(xh, xl, 28)
1028
- const c1_lo = rotr64_lo(xl, xh, 2) // 34
1029
- const c2_lo = rotr64_lo(xl, xh, 7) // 39
1139
+ function s0_512_lo (xh: number, xl: number): number {
1140
+ const c0_lo: number = rotr64LO(xh, xl, 28)
1141
+ const c1_lo: number = rotr64LO(xl, xh, 2) // 34
1142
+ const c2_lo: number = rotr64LO(xl, xh, 7) // 39
1030
1143
 
1031
- let r = c0_lo ^ c1_lo ^ c2_lo
1032
- if (r < 0) { r += 0x100000000 }
1144
+ let r: number = c0_lo ^ c1_lo ^ c2_lo
1145
+ if (r < 0) {
1146
+ r += 0x100000000
1147
+ }
1033
1148
  return r
1034
1149
  }
1035
1150
 
1036
- function s1_512_hi (xh, xl) {
1037
- const c0_hi = rotr64_hi(xh, xl, 14)
1038
- const c1_hi = rotr64_hi(xh, xl, 18)
1039
- const c2_hi = rotr64_hi(xl, xh, 9) // 41
1151
+ function s1_512_hi (xh: number, xl: number): number {
1152
+ const c0_hi: number = rotr64HI(xh, xl, 14)
1153
+ const c1_hi: number = rotr64HI(xh, xl, 18)
1154
+ const c2_hi: number = rotr64HI(xl, xh, 9) // 41
1040
1155
 
1041
- let r = c0_hi ^ c1_hi ^ c2_hi
1042
- if (r < 0) { r += 0x100000000 }
1156
+ let r: number = c0_hi ^ c1_hi ^ c2_hi
1157
+ if (r < 0) {
1158
+ r += 0x100000000
1159
+ }
1043
1160
  return r
1044
1161
  }
1045
1162
 
1046
- function s1_512_lo (xh, xl) {
1047
- const c0_lo = rotr64_lo(xh, xl, 14)
1048
- const c1_lo = rotr64_lo(xh, xl, 18)
1049
- const c2_lo = rotr64_lo(xl, xh, 9) // 41
1163
+ function s1_512_lo (xh: number, xl: number): number {
1164
+ const c0_lo: number = rotr64LO(xh, xl, 14)
1165
+ const c1_lo: number = rotr64LO(xh, xl, 18)
1166
+ const c2_lo: number = rotr64LO(xl, xh, 9) // 41
1050
1167
 
1051
- let r = c0_lo ^ c1_lo ^ c2_lo
1052
- if (r < 0) { r += 0x100000000 }
1168
+ let r: number = c0_lo ^ c1_lo ^ c2_lo
1169
+ if (r < 0) {
1170
+ r += 0x100000000
1171
+ }
1053
1172
  return r
1054
1173
  }
1055
1174
 
1056
- function g0_512_hi (xh, xl) {
1057
- const c0_hi = rotr64_hi(xh, xl, 1)
1058
- const c1_hi = rotr64_hi(xh, xl, 8)
1059
- const c2_hi = shr64_hi(xh, xl, 7)
1175
+ function g0_512_hi (xh: number, xl: number): number {
1176
+ const c0_hi: number = rotr64HI(xh, xl, 1)
1177
+ const c1_hi: number = rotr64HI(xh, xl, 8)
1178
+ const c2_hi: number = shr64HI(xh, xl, 7)
1060
1179
 
1061
- let r = c0_hi ^ c1_hi ^ c2_hi
1062
- if (r < 0) { r += 0x100000000 }
1180
+ let r: number = c0_hi ^ c1_hi ^ c2_hi
1181
+ if (r < 0) {
1182
+ r += 0x100000000
1183
+ }
1063
1184
  return r
1064
1185
  }
1065
1186
 
1066
- function g0_512_lo (xh, xl) {
1067
- const c0_lo = rotr64_lo(xh, xl, 1)
1068
- const c1_lo = rotr64_lo(xh, xl, 8)
1069
- const c2_lo = shr64_lo(xh, xl, 7)
1187
+ function g0_512_lo (xh: number, xl: number): number {
1188
+ const c0_lo: number = rotr64LO(xh, xl, 1)
1189
+ const c1_lo: number = rotr64LO(xh, xl, 8)
1190
+ const c2_lo: number = shr64LO(xh, xl, 7)
1070
1191
 
1071
- let r = c0_lo ^ c1_lo ^ c2_lo
1072
- if (r < 0) { r += 0x100000000 }
1192
+ let r: number = c0_lo ^ c1_lo ^ c2_lo
1193
+ if (r < 0) {
1194
+ r += 0x100000000
1195
+ }
1073
1196
  return r
1074
1197
  }
1075
1198
 
1076
- function g1_512_hi (xh, xl) {
1077
- const c0_hi = rotr64_hi(xh, xl, 19)
1078
- const c1_hi = rotr64_hi(xl, xh, 29) // 61
1079
- const c2_hi = shr64_hi(xh, xl, 6)
1199
+ function g1_512_hi (xh: number, xl: number): number {
1200
+ const c0_hi: number = rotr64HI(xh, xl, 19)
1201
+ const c1_hi: number = rotr64HI(xl, xh, 29) // 61
1202
+ const c2_hi: number = shr64HI(xh, xl, 6)
1080
1203
 
1081
- let r = c0_hi ^ c1_hi ^ c2_hi
1082
- if (r < 0) { r += 0x100000000 }
1204
+ let r: number = c0_hi ^ c1_hi ^ c2_hi
1205
+ if (r < 0) {
1206
+ r += 0x100000000
1207
+ }
1083
1208
  return r
1084
1209
  }
1085
1210
 
1086
- function g1_512_lo (xh, xl) {
1087
- const c0_lo = rotr64_lo(xh, xl, 19)
1088
- const c1_lo = rotr64_lo(xl, xh, 29) // 61
1089
- const c2_lo = shr64_lo(xh, xl, 6)
1211
+ function g1_512_lo (xh: number, xl: number): number {
1212
+ const c0_lo: number = rotr64LO(xh, xl, 19)
1213
+ const c1_lo: number = rotr64LO(xl, xh, 29) // 61
1214
+ const c2_lo: number = shr64LO(xh, xl, 6)
1090
1215
 
1091
- let r = c0_lo ^ c1_lo ^ c2_lo
1092
- if (r < 0) { r += 0x100000000 }
1216
+ let r: number = c0_lo ^ c1_lo ^ c2_lo
1217
+ if (r < 0) {
1218
+ r += 0x100000000
1219
+ }
1093
1220
  return r
1094
1221
  }
1095
1222
 
@@ -1134,13 +1261,19 @@ export class SHA256HMAC {
1134
1261
 
1135
1262
  // Add padding to key
1136
1263
  let i
1137
- for (i = key.length; i < this.blockSize; i++) { key.push(0) }
1264
+ for (i = key.length; i < this.blockSize; i++) {
1265
+ key.push(0)
1266
+ }
1138
1267
 
1139
- for (i = 0; i < key.length; i++) { key[i] ^= 0x36 }
1268
+ for (i = 0; i < key.length; i++) {
1269
+ key[i] ^= 0x36
1270
+ }
1140
1271
  this.inner = new SHA256().update(key)
1141
1272
 
1142
1273
  // 0x36 ^ 0x5c = 0x6a
1143
- for (i = 0; i < key.length; i++) { key[i] ^= 0x6a }
1274
+ for (i = 0; i < key.length; i++) {
1275
+ key[i] ^= 0x6a
1276
+ }
1144
1277
  this.outer = new SHA256().update(key)
1145
1278
  }
1146
1279
 
@@ -1276,13 +1409,19 @@ export class SHA512HMAC {
1276
1409
 
1277
1410
  // Add padding to key
1278
1411
  let i
1279
- for (i = key.length; i < this.blockSize; i++) { key.push(0) }
1412
+ for (i = key.length; i < this.blockSize; i++) {
1413
+ key.push(0)
1414
+ }
1280
1415
 
1281
- for (i = 0; i < key.length; i++) { key[i] ^= 0x36 }
1416
+ for (i = 0; i < key.length; i++) {
1417
+ key[i] ^= 0x36
1418
+ }
1282
1419
  this.inner = new SHA512().update(key)
1283
1420
 
1284
1421
  // 0x36 ^ 0x5c = 0x6a
1285
- for (i = 0; i < key.length; i++) { key[i] ^= 0x6a }
1422
+ for (i = 0; i < key.length; i++) {
1423
+ key[i] ^= 0x6a
1424
+ }
1286
1425
  this.outer = new SHA512().update(key)
1287
1426
  }
1288
1427
 
@@ -1342,7 +1481,10 @@ export class SHA512HMAC {
1342
1481
  * @example
1343
1482
  * const digest = ripemd160('Hello, world!');
1344
1483
  */
1345
- export const ripemd160 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] => {
1484
+ export const ripemd160 = (
1485
+ msg: number[] | string,
1486
+ enc?: 'hex' | 'utf8'
1487
+ ): number[] => {
1346
1488
  return new RIPEMD160().update(msg, enc).digest()
1347
1489
  }
1348
1490
 
@@ -1357,7 +1499,10 @@ export const ripemd160 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[
1357
1499
  * @example
1358
1500
  * const digest = sha1('Hello, world!');
1359
1501
  */
1360
- export const sha1 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] => {
1502
+ export const sha1 = (
1503
+ msg: number[] | string,
1504
+ enc?: 'hex' | 'utf8'
1505
+ ): number[] => {
1361
1506
  return new SHA1().update(msg, enc).digest()
1362
1507
  }
1363
1508
 
@@ -1372,7 +1517,10 @@ export const sha1 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] =>
1372
1517
  * @example
1373
1518
  * const digest = sha256('Hello, world!');
1374
1519
  */
1375
- export const sha256 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] => {
1520
+ export const sha256 = (
1521
+ msg: number[] | string,
1522
+ enc?: 'hex' | 'utf8'
1523
+ ): number[] => {
1376
1524
  return new SHA256().update(msg, enc).digest()
1377
1525
  }
1378
1526
 
@@ -1387,7 +1535,10 @@ export const sha256 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] =
1387
1535
  * @example
1388
1536
  * const digest = sha512('Hello, world!');
1389
1537
  */
1390
- export const sha512 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] => {
1538
+ export const sha512 = (
1539
+ msg: number[] | string,
1540
+ enc?: 'hex' | 'utf8'
1541
+ ): number[] => {
1391
1542
  return new SHA512().update(msg, enc).digest()
1392
1543
  }
1393
1544
 
@@ -1404,7 +1555,10 @@ export const sha512 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] =
1404
1555
  * @example
1405
1556
  * const doubleHash = hash256('Hello, world!');
1406
1557
  */
1407
- export const hash256 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] => {
1558
+ export const hash256 = (
1559
+ msg: number[] | string,
1560
+ enc?: 'hex' | 'utf8'
1561
+ ): number[] => {
1408
1562
  const first = new SHA256().update(msg, enc).digest()
1409
1563
  return new SHA256().update(first).digest()
1410
1564
  }
@@ -1421,7 +1575,10 @@ export const hash256 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[]
1421
1575
  * @example
1422
1576
  * const hash = hash160('Hello, world!');
1423
1577
  */
1424
- export const hash160 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[] => {
1578
+ export const hash160 = (
1579
+ msg: number[] | string,
1580
+ enc?: 'hex' | 'utf8'
1581
+ ): number[] => {
1425
1582
  const first = new SHA256().update(msg, enc).digest()
1426
1583
  return new RIPEMD160().update(first).digest()
1427
1584
  }
@@ -1438,7 +1595,11 @@ export const hash160 = (msg: number[] | string, enc?: 'hex' | 'utf8'): number[]
1438
1595
  * @example
1439
1596
  * const digest = sha256hmac('deadbeef', 'ffff001d');
1440
1597
  */
1441
- export const sha256hmac = (key: number[] | string, msg: number[] | string, enc?: 'hex'): number[] => {
1598
+ export const sha256hmac = (
1599
+ key: number[] | string,
1600
+ msg: number[] | string,
1601
+ enc?: 'hex'
1602
+ ): number[] => {
1442
1603
  return new SHA256HMAC(key).update(msg, enc).digest()
1443
1604
  }
1444
1605
 
@@ -1454,7 +1615,11 @@ export const sha256hmac = (key: number[] | string, msg: number[] | string, enc?:
1454
1615
  * @example
1455
1616
  * const digest = sha512hmac('deadbeef', 'ffff001d');
1456
1617
  */
1457
- export const sha512hmac = (key: number[] | string, msg: number[] | string, enc?: 'hex'): number[] => {
1618
+ export const sha512hmac = (
1619
+ key: number[] | string,
1620
+ msg: number[] | string,
1621
+ enc?: 'hex'
1622
+ ): number[] => {
1458
1623
  return new SHA512HMAC(key).update(msg, enc).digest()
1459
1624
  }
1460
1625
 
@@ -1469,7 +1634,13 @@ export const sha512hmac = (key: number[] | string, msg: number[] | string, enc?:
1469
1634
  *
1470
1635
  * @returns The computed key
1471
1636
  */
1472
- export function pbkdf2 (password: number[], salt: number[], iterations: number, keylen: number, digest = 'sha512'): number[] {
1637
+ export function pbkdf2 (
1638
+ password: number[],
1639
+ salt: number[],
1640
+ iterations: number,
1641
+ keylen: number,
1642
+ digest = 'sha512'
1643
+ ): number[] {
1473
1644
  if (digest !== 'sha512') {
1474
1645
  throw new Error('Only sha512 is supported in this PBKDF2 implementation')
1475
1646
  }
@@ -1481,10 +1652,10 @@ export function pbkdf2 (password: number[], salt: number[], iterations: number,
1481
1652
  const l = Math.ceil(keylen / hLen)
1482
1653
 
1483
1654
  for (let i = 1; i <= l; i++) {
1484
- block1[salt.length] = (i >> 24) & 0xFF // MSB
1485
- block1[salt.length + 1] = (i >> 16) & 0xFF
1486
- block1[salt.length + 2] = (i >> 8) & 0xFF
1487
- block1[salt.length + 3] = i & 0xFF // LSB
1655
+ block1[salt.length] = (i >> 24) & 0xff // MSB
1656
+ block1[salt.length + 1] = (i >> 16) & 0xff
1657
+ block1[salt.length + 2] = (i >> 8) & 0xff
1658
+ block1[salt.length + 3] = i & 0xff // LSB
1488
1659
 
1489
1660
  const T = sha512hmac(password, block1)
1490
1661
  let U = T