@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.
- package/dist/cjs/package.json +15 -3
- package/dist/cjs/src/auth/Peer.js +83 -57
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/auth/SessionManager.js +14 -9
- package/dist/cjs/src/auth/SessionManager.js.map +1 -1
- package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
- package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/cjs/src/auth/utils/createNonce.js +2 -1
- package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
- package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
- package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
- package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/cjs/src/compat/BSM.js +7 -17
- package/dist/cjs/src/compat/BSM.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +172 -133
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +63 -73
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +102 -106
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/compat/Utxo.js +2 -2
- package/dist/cjs/src/compat/Utxo.js.map +1 -1
- package/dist/cjs/src/compat/index.js +7 -17
- package/dist/cjs/src/compat/index.js.map +1 -1
- package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
- package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/cjs/src/messages/SignedMessage.js +1 -0
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
- package/dist/cjs/src/messages/index.js +7 -17
- package/dist/cjs/src/messages/index.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +6 -5
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/BasePoint.js +1 -1
- package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +50 -62
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/Curve.js +46 -22
- package/dist/cjs/src/primitives/Curve.js.map +1 -1
- package/dist/cjs/src/primitives/DRBG.js +2 -8
- package/dist/cjs/src/primitives/DRBG.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +51 -35
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/Hash.js +191 -216
- package/dist/cjs/src/primitives/Hash.js.map +1 -1
- package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
- package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/cjs/src/primitives/K256.js.map +1 -1
- package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
- package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/cjs/src/primitives/Point.js +117 -88
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/Polynomial.js +4 -2
- package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +32 -33
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js +6 -5
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/ReductionContext.js +1 -1
- package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
- package/dist/cjs/src/primitives/Schnorr.js +21 -15
- package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
- package/dist/cjs/src/primitives/Signature.js +8 -7
- package/dist/cjs/src/primitives/Signature.js.map +1 -1
- package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/index.js +7 -17
- package/dist/cjs/src/primitives/index.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +79 -68
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/script/OP.js +3 -3
- package/dist/cjs/src/script/OP.js.map +1 -1
- package/dist/cjs/src/script/Script.js +12 -10
- package/dist/cjs/src/script/Script.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +47 -49
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/templates/P2PKH.js +24 -12
- package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +28 -23
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
- package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/totp/totp.js +2 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +177 -154
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js +24 -24
- package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +26 -18
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/Broadcaster.js +3 -2
- package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +64 -37
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +111 -137
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
- package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/index.js.map +1 -1
- package/dist/cjs/src/transaction/index.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
- package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
- package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
- package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/cjs/src/wallet/WalletClient.js +7 -2
- package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
- package/dist/cjs/src/wallet/WalletError.js +2 -2
- package/dist/cjs/src/wallet/WalletError.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +15 -15
- package/dist/esm/src/auth/Peer.js +75 -54
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/auth/SessionManager.js +14 -9
- package/dist/esm/src/auth/SessionManager.js.map +1 -1
- package/dist/esm/src/auth/certificates/Certificate.js +15 -11
- package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
- package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
- package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/esm/src/compat/BSM.js.map +1 -1
- package/dist/esm/src/compat/ECIES.js +165 -116
- package/dist/esm/src/compat/ECIES.js.map +1 -1
- package/dist/esm/src/compat/HD.js +56 -56
- package/dist/esm/src/compat/HD.js.map +1 -1
- package/dist/esm/src/compat/Mnemonic.js +95 -89
- package/dist/esm/src/compat/Mnemonic.js.map +1 -1
- package/dist/esm/src/compat/Utxo.js +1 -1
- package/dist/esm/src/compat/Utxo.js.map +1 -1
- package/dist/esm/src/messages/EncryptedMessage.js +3 -1
- package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/esm/src/messages/SignedMessage.js +1 -0
- package/dist/esm/src/messages/SignedMessage.js.map +1 -1
- package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +1 -0
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BasePoint.js +1 -1
- package/dist/esm/src/primitives/BasePoint.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +50 -62
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/Curve.js +45 -22
- package/dist/esm/src/primitives/Curve.js.map +1 -1
- package/dist/esm/src/primitives/DRBG.js +2 -8
- package/dist/esm/src/primitives/DRBG.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +50 -35
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/Hash.js +188 -213
- package/dist/esm/src/primitives/Hash.js.map +1 -1
- package/dist/esm/src/primitives/JacobianPoint.js +18 -5
- package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/esm/src/primitives/K256.js.map +1 -1
- package/dist/esm/src/primitives/Mersenne.js.map +1 -1
- package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/esm/src/primitives/Point.js +107 -88
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/Polynomial.js +4 -2
- package/dist/esm/src/primitives/Polynomial.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +25 -16
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js +7 -6
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/ReductionContext.js +1 -1
- package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
- package/dist/esm/src/primitives/Schnorr.js +21 -15
- package/dist/esm/src/primitives/Schnorr.js.map +1 -1
- package/dist/esm/src/primitives/Signature.js +8 -7
- package/dist/esm/src/primitives/Signature.js.map +1 -1
- package/dist/esm/src/primitives/SymmetricKey.js +13 -13
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/esm/src/primitives/TransactionSignature.js +22 -12
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +76 -66
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/script/OP.js +3 -3
- package/dist/esm/src/script/OP.js.map +1 -1
- package/dist/esm/src/script/Script.js +12 -10
- package/dist/esm/src/script/Script.js.map +1 -1
- package/dist/esm/src/script/Spend.js +39 -32
- package/dist/esm/src/script/Spend.js.map +1 -1
- package/dist/esm/src/script/templates/P2PKH.js +26 -11
- package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
- package/dist/esm/src/script/templates/PushDrop.js +29 -22
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
- package/dist/esm/src/script/templates/RPuzzle.js +11 -6
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/totp/totp.js +2 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +176 -154
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js +24 -24
- package/dist/esm/src/transaction/BeefParty.js.map +1 -1
- package/dist/esm/src/transaction/BeefTx.js +26 -18
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
- package/dist/esm/src/transaction/MerklePath.js +61 -36
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +105 -138
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
- package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
- package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/index.js.map +1 -1
- package/dist/esm/src/transaction/index.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
- package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/KeyDeriver.js +60 -52
- package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js +75 -29
- package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/esm/src/wallet/WalletClient.js +7 -2
- package/dist/esm/src/wallet/WalletClient.js.map +1 -1
- package/dist/esm/src/wallet/WalletError.js +2 -2
- package/dist/esm/src/wallet/WalletError.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/src/wallet/substrates/XDM.js +8 -3
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +15 -15
- package/dist/types/src/auth/Peer.d.ts +10 -10
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/SessionManager.d.ts +4 -4
- package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
- package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
- package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
- package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
- package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
- package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
- package/dist/types/src/compat/BSM.d.ts +1 -1
- package/dist/types/src/compat/BSM.d.ts.map +1 -1
- package/dist/types/src/compat/ECIES.d.ts +36 -36
- package/dist/types/src/compat/ECIES.d.ts.map +1 -1
- package/dist/types/src/compat/HD.d.ts +51 -51
- package/dist/types/src/compat/HD.d.ts.map +1 -1
- package/dist/types/src/compat/Mnemonic.d.ts +79 -79
- package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
- package/dist/types/src/compat/Utxo.d.ts.map +1 -1
- package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
- package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
- package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
- package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
- package/dist/types/src/primitives/BasePoint.d.ts +8 -8
- package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/Curve.d.ts +14 -7
- package/dist/types/src/primitives/Curve.d.ts.map +1 -1
- package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/Hash.d.ts +11 -11
- package/dist/types/src/primitives/Hash.d.ts.map +1 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts +14 -10
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
- package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
- package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
- package/dist/types/src/primitives/Random.d.ts.map +1 -1
- package/dist/types/src/primitives/Schnorr.d.ts +14 -14
- package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
- package/dist/types/src/primitives/Signature.d.ts +1 -1
- package/dist/types/src/primitives/Signature.d.ts.map +1 -1
- package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
- package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
- package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
- package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
- package/dist/types/src/primitives/utils.d.ts +3 -6
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/script/Script.d.ts +3 -3
- package/dist/types/src/script/Script.d.ts.map +1 -1
- package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
- package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
- package/dist/types/src/script/Spend.d.ts.map +1 -1
- package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
- package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
- package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
- package/dist/types/src/totp/totp.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +96 -96
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefParty.d.ts +22 -22
- package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +5 -5
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
- package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
- package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +4 -12
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
- package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
- package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
- package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/index.d.ts.map +1 -1
- package/dist/types/src/transaction/index.d.ts.map +1 -1
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
- package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
- package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/src/wallet/WalletClient.d.ts +5 -5
- package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
- package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
- package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/auth.md +92 -82
- package/docs/compat.md +24 -24
- package/docs/messages.md +7 -5
- package/docs/overlay-tools.md +21 -21
- package/docs/primitives.md +336 -315
- package/docs/script.md +35 -35
- package/docs/swagger/dist/swagger-initializer.js +7 -7
- package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
- package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
- package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
- package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
- package/docs/swagger/dist/swagger-ui.js +2 -2
- package/docs/totp.md +5 -5
- package/docs/transaction.md +103 -105
- package/docs/wallet-substrates.md +17 -17
- package/docs/wallet.md +202 -204
- package/mod.ts +15 -15
- package/package.json +15 -3
- package/src/auth/Peer.ts +271 -121
- package/src/auth/SessionManager.ts +17 -10
- package/src/auth/__tests/Peer.test.ts +361 -179
- package/src/auth/__tests/SessionManager.test.ts +67 -19
- package/src/auth/__tests/build.test.ts +11 -0
- package/src/auth/certificates/Certificate.ts +27 -14
- package/src/auth/certificates/MasterCertificate.ts +106 -62
- package/src/auth/certificates/VerifiableCertificate.ts +30 -8
- package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
- package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
- package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
- package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
- package/src/auth/certificates/index.ts +1 -1
- package/src/auth/clients/AuthFetch.ts +1 -0
- package/src/auth/clients/index.ts +1 -1
- package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
- package/src/auth/transports/index.ts +1 -1
- package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
- package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
- package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
- package/src/auth/utils/createNonce.ts +11 -3
- package/src/auth/utils/getVerifiableCertificates.ts +12 -7
- package/src/auth/utils/validateCertificates.ts +57 -39
- package/src/auth/utils/verifyNonce.ts +6 -2
- package/src/compat/BSM.ts +10 -2
- package/src/compat/ECIES.ts +265 -141
- package/src/compat/HD.ts +81 -63
- package/src/compat/Mnemonic.ts +104 -91
- package/src/compat/Utxo.ts +8 -5
- package/src/compat/__tests/BSM.test.ts +42 -16
- package/src/compat/__tests/ECIES.test.ts +117 -52
- package/src/compat/__tests/HD.test.ts +55 -42
- package/src/compat/__tests/Mnemonic.test.ts +11 -12
- package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
- package/src/messages/EncryptedMessage.ts +6 -2
- package/src/messages/SignedMessage.ts +14 -8
- package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
- package/src/messages/__tests/SignedMessage.test.ts +17 -11
- package/src/overlay-tools/LookupResolver.ts +108 -56
- package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
- package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
- package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
- package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
- package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
- package/src/primitives/AESGCM.ts +2 -0
- package/src/primitives/BasePoint.ts +4 -4
- package/src/primitives/BigNumber.ts +99 -90
- package/src/primitives/Curve.ts +117 -46
- package/src/primitives/DRBG.ts +9 -11
- package/src/primitives/ECDSA.ts +109 -63
- package/src/primitives/Hash.ts +492 -321
- package/src/primitives/JacobianPoint.ts +67 -19
- package/src/primitives/Point.ts +254 -152
- package/src/primitives/Polynomial.ts +8 -3
- package/src/primitives/PrivateKey.ts +41 -17
- package/src/primitives/PublicKey.ts +13 -3
- package/src/primitives/Random.ts +14 -8
- package/src/primitives/ReductionContext.ts +1 -1
- package/src/primitives/Schnorr.ts +40 -18
- package/src/primitives/Signature.ts +26 -16
- package/src/primitives/SymmetricKey.ts +14 -14
- package/src/primitives/TransactionSignature.ts +41 -17
- package/src/primitives/__tests/AESGCM.test.ts +457 -151
- package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
- package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
- package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
- package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
- package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
- package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
- package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
- package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
- package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
- package/src/primitives/__tests/Curve.unit.test.ts +75 -53
- package/src/primitives/__tests/DRBG.test.ts +1 -1
- package/src/primitives/__tests/DRBG.vectors.ts +45 -75
- package/src/primitives/__tests/ECDH.test.ts +15 -8
- package/src/primitives/__tests/ECDSA.test.ts +12 -6
- package/src/primitives/__tests/HMAC.test.ts +24 -18
- package/src/primitives/__tests/Hash.test.ts +57 -46
- package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
- package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
- package/src/primitives/__tests/PrivateKey.test.ts +11 -10
- package/src/primitives/__tests/PublicKey.test.ts +64 -53
- package/src/primitives/__tests/Random.test.ts +1 -1
- package/src/primitives/__tests/Reader.test.ts +240 -219
- package/src/primitives/__tests/ReductionContext.test.ts +98 -61
- package/src/primitives/__tests/Schnorr.test.ts +249 -237
- package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
- package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
- package/src/primitives/__tests/Writer.test.ts +23 -13
- package/src/primitives/__tests/bug-31.test.ts +6 -10
- package/src/primitives/__tests/utils.test.ts +70 -19
- package/src/primitives/utils.ts +103 -79
- package/src/script/Script.ts +18 -12
- package/src/script/ScriptTemplate.ts +3 -5
- package/src/script/Spend.ts +306 -108
- package/src/script/__tests/Script.test.ts +73 -55
- package/src/script/__tests/Spend.test.ts +208 -83
- package/src/script/__tests/SpendComplex.test.ts +19 -13
- package/src/script/__tests/script.invalid.vectors.ts +428 -1796
- package/src/script/__tests/script.valid.vectors.ts +728 -2764
- package/src/script/templates/P2PKH.ts +34 -12
- package/src/script/templates/PushDrop.ts +65 -31
- package/src/script/templates/RPuzzle.ts +29 -8
- package/src/script/templates/__tests/PushDrop.test.ts +146 -41
- package/src/totp/__tests/totp.test.ts +45 -44
- package/src/totp/totp.ts +3 -2
- package/src/transaction/Beef.ts +269 -174
- package/src/transaction/BeefParty.ts +41 -31
- package/src/transaction/BeefTx.ts +36 -26
- package/src/transaction/Broadcaster.ts +10 -6
- package/src/transaction/ChainTracker.ts +2 -2
- package/src/transaction/FeeModel.ts +0 -1
- package/src/transaction/MerklePath.ts +124 -59
- package/src/transaction/Transaction.ts +188 -187
- package/src/transaction/TransactionOutput.ts +0 -1
- package/src/transaction/__tests/Beef.test.ts +390 -287
- package/src/transaction/__tests/MerklePath.test.ts +59 -26
- package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
- package/src/transaction/__tests/Transaction.test.ts +758 -482
- package/src/transaction/__tests/bigtx.vectors.ts +2 -1
- package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
- package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
- package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
- package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
- package/src/transaction/broadcasters/ARC.ts +69 -38
- package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
- package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
- package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
- package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
- package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
- package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
- package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
- package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
- package/src/transaction/http/DefaultHttpClient.ts +5 -4
- package/src/transaction/http/FetchHttpClient.ts +18 -9
- package/src/transaction/http/HttpClient.ts +27 -22
- package/src/transaction/http/NodejsHttpClient.ts +23 -9
- package/src/transaction/http/index.ts +5 -1
- package/src/transaction/index.ts +5 -1
- package/src/wallet/CachedKeyDeriver.ts +151 -82
- package/src/wallet/KeyDeriver.ts +186 -105
- package/src/wallet/ProtoWallet.ts +121 -52
- package/src/wallet/Wallet.interfaces.ts +167 -156
- package/src/wallet/WalletClient.ts +314 -59
- package/src/wallet/WalletError.ts +2 -2
- package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
- package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
- package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
- package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
- package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
- package/src/wallet/substrates/WalletWireCalls.ts +2 -2
- package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
- package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
- package/src/wallet/substrates/XDM.ts +425 -36
- package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
- package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
- package/src/wallet/substrates/window.CWI.ts +520 -61
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import BigNumber from '
|
|
2
|
-
import { Reader, Writer, encode } from '
|
|
1
|
+
import BigNumber from '../../primitives/BigNumber'
|
|
2
|
+
import { Reader, Writer, encode } from '../../primitives/utils'
|
|
3
3
|
|
|
4
4
|
describe('Writer', () => {
|
|
5
5
|
it('should create a new buffer writer', () => {
|
|
@@ -8,10 +8,10 @@ describe('Writer', () => {
|
|
|
8
8
|
})
|
|
9
9
|
|
|
10
10
|
describe('#getLength', () => {
|
|
11
|
-
it('should compute length correctly of two 2
|
|
11
|
+
it('should compute length correctly of two 2-byte buffers', () => {
|
|
12
12
|
const buf1 = Buffer.from('0000', 'hex')
|
|
13
13
|
const buf2 = Buffer.from('0000', 'hex')
|
|
14
|
-
const bw = new Writer().write(buf1).write(buf2)
|
|
14
|
+
const bw = new Writer().write([...buf1]).write([...buf2])
|
|
15
15
|
expect(bw.getLength()).toEqual(4)
|
|
16
16
|
})
|
|
17
17
|
})
|
|
@@ -54,9 +54,7 @@ describe('Writer', () => {
|
|
|
54
54
|
it('should write 1', () => {
|
|
55
55
|
const bw = new Writer()
|
|
56
56
|
expect(encode(bw.writeInt8(1).toArray(), 'hex')).toEqual('01')
|
|
57
|
-
expect(
|
|
58
|
-
encode(new Writer().writeInt8(-1).toArray(), 'hex')
|
|
59
|
-
).toEqual('ff')
|
|
57
|
+
expect(encode(new Writer().writeInt8(-1).toArray(), 'hex')).toEqual('ff')
|
|
60
58
|
})
|
|
61
59
|
})
|
|
62
60
|
|
|
@@ -71,7 +69,9 @@ describe('Writer', () => {
|
|
|
71
69
|
it('should write 1', () => {
|
|
72
70
|
const bw = new Writer()
|
|
73
71
|
expect(encode(bw.writeInt16BE(1).toArray(), 'hex')).toEqual('0001')
|
|
74
|
-
expect(encode(new Writer().writeInt16BE(-1).toArray(), 'hex')).toEqual(
|
|
72
|
+
expect(encode(new Writer().writeInt16BE(-1).toArray(), 'hex')).toEqual(
|
|
73
|
+
'ffff'
|
|
74
|
+
)
|
|
75
75
|
})
|
|
76
76
|
})
|
|
77
77
|
|
|
@@ -86,7 +86,9 @@ describe('Writer', () => {
|
|
|
86
86
|
it('should write 1', () => {
|
|
87
87
|
const bw = new Writer()
|
|
88
88
|
expect(encode(bw.writeInt16LE(1).toArray(), 'hex')).toEqual('0100')
|
|
89
|
-
expect(encode(new Writer().writeInt16LE(-1).toArray(), 'hex')).toEqual(
|
|
89
|
+
expect(encode(new Writer().writeInt16LE(-1).toArray(), 'hex')).toEqual(
|
|
90
|
+
'ffff'
|
|
91
|
+
)
|
|
90
92
|
})
|
|
91
93
|
})
|
|
92
94
|
|
|
@@ -101,7 +103,9 @@ describe('Writer', () => {
|
|
|
101
103
|
it('should write 1', () => {
|
|
102
104
|
const bw = new Writer()
|
|
103
105
|
expect(encode(bw.writeInt32BE(1).toArray(), 'hex')).toEqual('00000001')
|
|
104
|
-
expect(encode(new Writer().writeInt32BE(-1).toArray(), 'hex')).toEqual(
|
|
106
|
+
expect(encode(new Writer().writeInt32BE(-1).toArray(), 'hex')).toEqual(
|
|
107
|
+
'ffffffff'
|
|
108
|
+
)
|
|
105
109
|
})
|
|
106
110
|
})
|
|
107
111
|
|
|
@@ -116,21 +120,27 @@ describe('Writer', () => {
|
|
|
116
120
|
it('should write 1', () => {
|
|
117
121
|
const bw = new Writer()
|
|
118
122
|
expect(encode(bw.writeInt32LE(1).toArray(), 'hex')).toEqual('01000000')
|
|
119
|
-
expect(encode(new Writer().writeInt32LE(-1).toArray(), 'hex')).toEqual(
|
|
123
|
+
expect(encode(new Writer().writeInt32LE(-1).toArray(), 'hex')).toEqual(
|
|
124
|
+
'ffffffff'
|
|
125
|
+
)
|
|
120
126
|
})
|
|
121
127
|
})
|
|
122
128
|
|
|
123
129
|
describe('#writeUInt64BEBn', () => {
|
|
124
130
|
it('should write 1', () => {
|
|
125
131
|
const bw = new Writer()
|
|
126
|
-
expect(
|
|
132
|
+
expect(
|
|
133
|
+
encode(bw.writeUInt64BEBn(new BigNumber(1)).toArray(), 'hex')
|
|
134
|
+
).toEqual('0000000000000001')
|
|
127
135
|
})
|
|
128
136
|
})
|
|
129
137
|
|
|
130
138
|
describe('#writeUInt64LEBn', () => {
|
|
131
139
|
it('should write 1', () => {
|
|
132
140
|
const bw = new Writer()
|
|
133
|
-
expect(
|
|
141
|
+
expect(
|
|
142
|
+
encode(bw.writeUInt64LEBn(new BigNumber(1)).toArray(), 'hex')
|
|
143
|
+
).toEqual('0100000000000000')
|
|
134
144
|
})
|
|
135
145
|
})
|
|
136
146
|
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import PrivateKey from '../../../dist/cjs/src/primitives/PrivateKey'
|
|
5
|
-
import Curve from '../../../dist/cjs/src/primitives/Curve'
|
|
6
|
-
import BigNumber from '../../../dist/cjs/src/primitives/BigNumber'
|
|
1
|
+
import PrivateKey from '../../primitives/PrivateKey'
|
|
2
|
+
import Curve from '../../primitives/Curve'
|
|
3
|
+
import BigNumber from '../../primitives/BigNumber'
|
|
7
4
|
|
|
8
5
|
describe('bug-31 tests', () => {
|
|
9
6
|
test('0', () => {
|
|
10
7
|
const c = new Curve()
|
|
11
|
-
const G = c.g
|
|
12
8
|
// const bn = new BigNumber(c.n + 12)
|
|
13
9
|
const bn = c.n.addn(12)
|
|
14
10
|
const sn = new BigNumber(12)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
expect(() => new PrivateKey(bn.toHex(), 'hex', 'be', 'error')).toThrow(
|
|
12
|
+
'Input is out of field'
|
|
13
|
+
)
|
|
18
14
|
const o = PrivateKey.fromString(bn.toHex(), 'hex')
|
|
19
15
|
const os = PrivateKey.fromString(sn.toHex(), 'hex')
|
|
20
16
|
expect(o.cmp(os)).toBe(0)
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
/* eslint-env jest */
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
toArray,
|
|
4
|
+
zero2,
|
|
5
|
+
toHex,
|
|
6
|
+
encode,
|
|
7
|
+
fromBase58,
|
|
8
|
+
toBase58,
|
|
9
|
+
fromBase58Check,
|
|
10
|
+
toBase58Check
|
|
11
|
+
} from '../../primitives/utils'
|
|
3
12
|
|
|
4
13
|
describe('utils', () => {
|
|
5
14
|
it('should convert to array', () => {
|
|
@@ -26,26 +35,40 @@ describe('utils', () => {
|
|
|
26
35
|
|
|
27
36
|
describe('base58 to binary', () => {
|
|
28
37
|
it('Converts as expected', () => {
|
|
29
|
-
const actual = fromBase58(
|
|
30
|
-
|
|
38
|
+
const actual = fromBase58(
|
|
39
|
+
'6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV'
|
|
40
|
+
)
|
|
41
|
+
expect(toHex(actual)).toEqual(
|
|
42
|
+
'02c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cfeb05f9d2'
|
|
43
|
+
)
|
|
31
44
|
})
|
|
32
45
|
it('Converts as expected with leading 1s', () => {
|
|
33
46
|
const actual = fromBase58('111z')
|
|
34
47
|
expect(toHex(actual)).toEqual('00000039')
|
|
35
48
|
})
|
|
36
49
|
it('Throws when called with undefined base58 string', () => {
|
|
37
|
-
expect(() => fromBase58(
|
|
50
|
+
expect(() => fromBase58(undefined as unknown as string)).toThrow(
|
|
51
|
+
new Error('Expected base58 string but got “undefined”')
|
|
52
|
+
)
|
|
38
53
|
})
|
|
54
|
+
|
|
39
55
|
it('Throws when called with invalid characters in base58 string', () => {
|
|
40
|
-
expect(() => fromBase58('0L')).toThrow(
|
|
56
|
+
expect(() => fromBase58('0L')).toThrow(
|
|
57
|
+
new Error('Invalid base58 character “0”')
|
|
58
|
+
)
|
|
41
59
|
})
|
|
42
60
|
})
|
|
43
61
|
describe('binary to base58 string', () => {
|
|
44
62
|
it('Converts to base58 as expected', () => {
|
|
45
63
|
const actual = toBase58(
|
|
46
|
-
toArray(
|
|
64
|
+
toArray(
|
|
65
|
+
'02c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cfeb05f9d2',
|
|
66
|
+
'hex'
|
|
67
|
+
)
|
|
68
|
+
)
|
|
69
|
+
expect(actual).toEqual(
|
|
70
|
+
'6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV'
|
|
47
71
|
)
|
|
48
|
-
expect(actual).toEqual('6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV')
|
|
49
72
|
})
|
|
50
73
|
it('Converts to base58 as expected with 1s', () => {
|
|
51
74
|
const actual = toBase58([0, 0, 0, 4])
|
|
@@ -67,31 +90,53 @@ describe('utils', () => {
|
|
|
67
90
|
|
|
68
91
|
it('should correctly encode and decode data with custom prefix', () => {
|
|
69
92
|
const prefix = [0x80]
|
|
70
|
-
let data = toArray(
|
|
93
|
+
let data = toArray(
|
|
94
|
+
'1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD',
|
|
95
|
+
'hex'
|
|
96
|
+
)
|
|
71
97
|
let encoded = toBase58Check(data, prefix)
|
|
72
|
-
expect(encoded).toBe(
|
|
98
|
+
expect(encoded).toBe(
|
|
99
|
+
'5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn'
|
|
100
|
+
)
|
|
73
101
|
expect(fromBase58Check(encoded)).toEqual({ prefix, data })
|
|
74
102
|
|
|
75
|
-
data = toArray(
|
|
103
|
+
data = toArray(
|
|
104
|
+
'3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13e41daa6',
|
|
105
|
+
'hex'
|
|
106
|
+
)
|
|
76
107
|
encoded = toBase58Check(data, prefix)
|
|
77
|
-
expect(encoded).toBe(
|
|
108
|
+
expect(encoded).toBe(
|
|
109
|
+
'5JG9hT3beGTJuUAmCQEmNaxAuMacCTfXuw1R3FCXig23RQHMr4K'
|
|
110
|
+
)
|
|
78
111
|
expect(fromBase58Check(encoded)).toEqual({ prefix, data })
|
|
79
112
|
})
|
|
80
113
|
|
|
81
114
|
it('should correctly handle encoding and decoding with different encoding formats', () => {
|
|
82
115
|
const prefix = [0x80]
|
|
83
|
-
let dataHex =
|
|
116
|
+
let dataHex =
|
|
117
|
+
'1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD01'
|
|
84
118
|
dataHex = dataHex.toLowerCase()
|
|
85
119
|
let data = toArray(dataHex, 'hex')
|
|
86
120
|
let encoded = toBase58Check(data, prefix)
|
|
87
|
-
expect(encoded).toBe(
|
|
88
|
-
|
|
121
|
+
expect(encoded).toBe(
|
|
122
|
+
'KxFC1jmwwCoACiCAWZ3eXa96mBM6tb3TYzGmf6YwgdGWZgawvrtJ'
|
|
123
|
+
)
|
|
124
|
+
expect(fromBase58Check(encoded, 'hex')).toEqual({
|
|
125
|
+
prefix: '80',
|
|
126
|
+
data: dataHex
|
|
127
|
+
})
|
|
89
128
|
|
|
90
|
-
dataHex =
|
|
129
|
+
dataHex =
|
|
130
|
+
'3aba4162c7251c891207b747840551a71939b0de081f85c4e44cf7c13e41daa601'
|
|
91
131
|
data = toArray(dataHex, 'hex')
|
|
92
132
|
encoded = toBase58Check(data, prefix)
|
|
93
|
-
expect(encoded).toBe(
|
|
94
|
-
|
|
133
|
+
expect(encoded).toBe(
|
|
134
|
+
'KyBsPXxTuVD82av65KZkrGrWi5qLMah5SdNq6uftawDbgKa2wv6S'
|
|
135
|
+
)
|
|
136
|
+
expect(fromBase58Check(encoded, 'hex')).toEqual({
|
|
137
|
+
prefix: '80',
|
|
138
|
+
data: dataHex
|
|
139
|
+
})
|
|
95
140
|
})
|
|
96
141
|
|
|
97
142
|
it('should correctly encode and decode Bitcoin addresses', () => {
|
|
@@ -99,10 +144,16 @@ describe('utils', () => {
|
|
|
99
144
|
const data = toArray(dataHex, 'hex')
|
|
100
145
|
const encoded = toBase58Check(data)
|
|
101
146
|
expect(encoded).toBe('1mayif3H2JDC62S4N3rLNtBNRAiUUP99k')
|
|
102
|
-
expect(fromBase58Check(encoded, 'hex')).toEqual({
|
|
147
|
+
expect(fromBase58Check(encoded, 'hex')).toEqual({
|
|
148
|
+
prefix: '00',
|
|
149
|
+
data: dataHex
|
|
150
|
+
})
|
|
103
151
|
|
|
104
152
|
const address = '1mayif3H2JDC62S4N3rLNtBNRAiUUP99k'
|
|
105
|
-
expect(fromBase58Check(address, 'hex')).toEqual({
|
|
153
|
+
expect(fromBase58Check(address, 'hex')).toEqual({
|
|
154
|
+
prefix: '00',
|
|
155
|
+
data: dataHex
|
|
156
|
+
})
|
|
106
157
|
})
|
|
107
158
|
})
|
|
108
159
|
})
|
package/src/primitives/utils.ts
CHANGED
|
@@ -37,7 +37,7 @@ export const toHex = (msg: number[]): string => {
|
|
|
37
37
|
*/
|
|
38
38
|
export const toArray = (msg: any, enc?: 'hex' | 'utf8' | 'base64'): any[] => {
|
|
39
39
|
if (Array.isArray(msg)) return msg.slice()
|
|
40
|
-
if (
|
|
40
|
+
if (msg === undefined) return []
|
|
41
41
|
|
|
42
42
|
if (typeof msg !== 'string') {
|
|
43
43
|
return Array.from(msg, (item: any) => item | 0)
|
|
@@ -54,7 +54,7 @@ export const toArray = (msg: any, enc?: 'hex' | 'utf8' | 'base64'): any[] => {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
const hexToArray = (msg: string): number[] => {
|
|
57
|
-
msg = msg.replace(/[^a-z0-9]+/
|
|
57
|
+
msg = msg.replace(/[^a-z0-9]+/gi, '')
|
|
58
58
|
if (msg.length % 2 !== 0) msg = '0' + msg
|
|
59
59
|
const res: number[] = []
|
|
60
60
|
for (let i = 0; i < msg.length; i += 2) {
|
|
@@ -64,7 +64,8 @@ const hexToArray = (msg: string): number[] => {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
const base64ToArray = (msg: string): number[] => {
|
|
67
|
-
const base64Chars =
|
|
67
|
+
const base64Chars =
|
|
68
|
+
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
|
68
69
|
const result: number[] = []
|
|
69
70
|
let currentBit = 0
|
|
70
71
|
let currentByte = 0
|
|
@@ -75,7 +76,7 @@ const base64ToArray = (msg: string): number[] => {
|
|
|
75
76
|
|
|
76
77
|
if (currentByte >= 8) {
|
|
77
78
|
currentByte -= 8
|
|
78
|
-
result.push((currentBit >> currentByte) &
|
|
79
|
+
result.push((currentBit >> currentByte) & 0xff)
|
|
79
80
|
currentBit &= (1 << currentByte) - 1
|
|
80
81
|
}
|
|
81
82
|
}
|
|
@@ -89,7 +90,7 @@ const utf8ToArray = (msg: string): number[] => {
|
|
|
89
90
|
const c = msg.charCodeAt(i)
|
|
90
91
|
const hi = c >> 8
|
|
91
92
|
const lo = c & 0xff
|
|
92
|
-
if (hi) {
|
|
93
|
+
if (hi !== 0) {
|
|
93
94
|
res.push(hi, lo)
|
|
94
95
|
} else {
|
|
95
96
|
res.push(lo)
|
|
@@ -118,35 +119,37 @@ export const toUTF8 = (arr: number[]): string => {
|
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
// 1-byte sequence (0xxxxxxx)
|
|
121
|
-
if (byte <=
|
|
122
|
+
if (byte <= 0x7f) {
|
|
122
123
|
result += String.fromCharCode(byte)
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
else if (byte >= 0xC0 && byte <= 0xDF) {
|
|
124
|
+
} else if (byte >= 0xc0 && byte <= 0xdf) {
|
|
125
|
+
// 2-byte sequence (110xxxxx 10xxxxxx)
|
|
126
126
|
const byte2 = arr[i + 1]
|
|
127
127
|
skip = 1
|
|
128
|
-
const codePoint = ((byte &
|
|
128
|
+
const codePoint = ((byte & 0x1f) << 6) | (byte2 & 0x3f)
|
|
129
129
|
result += String.fromCharCode(codePoint)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
else if (byte >= 0xE0 && byte <= 0xEF) {
|
|
130
|
+
} else if (byte >= 0xe0 && byte <= 0xef) {
|
|
131
|
+
// 3-byte sequence (1110xxxx 10xxxxxx 10xxxxxx)
|
|
133
132
|
const byte2 = arr[i + 1]
|
|
134
133
|
const byte3 = arr[i + 2]
|
|
135
134
|
skip = 2
|
|
136
|
-
const codePoint =
|
|
135
|
+
const codePoint =
|
|
136
|
+
((byte & 0x0f) << 12) | ((byte2 & 0x3f) << 6) | (byte3 & 0x3f)
|
|
137
137
|
result += String.fromCharCode(codePoint)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
else if (byte >= 0xF0 && byte <= 0xF7) {
|
|
138
|
+
} else if (byte >= 0xf0 && byte <= 0xf7) {
|
|
139
|
+
// 4-byte sequence (11110xxx 10xxxxxx 10xxxxxx 10xxxxxx)
|
|
141
140
|
const byte2 = arr[i + 1]
|
|
142
141
|
const byte3 = arr[i + 2]
|
|
143
142
|
const byte4 = arr[i + 3]
|
|
144
143
|
skip = 3
|
|
145
|
-
const codePoint =
|
|
144
|
+
const codePoint =
|
|
145
|
+
((byte & 0x07) << 18) |
|
|
146
|
+
((byte2 & 0x3f) << 12) |
|
|
147
|
+
((byte3 & 0x3f) << 6) |
|
|
148
|
+
(byte4 & 0x3f)
|
|
146
149
|
|
|
147
150
|
// Convert to UTF-16 surrogate pair
|
|
148
|
-
const surrogate1 =
|
|
149
|
-
const surrogate2 =
|
|
151
|
+
const surrogate1 = 0xd800 + ((codePoint - 0x10000) >> 10)
|
|
152
|
+
const surrogate2 = 0xdc00 + ((codePoint - 0x10000) & 0x3ff)
|
|
150
153
|
result += String.fromCharCode(surrogate1, surrogate2)
|
|
151
154
|
}
|
|
152
155
|
}
|
|
@@ -160,7 +163,10 @@ export const toUTF8 = (arr: number[]): string => {
|
|
|
160
163
|
* @param {('hex' | 'utf8')} enc - The desired encoding.
|
|
161
164
|
* @returns {string | number[]} - The encoded message as a string (for 'hex' and 'utf8') or the original array.
|
|
162
165
|
*/
|
|
163
|
-
export const encode = (
|
|
166
|
+
export const encode = (
|
|
167
|
+
arr: number[],
|
|
168
|
+
enc?: 'hex' | 'utf8'
|
|
169
|
+
): string | number[] => {
|
|
164
170
|
switch (enc) {
|
|
165
171
|
case 'hex':
|
|
166
172
|
return toHex(arr)
|
|
@@ -183,7 +189,8 @@ export const encode = (arr: number[], enc?: 'hex' | 'utf8'): string | number[] =
|
|
|
183
189
|
* console.log(toBase64(bytes)); // Outputs: SGVsbG8=
|
|
184
190
|
*/
|
|
185
191
|
export function toBase64 (byteArray: number[]): string {
|
|
186
|
-
const base64Chars =
|
|
192
|
+
const base64Chars =
|
|
193
|
+
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
|
187
194
|
let result = ''
|
|
188
195
|
let i: number
|
|
189
196
|
|
|
@@ -194,8 +201,8 @@ export function toBase64 (byteArray: number[]): string {
|
|
|
194
201
|
|
|
195
202
|
const encoded1 = byte1 >> 2
|
|
196
203
|
const encoded2 = ((byte1 & 0x03) << 4) | (byte2 >> 4)
|
|
197
|
-
const encoded3 = ((byte2 &
|
|
198
|
-
const encoded4 = byte3 &
|
|
204
|
+
const encoded3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6)
|
|
205
|
+
const encoded4 = byte3 & 0x3f
|
|
199
206
|
|
|
200
207
|
result += base64Chars.charAt(encoded1) + base64Chars.charAt(encoded2)
|
|
201
208
|
result += i + 1 < byteArray.length ? base64Chars.charAt(encoded3) : '='
|
|
@@ -205,7 +212,8 @@ export function toBase64 (byteArray: number[]): string {
|
|
|
205
212
|
return result
|
|
206
213
|
}
|
|
207
214
|
|
|
208
|
-
const base58chars =
|
|
215
|
+
const base58chars =
|
|
216
|
+
'123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
|
209
217
|
|
|
210
218
|
/**
|
|
211
219
|
* Converts a string from base58 to a binary array
|
|
@@ -213,21 +221,23 @@ const base58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
|
|
213
221
|
* @returns The binary representation
|
|
214
222
|
*/
|
|
215
223
|
export const fromBase58 = (str: string): number[] => {
|
|
216
|
-
if (
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
224
|
+
if (str === '' || typeof str !== 'string') {
|
|
225
|
+
throw new Error(`Expected base58 string but got “${str}”`)
|
|
226
|
+
}
|
|
227
|
+
const match: string[] | null = str.match(/[IOl0]/gmu)
|
|
228
|
+
|
|
229
|
+
if (match !== null) {
|
|
230
|
+
throw new Error(`Invalid base58 character “${match.join('')}”`)
|
|
221
231
|
}
|
|
222
232
|
const lz = str.match(/^1+/gmu)
|
|
223
|
-
const psz: number = lz ? lz[0].length : 0
|
|
224
|
-
const size =
|
|
225
|
-
((str.length - psz) * (Math.log(58) / Math.log(256)) + 1) >>> 0
|
|
233
|
+
const psz: number = (lz !== null) ? lz[0].length : 0
|
|
234
|
+
const size = ((str.length - psz) * (Math.log(58) / Math.log(256)) + 1) >>> 0
|
|
226
235
|
|
|
227
236
|
const uint8 = new Uint8Array([
|
|
228
237
|
...new Uint8Array(psz),
|
|
229
|
-
...
|
|
230
|
-
.match(/./gmu)
|
|
238
|
+
...(
|
|
239
|
+
str.match(/./gmu) ?? [] // ✅ Safe Fix: If null, use []
|
|
240
|
+
)
|
|
231
241
|
.map((i) => base58chars.indexOf(i))
|
|
232
242
|
.reduce((acc, i) => {
|
|
233
243
|
acc = acc.map((j) => {
|
|
@@ -256,9 +266,11 @@ export const fromBase58 = (str: string): number[] => {
|
|
|
256
266
|
*/
|
|
257
267
|
export const toBase58 = (bin: number[]): string => {
|
|
258
268
|
const base58Map = Array(256).fill(-1)
|
|
259
|
-
for (let i = 0; i < base58chars.length; ++i) {
|
|
269
|
+
for (let i = 0; i < base58chars.length; ++i) {
|
|
270
|
+
base58Map[base58chars.charCodeAt(i)] = i
|
|
271
|
+
}
|
|
260
272
|
|
|
261
|
-
const result = []
|
|
273
|
+
const result: number[] = []
|
|
262
274
|
|
|
263
275
|
for (const byte of bin) {
|
|
264
276
|
let carry = byte
|
|
@@ -267,14 +279,14 @@ export const toBase58 = (bin: number[]): string => {
|
|
|
267
279
|
result[j] = base58chars.charCodeAt(x % 58)
|
|
268
280
|
carry = (x / 58) | 0
|
|
269
281
|
}
|
|
270
|
-
while (carry) {
|
|
282
|
+
while (carry !== 0) {
|
|
271
283
|
result.push(base58chars.charCodeAt(carry % 58))
|
|
272
284
|
carry = (carry / 58) | 0
|
|
273
285
|
}
|
|
274
286
|
}
|
|
275
287
|
|
|
276
288
|
for (const byte of bin) {
|
|
277
|
-
if (byte) break
|
|
289
|
+
if (byte !== 0) break
|
|
278
290
|
else result.push('1'.charCodeAt(0))
|
|
279
291
|
}
|
|
280
292
|
|
|
@@ -288,7 +300,7 @@ export const toBase58 = (bin: number[]): string => {
|
|
|
288
300
|
* @param bin - The binary array to convert to base58check
|
|
289
301
|
* @returns The base58check string representation
|
|
290
302
|
*/
|
|
291
|
-
export const toBase58Check = (bin: number[], prefix: number[] = [0]) => {
|
|
303
|
+
export const toBase58Check = (bin: number[], prefix: number[] = [0]): string => {
|
|
292
304
|
let hash = hash256([...prefix, ...bin])
|
|
293
305
|
hash = [...prefix, ...bin, ...hash.slice(0, 4)]
|
|
294
306
|
return toBase58(hash)
|
|
@@ -301,7 +313,11 @@ export const toBase58Check = (bin: number[], prefix: number[] = [0]) => {
|
|
|
301
313
|
* @param prefixLength - The length of the prefix. Optional, defaults to 1.
|
|
302
314
|
* @returns The binary array representation
|
|
303
315
|
*/
|
|
304
|
-
export const fromBase58Check = (
|
|
316
|
+
export const fromBase58Check = (
|
|
317
|
+
str: string,
|
|
318
|
+
enc?: 'hex',
|
|
319
|
+
prefixLength: number = 1
|
|
320
|
+
): any => {
|
|
305
321
|
const bin = fromBase58(str)
|
|
306
322
|
let prefix: string | number[] = bin.slice(0, prefixLength)
|
|
307
323
|
let data: string | number[] = bin.slice(prefixLength, -4)
|
|
@@ -323,7 +339,7 @@ export class Writer {
|
|
|
323
339
|
public bufs: number[][]
|
|
324
340
|
|
|
325
341
|
constructor (bufs?: number[][]) {
|
|
326
|
-
this.bufs = bufs
|
|
342
|
+
this.bufs = bufs !== undefined ? bufs : []
|
|
327
343
|
}
|
|
328
344
|
|
|
329
345
|
getLength (): number {
|
|
@@ -369,41 +385,41 @@ export class Writer {
|
|
|
369
385
|
|
|
370
386
|
writeInt8 (n: number): this {
|
|
371
387
|
const buf = new Array(1)
|
|
372
|
-
buf[0] = n &
|
|
388
|
+
buf[0] = n & 0xff
|
|
373
389
|
this.write(buf)
|
|
374
390
|
return this
|
|
375
391
|
}
|
|
376
392
|
|
|
377
393
|
writeUInt16BE (n: number): this {
|
|
378
394
|
this.bufs.push([
|
|
379
|
-
(n >> 8) &
|
|
380
|
-
n &
|
|
395
|
+
(n >> 8) & 0xff, // shift right 8 bits to get the high byte
|
|
396
|
+
n & 0xff // low byte is just the last 8 bits
|
|
381
397
|
])
|
|
382
398
|
return this
|
|
383
399
|
}
|
|
384
400
|
|
|
385
401
|
writeInt16BE (n: number): this {
|
|
386
|
-
return this.writeUInt16BE(n &
|
|
402
|
+
return this.writeUInt16BE(n & 0xffff) // Mask with 0xFFFF to get the lower 16 bits
|
|
387
403
|
}
|
|
388
404
|
|
|
389
405
|
writeUInt16LE (n: number): this {
|
|
390
406
|
this.bufs.push([
|
|
391
|
-
n &
|
|
392
|
-
(n >> 8) &
|
|
407
|
+
n & 0xff, // low byte is just the last 8 bits
|
|
408
|
+
(n >> 8) & 0xff // shift right 8 bits to get the high byte
|
|
393
409
|
])
|
|
394
410
|
return this
|
|
395
411
|
}
|
|
396
412
|
|
|
397
413
|
writeInt16LE (n: number): this {
|
|
398
|
-
return this.writeUInt16LE(n &
|
|
414
|
+
return this.writeUInt16LE(n & 0xffff) // Mask with 0xFFFF to get the lower 16 bits
|
|
399
415
|
}
|
|
400
416
|
|
|
401
417
|
writeUInt32BE (n: number): this {
|
|
402
418
|
this.bufs.push([
|
|
403
|
-
(n >> 24) &
|
|
404
|
-
(n >> 16) &
|
|
405
|
-
(n >> 8) &
|
|
406
|
-
n &
|
|
419
|
+
(n >> 24) & 0xff, // highest byte
|
|
420
|
+
(n >> 16) & 0xff,
|
|
421
|
+
(n >> 8) & 0xff,
|
|
422
|
+
n & 0xff // lowest byte
|
|
407
423
|
])
|
|
408
424
|
return this
|
|
409
425
|
}
|
|
@@ -414,10 +430,10 @@ export class Writer {
|
|
|
414
430
|
|
|
415
431
|
writeUInt32LE (n: number): this {
|
|
416
432
|
this.bufs.push([
|
|
417
|
-
n &
|
|
418
|
-
(n >> 8) &
|
|
419
|
-
(n >> 16) &
|
|
420
|
-
(n >> 24) &
|
|
433
|
+
n & 0xff, // lowest byte
|
|
434
|
+
(n >> 8) & 0xff,
|
|
435
|
+
(n >> 16) & 0xff,
|
|
436
|
+
(n >> 24) & 0xff // highest byte
|
|
421
437
|
])
|
|
422
438
|
return this
|
|
423
439
|
}
|
|
@@ -464,33 +480,33 @@ export class Writer {
|
|
|
464
480
|
// 253 followed by the number in little-endian format
|
|
465
481
|
buf = [
|
|
466
482
|
253, // 0xfd
|
|
467
|
-
n &
|
|
468
|
-
(n >> 8) &
|
|
483
|
+
n & 0xff, // low byte
|
|
484
|
+
(n >> 8) & 0xff // high byte
|
|
469
485
|
]
|
|
470
486
|
} else if (n < 0x100000000) {
|
|
471
487
|
// 254 followed by the number in little-endian format
|
|
472
488
|
buf = [
|
|
473
489
|
254, // 0xfe
|
|
474
|
-
n &
|
|
475
|
-
(n >> 8) &
|
|
476
|
-
(n >> 16) &
|
|
477
|
-
(n >> 24) &
|
|
490
|
+
n & 0xff,
|
|
491
|
+
(n >> 8) & 0xff,
|
|
492
|
+
(n >> 16) & 0xff,
|
|
493
|
+
(n >> 24) & 0xff
|
|
478
494
|
]
|
|
479
495
|
} else {
|
|
480
496
|
// 255 followed by the number in little-endian format
|
|
481
497
|
// Since JavaScript bitwise operations work on 32 bits, we need to handle 64-bit numbers in two parts
|
|
482
|
-
const low = n &
|
|
483
|
-
const high = Math.floor(n / 0x100000000) &
|
|
498
|
+
const low = n & 0xffffffff
|
|
499
|
+
const high = Math.floor(n / 0x100000000) & 0xffffffff
|
|
484
500
|
buf = [
|
|
485
501
|
255, // 0xff
|
|
486
|
-
low &
|
|
487
|
-
(low >> 8) &
|
|
488
|
-
(low >> 16) &
|
|
489
|
-
(low >> 24) &
|
|
490
|
-
high &
|
|
491
|
-
(high >> 8) &
|
|
492
|
-
(high >> 16) &
|
|
493
|
-
(high >> 24) &
|
|
502
|
+
low & 0xff,
|
|
503
|
+
(low >> 8) & 0xff,
|
|
504
|
+
(low >> 16) & 0xff,
|
|
505
|
+
(low >> 24) & 0xff,
|
|
506
|
+
high & 0xff,
|
|
507
|
+
(high >> 8) & 0xff,
|
|
508
|
+
(high >> 16) & 0xff,
|
|
509
|
+
(high >> 24) & 0xff
|
|
494
510
|
]
|
|
495
511
|
}
|
|
496
512
|
return buf
|
|
@@ -505,11 +521,17 @@ export class Writer {
|
|
|
505
521
|
} else if (bn.ltn(0x10000)) {
|
|
506
522
|
const n = bn.toNumber()
|
|
507
523
|
// Value fits in a uint16
|
|
508
|
-
buf = [253, n &
|
|
524
|
+
buf = [253, n & 0xff, (n >> 8) & 0xff]
|
|
509
525
|
} else if (bn.lt(new BigNumber(0x100000000))) {
|
|
510
526
|
const n = bn.toNumber()
|
|
511
527
|
// Value fits in a uint32
|
|
512
|
-
buf = [
|
|
528
|
+
buf = [
|
|
529
|
+
254,
|
|
530
|
+
n & 0xff,
|
|
531
|
+
(n >> 8) & 0xff,
|
|
532
|
+
(n >> 16) & 0xff,
|
|
533
|
+
(n >> 24) & 0xff
|
|
534
|
+
]
|
|
513
535
|
} else {
|
|
514
536
|
const bw = new Writer()
|
|
515
537
|
bw.writeUInt8(255)
|
|
@@ -589,7 +611,7 @@ export class Reader {
|
|
|
589
611
|
|
|
590
612
|
public readUInt32BE (): number {
|
|
591
613
|
const val =
|
|
592
|
-
|
|
614
|
+
this.bin[this.pos] * 0x1000000 + // Shift the first byte by 24 bits
|
|
593
615
|
((this.bin[this.pos + 1] << 16) | // Shift the second byte by 16 bits
|
|
594
616
|
(this.bin[this.pos + 2] << 8) | // Shift the third byte by 8 bits
|
|
595
617
|
this.bin[this.pos + 3]) // The fourth byte
|
|
@@ -608,7 +630,8 @@ export class Reader {
|
|
|
608
630
|
(this.bin[this.pos] |
|
|
609
631
|
(this.bin[this.pos + 1] << 8) |
|
|
610
632
|
(this.bin[this.pos + 2] << 16) |
|
|
611
|
-
(this.bin[this.pos + 3] << 24)) >>>
|
|
633
|
+
(this.bin[this.pos + 3] << 24)) >>>
|
|
634
|
+
0
|
|
612
635
|
this.pos += 4
|
|
613
636
|
return val
|
|
614
637
|
}
|
|
@@ -635,7 +658,6 @@ export class Reader {
|
|
|
635
658
|
public readVarIntNum (): number {
|
|
636
659
|
const first = this.readUInt8()
|
|
637
660
|
let bn: BigNumber
|
|
638
|
-
let n: number
|
|
639
661
|
switch (first) {
|
|
640
662
|
case 0xfd:
|
|
641
663
|
return this.readUInt16LE()
|
|
@@ -646,7 +668,9 @@ export class Reader {
|
|
|
646
668
|
if (bn.lte(new BigNumber(2).pow(new BigNumber(53)))) {
|
|
647
669
|
return bn.toNumber()
|
|
648
670
|
} else {
|
|
649
|
-
throw new Error(
|
|
671
|
+
throw new Error(
|
|
672
|
+
'number too large to retain precision - use readVarIntBn'
|
|
673
|
+
)
|
|
650
674
|
}
|
|
651
675
|
default:
|
|
652
676
|
return first
|