@bsv/sdk 2.0.0-beta.0 → 2.0.0
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/mod.js +1 -0
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/auth/Peer.js +149 -74
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/auth/SessionManager.js.map +1 -1
- package/dist/cjs/src/auth/certificates/Certificate.js +18 -8
- package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +19 -9
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +17 -7
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/cjs/src/auth/clients/AuthFetch.js +30 -10
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +17 -7
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +17 -7
- package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
- package/dist/cjs/src/auth/utils/createNonce.js +18 -9
- package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
- package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/verifyNonce.js +18 -9
- package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/cjs/src/compat/BSM.js +17 -7
- package/dist/cjs/src/compat/BSM.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +17 -7
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +17 -7
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +17 -7
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/compat/Utxo.js +1 -1
- package/dist/cjs/src/compat/Utxo.js.map +1 -1
- package/dist/cjs/src/compat/index.js +17 -7
- package/dist/cjs/src/compat/index.js.map +1 -1
- package/dist/cjs/src/identity/ContactsManager.js +1 -1
- package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
- package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
- package/dist/cjs/src/kvstore/GlobalKVStore.js +20 -10
- package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/LocalKVStore.js +17 -7
- package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js +17 -7
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/cjs/src/messages/EncryptedMessage.js +19 -0
- package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
- package/dist/cjs/src/messages/index.js +17 -7
- package/dist/cjs/src/messages/index.js.map +1 -1
- package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
- package/dist/cjs/src/overlay-tools/HostReputationTracker.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +17 -7
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +17 -7
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +1 -2
- package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +77 -32
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +28 -54
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/Curve.js.map +1 -1
- package/dist/cjs/src/primitives/DRBG.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +58 -24
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/Hash.js +6 -6
- package/dist/cjs/src/primitives/Hash.js.map +1 -1
- 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 +63 -6
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +46 -9
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js +1 -1
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/ReaderUint8Array.js +180 -0
- package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -0
- package/dist/cjs/src/primitives/ReductionContext.js +35 -46
- package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
- package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
- package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
- package/dist/cjs/src/primitives/Signature.js.map +1 -1
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +132 -17
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/WriterUint8Array.js +173 -0
- package/dist/cjs/src/primitives/WriterUint8Array.js.map +1 -0
- package/dist/cjs/src/primitives/hex.js +2 -3
- package/dist/cjs/src/primitives/hex.js.map +1 -1
- package/dist/cjs/src/primitives/index.js +17 -7
- package/dist/cjs/src/primitives/index.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +43 -16
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/registry/RegistryClient.js +2 -2
- package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
- package/dist/cjs/src/remittance/CommsLayer.js +3 -0
- package/dist/cjs/src/remittance/CommsLayer.js.map +1 -0
- package/dist/cjs/src/remittance/IdentityLayer.js +3 -0
- package/dist/cjs/src/remittance/IdentityLayer.js.map +1 -0
- package/dist/cjs/src/remittance/RemittanceManager.js +1245 -0
- package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -0
- package/dist/cjs/src/remittance/RemittanceModule.js +3 -0
- package/dist/cjs/src/remittance/RemittanceModule.js.map +1 -0
- package/dist/cjs/src/remittance/index.js +23 -0
- package/dist/cjs/src/remittance/index.js.map +1 -0
- package/dist/cjs/src/remittance/modules/BasicBRC29.js +225 -0
- package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -0
- package/dist/cjs/src/remittance/modules/index.js +18 -0
- package/dist/cjs/src/remittance/modules/index.js.map +1 -0
- package/dist/cjs/src/remittance/types.js +22 -0
- package/dist/cjs/src/remittance/types.js.map +1 -0
- package/dist/cjs/src/script/OP.js +15 -13
- package/dist/cjs/src/script/OP.js.map +1 -1
- package/dist/cjs/src/script/Script.js +4 -1
- package/dist/cjs/src/script/Script.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +145 -53
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +21 -7
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
- package/dist/cjs/src/storage/StorageUploader.js +17 -7
- package/dist/cjs/src/storage/StorageUploader.js.map +1 -1
- package/dist/cjs/src/storage/StorageUtils.js.map +1 -1
- package/dist/cjs/src/storage/index.js +17 -7
- package/dist/cjs/src/storage/index.js.map +1 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +85 -27
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +32 -14
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/Broadcaster.js +2 -3
- package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +25 -6
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +238 -27
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/ARC.js +23 -0
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +1 -2
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/Teranode.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +1 -2
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/LivePolicy.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js +2 -2
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +1 -2
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
- package/dist/cjs/src/wallet/WalletError.js.map +1 -1
- package/dist/cjs/src/wallet/index.js +17 -7
- package/dist/cjs/src/wallet/index.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +17 -7
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +17 -7
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +17 -7
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +17 -7
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/XDM.js +17 -7
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js +1 -2
- package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/cjs/src/wallet/validationHelpers.js +51 -41
- package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +1 -0
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/auth/Peer.js +132 -67
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/auth/SessionManager.js.map +1 -1
- package/dist/esm/src/auth/certificates/Certificate.js +1 -1
- package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js +2 -2
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/esm/src/auth/clients/AuthFetch.js +13 -3
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
- package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/esm/src/compat/BSM.js.map +1 -1
- package/dist/esm/src/compat/ECIES.js.map +1 -1
- package/dist/esm/src/compat/HD.js.map +1 -1
- package/dist/esm/src/compat/Mnemonic.js.map +1 -1
- package/dist/esm/src/identity/ContactsManager.js +1 -1
- package/dist/esm/src/identity/ContactsManager.js.map +1 -1
- package/dist/esm/src/identity/IdentityClient.js.map +1 -1
- package/dist/esm/src/kvstore/GlobalKVStore.js +3 -3
- package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/esm/src/messages/EncryptedMessage.js +19 -0
- package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/esm/src/messages/SignedMessage.js.map +1 -1
- package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
- package/dist/esm/src/overlay-tools/HostReputationTracker.js.map +1 -1
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +71 -26
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +28 -54
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/Curve.js.map +1 -1
- package/dist/esm/src/primitives/DRBG.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +58 -24
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/Hash.js.map +1 -1
- 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 +61 -4
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/Polynomial.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +29 -2
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js +1 -1
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/ReaderUint8Array.js +176 -0
- package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -0
- package/dist/esm/src/primitives/ReductionContext.js +35 -46
- package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
- package/dist/esm/src/primitives/Schnorr.js.map +1 -1
- package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
- package/dist/esm/src/primitives/Signature.js.map +1 -1
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/esm/src/primitives/TransactionSignature.js +115 -10
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/esm/src/primitives/WriterUint8Array.js +169 -0
- package/dist/esm/src/primitives/WriterUint8Array.js.map +1 -0
- package/dist/esm/src/primitives/hex.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +37 -11
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/registry/RegistryClient.js.map +1 -1
- package/dist/esm/src/remittance/CommsLayer.js +2 -0
- package/dist/esm/src/remittance/CommsLayer.js.map +1 -0
- package/dist/esm/src/remittance/IdentityLayer.js +2 -0
- package/dist/esm/src/remittance/IdentityLayer.js.map +1 -0
- package/dist/esm/src/remittance/RemittanceManager.js +1254 -0
- package/dist/esm/src/remittance/RemittanceManager.js.map +1 -0
- package/dist/esm/src/remittance/RemittanceModule.js +2 -0
- package/dist/esm/src/remittance/RemittanceModule.js.map +1 -0
- package/dist/esm/src/remittance/index.js +7 -0
- package/dist/esm/src/remittance/index.js.map +1 -0
- package/dist/esm/src/remittance/modules/BasicBRC29.js +227 -0
- package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -0
- package/dist/esm/src/remittance/modules/index.js +2 -0
- package/dist/esm/src/remittance/modules/index.js.map +1 -0
- package/dist/esm/src/remittance/types.js +19 -0
- package/dist/esm/src/remittance/types.js.map +1 -0
- package/dist/esm/src/script/OP.js +15 -13
- package/dist/esm/src/script/OP.js.map +1 -1
- package/dist/esm/src/script/Script.js +4 -1
- package/dist/esm/src/script/Script.js.map +1 -1
- package/dist/esm/src/script/Spend.js +129 -46
- package/dist/esm/src/script/Spend.js.map +1 -1
- package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
- package/dist/esm/src/script/templates/PushDrop.js +21 -7
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
- package/dist/esm/src/storage/StorageUploader.js.map +1 -1
- package/dist/esm/src/storage/StorageUtils.js.map +1 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +86 -28
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js.map +1 -1
- package/dist/esm/src/transaction/BeefTx.js +32 -14
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/MerklePath.js +26 -7
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +239 -28
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/ARC.js +23 -0
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/Teranode.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/LivePolicy.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/esm/src/wallet/WalletClient.js.map +1 -1
- package/dist/esm/src/wallet/WalletError.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/esm/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/esm/src/wallet/validationHelpers.js +1 -1
- package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +1 -0
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/auth/Peer.d.ts +12 -7
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
- package/dist/types/src/auth/types.d.ts +2 -0
- package/dist/types/src/auth/types.d.ts.map +1 -1
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/validateCertificates.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/messages/EncryptedMessage.d.ts +19 -0
- 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/primitives/AESGCM.d.ts +18 -0
- package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts +8 -0
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts +24 -0
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/Hash.d.ts +8 -8
- package/dist/types/src/primitives/Hash.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts +1 -0
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/PrivateKey.d.ts +27 -0
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
- package/dist/types/src/primitives/Random.d.ts.map +1 -1
- package/dist/types/src/primitives/ReaderUint8Array.d.ts +32 -0
- package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -0
- package/dist/types/src/primitives/ReductionContext.d.ts +9 -0
- package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
- package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
- package/dist/types/src/primitives/TransactionSignature.d.ts +16 -4
- package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
- package/dist/types/src/primitives/WriterUint8Array.d.ts +54 -0
- package/dist/types/src/primitives/WriterUint8Array.d.ts.map +1 -0
- package/dist/types/src/primitives/utils.d.ts +19 -6
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/remittance/CommsLayer.d.ts +50 -0
- package/dist/types/src/remittance/CommsLayer.d.ts.map +1 -0
- package/dist/types/src/remittance/IdentityLayer.d.ts +35 -0
- package/dist/types/src/remittance/IdentityLayer.d.ts.map +1 -0
- package/dist/types/src/remittance/RemittanceManager.d.ts +452 -0
- package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -0
- package/dist/types/src/remittance/RemittanceModule.d.ts +106 -0
- package/dist/types/src/remittance/RemittanceModule.d.ts.map +1 -0
- package/dist/types/src/remittance/index.d.ts +7 -0
- package/dist/types/src/remittance/index.d.ts.map +1 -0
- package/dist/types/src/remittance/modules/BasicBRC29.d.ts +133 -0
- package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -0
- package/dist/types/src/remittance/modules/index.d.ts +2 -0
- package/dist/types/src/remittance/modules/index.d.ts.map +1 -0
- package/dist/types/src/remittance/types.d.ts +238 -0
- package/dist/types/src/remittance/types.d.ts.map +1 -0
- package/dist/types/src/script/OP.d.ts +5 -3
- package/dist/types/src/script/OP.d.ts.map +1 -1
- package/dist/types/src/script/Script.d.ts.map +1 -1
- package/dist/types/src/script/Spend.d.ts +7 -0
- package/dist/types/src/script/Spend.d.ts.map +1 -1
- package/dist/types/src/script/templates/PushDrop.d.ts +3 -4
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
- package/dist/types/src/storage/StorageUtils.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +26 -9
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +13 -6
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/MerklePath.d.ts +16 -3
- package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +58 -7
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
- package/dist/types/src/transaction/http/BinaryFetchClient.d.ts +0 -2
- package/dist/types/src/transaction/http/BinaryFetchClient.d.ts.map +1 -1
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +5 -5
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +13 -13
- package/dist/umd/bundle.js.map +1 -1
- package/docs/index.md +3 -1
- package/docs/reference/auth.md +8 -12
- package/docs/reference/primitives.md +260 -55
- package/docs/reference/remittance.md +2166 -0
- package/docs/reference/script.md +12 -4
- package/docs/reference/transaction.md +203 -34
- package/docs/reference/wallet.md +6 -5
- package/docs/remittance-getting-started.md +138 -0
- package/mod.ts +1 -0
- package/package.json +11 -1
- package/src/auth/Peer.ts +196 -85
- package/src/auth/__tests/Peer.test.ts +424 -257
- package/src/auth/clients/AuthFetch.ts +18 -3
- package/src/auth/types.ts +2 -0
- package/src/messages/EncryptedMessage.ts +19 -0
- package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +7 -0
- package/src/primitives/AESGCM.ts +75 -34
- package/src/primitives/BigNumber.ts +27 -31
- package/src/primitives/ECDSA.ts +41 -2
- package/src/primitives/PrivateKey.ts +27 -0
- package/src/primitives/ReaderUint8Array.ts +196 -0
- package/src/primitives/ReductionContext.ts +44 -48
- package/src/primitives/TransactionSignature.ts +129 -10
- package/src/primitives/WriterUint8Array.ts +195 -0
- package/src/primitives/__tests/AESGCM.test.ts +31 -0
- package/src/primitives/__tests/ECDSA.test.ts +16 -0
- package/src/primitives/__tests/ReaderUint8Array.test.ts +317 -0
- package/src/primitives/__tests/WriterUint8Array.test.ts +208 -0
- package/src/primitives/utils.ts +31 -4
- package/src/remittance/CommsLayer.ts +41 -0
- package/src/remittance/IdentityLayer.ts +32 -0
- package/src/remittance/RemittanceManager.ts +1672 -0
- package/src/remittance/RemittanceModule.ts +92 -0
- package/src/remittance/__tests/BasicBRC29.test.ts +188 -0
- package/src/remittance/__tests/RemittanceManager.test.ts +493 -0
- package/src/remittance/__tests/examples.ts +130 -0
- package/src/remittance/index.ts +6 -0
- package/src/remittance/modules/BasicBRC29.ts +361 -0
- package/src/remittance/modules/index.ts +1 -0
- package/src/remittance/types.ts +284 -0
- package/src/script/OP.ts +15 -13
- package/src/script/Script.ts +3 -1
- package/src/script/Spend.ts +128 -52
- package/src/script/__tests/Chronicle.test.ts +186 -0
- package/src/script/__tests/Spend.test.ts +1 -1
- package/src/script/__tests/SpendValildVectors.test.ts +63 -0
- package/src/script/__tests/lrshiftnum.test.ts +185 -0
- package/src/script/__tests/sighashTestData.ts +1031 -0
- package/src/script/__tests/spend.valid.vectors.ts +9 -16
- package/src/script/templates/PushDrop.ts +32 -17
- package/src/script/templates/__tests/PushDrop.test.ts +28 -0
- package/src/storage/__tests/StorageUploader.test.ts +1 -1
- package/src/transaction/Beef.ts +103 -40
- package/src/transaction/BeefTx.ts +38 -19
- package/src/transaction/MerklePath.ts +30 -9
- package/src/transaction/Transaction.ts +277 -38
- package/src/transaction/__tests/Beef.test.ts +77 -0
- package/src/transaction/__tests/Transaction.test.ts +641 -3
- package/src/transaction/broadcasters/ARC.ts +34 -7
- package/src/transaction/broadcasters/__tests/ARC.test.ts +98 -0
- package/src/wallet/Wallet.interfaces.ts +5 -5
- package/dist/cjs/src/storage/__test/StorageDownloader.test.js +0 -171
- package/dist/cjs/src/storage/__test/StorageDownloader.test.js.map +0 -1
- package/dist/cjs/src/storage/__test/StorageUploader.test.js +0 -163
- package/dist/cjs/src/storage/__test/StorageUploader.test.js.map +0 -1
- package/dist/cjs/src/storage/__test/StorageUtils.test.js +0 -97
- package/dist/cjs/src/storage/__test/StorageUtils.test.js.map +0 -1
- package/dist/esm/src/storage/__test/StorageDownloader.test.js +0 -166
- package/dist/esm/src/storage/__test/StorageDownloader.test.js.map +0 -1
- package/dist/esm/src/storage/__test/StorageUploader.test.js +0 -135
- package/dist/esm/src/storage/__test/StorageUploader.test.js.map +0 -1
- package/dist/esm/src/storage/__test/StorageUtils.test.js +0 -72
- package/dist/esm/src/storage/__test/StorageUtils.test.js.map +0 -1
- package/dist/types/src/storage/__test/StorageDownloader.test.d.ts +0 -2
- package/dist/types/src/storage/__test/StorageDownloader.test.d.ts.map +0 -1
- package/dist/types/src/storage/__test/StorageUploader.test.d.ts +0 -2
- package/dist/types/src/storage/__test/StorageUploader.test.d.ts.map +0 -1
- package/dist/types/src/storage/__test/StorageUtils.test.d.ts +0 -2
- package/dist/types/src/storage/__test/StorageUtils.test.d.ts.map +0 -1
package/docs/index.md
CHANGED
|
@@ -48,6 +48,7 @@ Finally, you can deep dive into the details of the interface and types in the re
|
|
|
48
48
|
|
|
49
49
|
## Reference Material
|
|
50
50
|
|
|
51
|
+
- [Remittance Getting Started](./remittance-getting-started.md)
|
|
51
52
|
- [Wallet](./reference/wallet.md)
|
|
52
53
|
- [Primitives](./reference/primitives.md)
|
|
53
54
|
- [Script](./reference/script.md)
|
|
@@ -58,6 +59,7 @@ Finally, you can deep dive into the details of the interface and types in the re
|
|
|
58
59
|
- [Registry](./reference/registry.md)
|
|
59
60
|
- [Storage](./reference/storage.md)
|
|
60
61
|
- [KV Store](./reference/kvstore.md)
|
|
62
|
+
- [Remittance](./reference/remittance.md)
|
|
61
63
|
- [Messages](./reference/messages.md)
|
|
62
64
|
- [TOTP](./reference/totp.md)
|
|
63
65
|
- [Compatibility](./reference/compat.md)
|
|
@@ -74,4 +76,4 @@ Finally, you can deep dive into the details of the interface and types in the re
|
|
|
74
76
|
|
|
75
77
|
## Performance Reports
|
|
76
78
|
|
|
77
|
-
- [Benchmarks](./performance.md)
|
|
79
|
+
- [Benchmarks](./performance.md)
|
package/docs/reference/auth.md
CHANGED
|
@@ -47,6 +47,8 @@ export interface PeerSession {
|
|
|
47
47
|
peerNonce?: string;
|
|
48
48
|
peerIdentityKey?: string;
|
|
49
49
|
lastUpdate: number;
|
|
50
|
+
certificatesRequired?: boolean;
|
|
51
|
+
certificatesValidated?: boolean;
|
|
50
52
|
}
|
|
51
53
|
```
|
|
52
54
|
|
|
@@ -679,9 +681,9 @@ export class Peer {
|
|
|
679
681
|
public sessionManager: SessionManager;
|
|
680
682
|
certificatesToRequest: RequestedCertificateSet;
|
|
681
683
|
constructor(wallet: WalletInterface, transport: Transport, certificatesToRequest?: RequestedCertificateSet, sessionManager?: SessionManager, autoPersistLastSession?: boolean, originator?: OriginatorDomainNameStringUnder250Bytes)
|
|
682
|
-
async toPeer(message: number[], identityKey?: string
|
|
683
|
-
async requestCertificates(certificatesToRequest: RequestedCertificateSet, identityKey?: string
|
|
684
|
-
async getAuthenticatedSession(identityKey?: string
|
|
684
|
+
async toPeer(message: number[], identityKey?: string): Promise<void>
|
|
685
|
+
async requestCertificates(certificatesToRequest: RequestedCertificateSet, identityKey?: string): Promise<void>
|
|
686
|
+
async getAuthenticatedSession(identityKey?: string): Promise<PeerSession>
|
|
685
687
|
listenForGeneralMessages(callback: (senderPublicKey: string, payload: number[]) => void): number
|
|
686
688
|
stopListeningForGeneralMessages(callbackID: number): void
|
|
687
689
|
listenForCertificatesReceived(callback: (senderPublicKey: string, certs: VerifiableCertificate[]) => void): number
|
|
@@ -726,7 +728,7 @@ or the session is not authenticated, initiates a handshake to create or authenti
|
|
|
726
728
|
- If `identityKey` is not provided, but we have a `lastInteractedWithPeer`, we try that key.
|
|
727
729
|
|
|
728
730
|
```ts
|
|
729
|
-
async getAuthenticatedSession(identityKey?: string
|
|
731
|
+
async getAuthenticatedSession(identityKey?: string): Promise<PeerSession>
|
|
730
732
|
```
|
|
731
733
|
See also: [PeerSession](./auth.md#interface-peersession)
|
|
732
734
|
|
|
@@ -738,8 +740,6 @@ Argument Details
|
|
|
738
740
|
|
|
739
741
|
+ **identityKey**
|
|
740
742
|
+ The identity public key of the peer.
|
|
741
|
-
+ **maxWaitTime**
|
|
742
|
-
+ The maximum time in milliseconds to wait for the handshake.
|
|
743
743
|
|
|
744
744
|
#### Method listenForCertificatesReceived
|
|
745
745
|
|
|
@@ -801,7 +801,7 @@ This method allows a peer to dynamically request specific certificates after
|
|
|
801
801
|
an initial handshake or message has been exchanged.
|
|
802
802
|
|
|
803
803
|
```ts
|
|
804
|
-
async requestCertificates(certificatesToRequest: RequestedCertificateSet, identityKey?: string
|
|
804
|
+
async requestCertificates(certificatesToRequest: RequestedCertificateSet, identityKey?: string): Promise<void>
|
|
805
805
|
```
|
|
806
806
|
See also: [RequestedCertificateSet](./auth.md#interface-requestedcertificateset)
|
|
807
807
|
|
|
@@ -815,8 +815,6 @@ Argument Details
|
|
|
815
815
|
+ Specifies the certifiers and types of certificates required from the peer.
|
|
816
816
|
+ **identityKey**
|
|
817
817
|
+ The identity public key of the peer. If not provided, the current or last session identity is used.
|
|
818
|
-
+ **maxWaitTime**
|
|
819
|
-
+ Maximum time in milliseconds to wait for the peer session to be authenticated.
|
|
820
818
|
|
|
821
819
|
Throws
|
|
822
820
|
|
|
@@ -886,7 +884,7 @@ Argument Details
|
|
|
886
884
|
Sends a general message to a peer, and initiates a handshake if necessary.
|
|
887
885
|
|
|
888
886
|
```ts
|
|
889
|
-
async toPeer(message: number[], identityKey?: string
|
|
887
|
+
async toPeer(message: number[], identityKey?: string): Promise<void>
|
|
890
888
|
```
|
|
891
889
|
|
|
892
890
|
Argument Details
|
|
@@ -895,8 +893,6 @@ Argument Details
|
|
|
895
893
|
+ The message payload to send.
|
|
896
894
|
+ **identityKey**
|
|
897
895
|
+ The identity public key of the peer. If not provided, uses lastInteractedWithPeer (if any).
|
|
898
|
-
+ **maxWaitTime**
|
|
899
|
-
+ optional max wait time in ms
|
|
900
896
|
|
|
901
897
|
Throws
|
|
902
898
|
|
|
@@ -44,16 +44,17 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
|
|
|
44
44
|
|
|
45
45
|
| | | |
|
|
46
46
|
| --- | --- | --- |
|
|
47
|
-
| [BasePoint](#class-basepoint) | [
|
|
48
|
-
| [BigNumber](#class-bignumber) | [
|
|
49
|
-
| [Curve](#class-curve) | [
|
|
50
|
-
| [DRBG](#class-drbg) | [
|
|
51
|
-
| [JacobianPoint](#class-jacobianpoint) | [
|
|
52
|
-
| [K256](#class-k256) | [
|
|
53
|
-
| [KeyShares](#class-keyshares) | [ReductionContext](#class-reductioncontext) | [
|
|
54
|
-
| [Mersenne](#class-mersenne) | [SHA1](#class-sha1) | [
|
|
55
|
-
| [MontgomoryMethod](#class-montgomorymethod) | [SHA1HMAC](#class-sha1hmac) | [
|
|
47
|
+
| [BasePoint](#class-basepoint) | [Polynomial](#class-polynomial) | [SHA512](#class-sha512) |
|
|
48
|
+
| [BigNumber](#class-bignumber) | [PrivateKey](#class-privatekey) | [SHA512HMAC](#class-sha512hmac) |
|
|
49
|
+
| [Curve](#class-curve) | [PublicKey](#class-publickey) | [Schnorr](#class-schnorr) |
|
|
50
|
+
| [DRBG](#class-drbg) | [RIPEMD160](#class-ripemd160) | [Secp256r1](#class-secp256r1) |
|
|
51
|
+
| [JacobianPoint](#class-jacobianpoint) | [Reader](#class-reader) | [Signature](#class-signature) |
|
|
52
|
+
| [K256](#class-k256) | [ReaderUint8Array](#class-readeruint8array) | [SymmetricKey](#class-symmetrickey) |
|
|
53
|
+
| [KeyShares](#class-keyshares) | [ReductionContext](#class-reductioncontext) | [TransactionSignature](#class-transactionsignature) |
|
|
54
|
+
| [Mersenne](#class-mersenne) | [SHA1](#class-sha1) | [Writer](#class-writer) |
|
|
55
|
+
| [MontgomoryMethod](#class-montgomorymethod) | [SHA1HMAC](#class-sha1hmac) | [WriterUint8Array](#class-writeruint8array) |
|
|
56
56
|
| [Point](#class-point) | [SHA256](#class-sha256) | |
|
|
57
|
+
| [PointInFiniteField](#class-pointinfinitefield) | [SHA256HMAC](#class-sha256hmac) | |
|
|
57
58
|
|
|
58
59
|
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
59
60
|
|
|
@@ -299,6 +300,13 @@ console.log(BigNumber.wordSize); // output: 26
|
|
|
299
300
|
Compute the multiplicative inverse of the current BigNumber in the modulus field specified by `p`.
|
|
300
301
|
The multiplicative inverse is a number which when multiplied with the current BigNumber gives '1' in the modulus field.
|
|
301
302
|
|
|
303
|
+
SECURITY NOTE:
|
|
304
|
+
This implementation avoids variable-time extended Euclidean algorithms
|
|
305
|
+
to reduce timing side-channel leakage. However, JavaScript BigInt arithmetic
|
|
306
|
+
does not provide constant-time guarantees. This implementation is suitable
|
|
307
|
+
for browser and single-tenant environments but is not hardened against
|
|
308
|
+
high-resolution timing attacks in shared CPU contexts.
|
|
309
|
+
|
|
302
310
|
```ts
|
|
303
311
|
_invmp(p: BigNumber): BigNumber
|
|
304
312
|
```
|
|
@@ -1786,6 +1794,7 @@ export default class Point extends BasePoint {
|
|
|
1786
1794
|
getX(): BigNumber
|
|
1787
1795
|
getY(): BigNumber
|
|
1788
1796
|
mul(k: BigNumber | number | number[] | string): Point
|
|
1797
|
+
mulCT(k: BigNumber | number | number[] | string): Point
|
|
1789
1798
|
mulAdd(k1: BigNumber, p2: Point, k2: BigNumber): Point
|
|
1790
1799
|
jmulAdd(k1: BigNumber, p2: Point, k2: BigNumber): JPoint
|
|
1791
1800
|
eq(p: Point): boolean
|
|
@@ -2508,6 +2517,32 @@ Returns
|
|
|
2508
2517
|
|
|
2509
2518
|
#### Method deriveChild
|
|
2510
2519
|
|
|
2520
|
+
SECURITY NOTE – DETERMINISTIC CHILD KEY DERIVATION
|
|
2521
|
+
|
|
2522
|
+
This method derives child private keys deterministically from the caller’s
|
|
2523
|
+
long-term private key, the counterparty’s public key, and a caller-supplied
|
|
2524
|
+
invoice number using HMAC over an ECDH shared secret (BRC-42 style derivation).
|
|
2525
|
+
|
|
2526
|
+
This construction does NOT implement a formally authenticated key exchange
|
|
2527
|
+
(AKE) and does NOT provide the following security properties:
|
|
2528
|
+
|
|
2529
|
+
- Forward secrecy: Compromise of a long-term private key compromises all
|
|
2530
|
+
past and future child keys derived from it.
|
|
2531
|
+
- Replay protection: Child keys are deterministic for a given invoice
|
|
2532
|
+
number and key pair; previously observed messages can be replayed.
|
|
2533
|
+
- Explicit authentication / identity binding: Possession of a public key
|
|
2534
|
+
alone does not guarantee the intended peer identity, enabling potential
|
|
2535
|
+
identity misbinding attacks if higher-level identity verification is absent.
|
|
2536
|
+
|
|
2537
|
+
This derivation is intended for lightweight, deterministic key hierarchies
|
|
2538
|
+
where both parties already possess and trust each other’s long-term public
|
|
2539
|
+
keys. It SHOULD NOT be used as a drop-in replacement for a standard
|
|
2540
|
+
authenticated key exchange (e.g. X3DH, Noise, or SIGMA) in high-security or
|
|
2541
|
+
high-value contexts.
|
|
2542
|
+
|
|
2543
|
+
Any future protocol providing forward secrecy, replay protection, or strong
|
|
2544
|
+
peer authentication will require a versioned, breaking change.
|
|
2545
|
+
|
|
2511
2546
|
Derives a child key with BRC-42.
|
|
2512
2547
|
|
|
2513
2548
|
```ts
|
|
@@ -3306,9 +3341,54 @@ See also: [BigNumber](./primitives.md#class-bignumber)
|
|
|
3306
3341
|
|
|
3307
3342
|
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
3308
3343
|
|
|
3344
|
+
---
|
|
3345
|
+
### Class: ReaderUint8Array
|
|
3346
|
+
|
|
3347
|
+
Reader for serialized Uint8Array binary data.
|
|
3348
|
+
|
|
3349
|
+
```ts
|
|
3350
|
+
export class ReaderUint8Array {
|
|
3351
|
+
public bin: Uint8Array;
|
|
3352
|
+
public pos: number;
|
|
3353
|
+
static makeReader(bin: Uint8Array | number[], pos: number = 0): Reader | ReaderUint8Array
|
|
3354
|
+
constructor(bin: Uint8Array | number[] = new Uint8Array(0), pos: number = 0)
|
|
3355
|
+
public eof(): boolean
|
|
3356
|
+
public read(len = this.length): Uint8Array
|
|
3357
|
+
public readReverse(len = this.length): Uint8Array
|
|
3358
|
+
public readUInt8(): number
|
|
3359
|
+
public readInt8(): number
|
|
3360
|
+
public readUInt16BE(): number
|
|
3361
|
+
public readInt16BE(): number
|
|
3362
|
+
public readUInt16LE(): number
|
|
3363
|
+
public readInt16LE(): number
|
|
3364
|
+
public readUInt32BE(): number
|
|
3365
|
+
public readInt32BE(): number
|
|
3366
|
+
public readUInt32LE(): number
|
|
3367
|
+
public readInt32LE(): number
|
|
3368
|
+
public readUInt64BEBn(): BigNumber
|
|
3369
|
+
public readUInt64LEBn(): BigNumber
|
|
3370
|
+
public readInt64LEBn(): BigNumber
|
|
3371
|
+
public readVarIntNum(signed: boolean = true): number
|
|
3372
|
+
public readVarInt(): Uint8Array
|
|
3373
|
+
public readVarIntBn(): BigNumber
|
|
3374
|
+
}
|
|
3375
|
+
```
|
|
3376
|
+
|
|
3377
|
+
See also: [BigNumber](./primitives.md#class-bignumber), [Reader](./primitives.md#class-reader)
|
|
3378
|
+
|
|
3379
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
3380
|
+
|
|
3309
3381
|
---
|
|
3310
3382
|
### Class: ReductionContext
|
|
3311
3383
|
|
|
3384
|
+
SECURITY NOTE:
|
|
3385
|
+
This reduction context avoids obvious variable-time constructs (such as
|
|
3386
|
+
sliding-window exponentiation and conditional modular reduction) to reduce
|
|
3387
|
+
timing side-channel leakage. However, JavaScript BigInt arithmetic does not
|
|
3388
|
+
provide constant-time guarantees. These mitigations improve resistance to
|
|
3389
|
+
coarse timing attacks but do not make the implementation suitable for
|
|
3390
|
+
hostile multi-tenant or shared-CPU environments.
|
|
3391
|
+
|
|
3312
3392
|
A base reduction engine that provides several arithmetic operations over
|
|
3313
3393
|
big numbers under a modulus context. It's particularly suitable for
|
|
3314
3394
|
calculations required in cryptography algorithms and encoding schemas.
|
|
@@ -4860,9 +4940,12 @@ export default class TransactionSignature extends Signature {
|
|
|
4860
4940
|
public static readonly SIGHASH_ALL = 1;
|
|
4861
4941
|
public static readonly SIGHASH_NONE = 2;
|
|
4862
4942
|
public static readonly SIGHASH_SINGLE = 3;
|
|
4943
|
+
public static readonly SIGHASH_CHRONICLE = 32;
|
|
4863
4944
|
public static readonly SIGHASH_FORKID = 64;
|
|
4864
4945
|
public static readonly SIGHASH_ANYONECANPAY = 128;
|
|
4865
4946
|
scope: number;
|
|
4947
|
+
static formatOTDA(params: TransactionSignatureFormatParams): Uint8Array
|
|
4948
|
+
static formatBip143(params: TransactionSignatureFormatParams): Uint8Array
|
|
4866
4949
|
static format(params: TransactionSignatureFormatParams): number[]
|
|
4867
4950
|
static formatBytes(params: TransactionSignatureFormatParams): Uint8Array
|
|
4868
4951
|
static fromChecksigFormat(buf: number[]): TransactionSignature
|
|
@@ -4889,12 +4972,12 @@ Argument Details
|
|
|
4889
4972
|
+ **params.cache**
|
|
4890
4973
|
+ Optional cache storing previously computed `hashPrevouts`, `hashSequence`, or `hashOutputs*` values; it will be populated if present.
|
|
4891
4974
|
|
|
4892
|
-
#### Method
|
|
4975
|
+
#### Method formatBip143
|
|
4893
4976
|
|
|
4894
4977
|
Formats the same SIGHASH preimage bytes as `format`, supporting the optional cache for hash reuse.
|
|
4895
4978
|
|
|
4896
4979
|
```ts
|
|
4897
|
-
static
|
|
4980
|
+
static formatBip143(params: TransactionSignatureFormatParams): Uint8Array
|
|
4898
4981
|
```
|
|
4899
4982
|
|
|
4900
4983
|
Returns
|
|
@@ -4908,6 +4991,18 @@ Argument Details
|
|
|
4908
4991
|
+ **params.cache**
|
|
4909
4992
|
+ Optional `SignatureHashCache` that may already contain hashed prefixes and is populated during formatting.
|
|
4910
4993
|
|
|
4994
|
+
#### Method formatOTDA
|
|
4995
|
+
|
|
4996
|
+
Implements the original bitcoin transaction signature digest preimage algorithm (OTDA).
|
|
4997
|
+
|
|
4998
|
+
```ts
|
|
4999
|
+
static formatOTDA(params: TransactionSignatureFormatParams): Uint8Array
|
|
5000
|
+
```
|
|
5001
|
+
|
|
5002
|
+
Returns
|
|
5003
|
+
|
|
5004
|
+
preimage as a byte array
|
|
5005
|
+
|
|
4911
5006
|
#### Method hasLowS
|
|
4912
5007
|
|
|
4913
5008
|
Compares to bitcoind's IsLowDERSignature
|
|
@@ -4930,6 +5025,7 @@ export class Writer {
|
|
|
4930
5025
|
getLength(): number
|
|
4931
5026
|
toUint8Array(): Uint8Array
|
|
4932
5027
|
toArray(): number[]
|
|
5028
|
+
toHex(): string
|
|
4933
5029
|
write(buf: WriterChunk): this
|
|
4934
5030
|
writeReverse(buf: number[]): this
|
|
4935
5031
|
writeUInt8(n: number): this
|
|
@@ -4952,7 +5048,91 @@ export class Writer {
|
|
|
4952
5048
|
}
|
|
4953
5049
|
```
|
|
4954
5050
|
|
|
4955
|
-
See also: [BigNumber](./primitives.md#class-bignumber), [toArray](./primitives.md#variable-toarray)
|
|
5051
|
+
See also: [BigNumber](./primitives.md#class-bignumber), [toArray](./primitives.md#variable-toarray), [toHex](./primitives.md#variable-tohex), [toUint8Array](./primitives.md#variable-touint8array)
|
|
5052
|
+
|
|
5053
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
5054
|
+
|
|
5055
|
+
---
|
|
5056
|
+
### Class: WriterUint8Array
|
|
5057
|
+
|
|
5058
|
+
WriterUint8Array is a utility class for writing binary data into a dynamically
|
|
5059
|
+
growing Uint8Array buffer. It provides methods to write various integer types
|
|
5060
|
+
and variable-length integers, similar to the Writer class but optimized for
|
|
5061
|
+
Uint8Array usage.
|
|
5062
|
+
|
|
5063
|
+
```ts
|
|
5064
|
+
export class WriterUint8Array {
|
|
5065
|
+
constructor(bufs?: WriterChunk[], initialCapacity: number = 256)
|
|
5066
|
+
getLength(): number
|
|
5067
|
+
toUint8Array(): Uint8Array
|
|
5068
|
+
toArray(): number[]
|
|
5069
|
+
toUint8ArrayZeroCopy(): Uint8Array
|
|
5070
|
+
write(bytes: WriterChunk): this
|
|
5071
|
+
writeReverse(buf: WriterChunk): this
|
|
5072
|
+
writeUInt8(value: number): this
|
|
5073
|
+
writeInt8(value: number): this
|
|
5074
|
+
writeUInt16LE(value: number): this
|
|
5075
|
+
writeUInt16BE(value: number): this
|
|
5076
|
+
writeInt16LE(value: number): this
|
|
5077
|
+
writeInt16BE(value: number): this
|
|
5078
|
+
writeUInt32LE(value: number): this
|
|
5079
|
+
writeUInt32BE(value: number): this
|
|
5080
|
+
writeInt32LE(value: number): this
|
|
5081
|
+
writeInt32BE(value: number): this
|
|
5082
|
+
writeUInt64BEBn(bn: BigNumber): this
|
|
5083
|
+
writeUInt64LEBn(bn: BigNumber): this
|
|
5084
|
+
writeUInt64LE(n: number): this
|
|
5085
|
+
writeVarIntNum(n: number): this
|
|
5086
|
+
writeVarIntBn(bn: BigNumber): this
|
|
5087
|
+
reset(): void
|
|
5088
|
+
}
|
|
5089
|
+
```
|
|
5090
|
+
|
|
5091
|
+
See also: [BigNumber](./primitives.md#class-bignumber), [toArray](./primitives.md#variable-toarray), [toUint8Array](./primitives.md#variable-touint8array)
|
|
5092
|
+
|
|
5093
|
+
#### Method getLength
|
|
5094
|
+
|
|
5095
|
+
Returns the current length of written data
|
|
5096
|
+
|
|
5097
|
+
```ts
|
|
5098
|
+
getLength(): number
|
|
5099
|
+
```
|
|
5100
|
+
|
|
5101
|
+
#### Method reset
|
|
5102
|
+
|
|
5103
|
+
Resets the writer to empty state (reuses the buffer)
|
|
5104
|
+
|
|
5105
|
+
```ts
|
|
5106
|
+
reset(): void
|
|
5107
|
+
```
|
|
5108
|
+
|
|
5109
|
+
#### Method toArray
|
|
5110
|
+
|
|
5111
|
+
Legacy compatibility method – returns number[] (Byte[])
|
|
5112
|
+
|
|
5113
|
+
```ts
|
|
5114
|
+
toArray(): number[]
|
|
5115
|
+
```
|
|
5116
|
+
|
|
5117
|
+
#### Method toUint8Array
|
|
5118
|
+
|
|
5119
|
+
```ts
|
|
5120
|
+
toUint8Array(): Uint8Array
|
|
5121
|
+
```
|
|
5122
|
+
|
|
5123
|
+
Returns
|
|
5124
|
+
|
|
5125
|
+
the written data as Uint8Array copy of the internal buffer
|
|
5126
|
+
|
|
5127
|
+
#### Method toUint8ArrayZeroCopy
|
|
5128
|
+
|
|
5129
|
+
```ts
|
|
5130
|
+
toUint8ArrayZeroCopy(): Uint8Array
|
|
5131
|
+
```
|
|
5132
|
+
|
|
5133
|
+
Returns
|
|
5134
|
+
|
|
5135
|
+
the written data as Uint8Array. CAUTION: This is zero-copy subarray of the internal buffer).
|
|
4956
5136
|
|
|
4957
5137
|
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
4958
5138
|
|
|
@@ -5309,24 +5489,25 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
|
|
|
5309
5489
|
|
|
5310
5490
|
| | | |
|
|
5311
5491
|
| --- | --- | --- |
|
|
5312
|
-
| [BI_EIGHT](#variable-bi_eight) | [
|
|
5313
|
-
| [BI_FOUR](#variable-bi_four) | [
|
|
5314
|
-
| [BI_ONE](#variable-bi_one) | [
|
|
5315
|
-
| [BI_THREE](#variable-bi_three) | [
|
|
5316
|
-
| [BI_TWO](#variable-bi_two) | [
|
|
5317
|
-
| [BI_ZERO](#variable-bi_zero) | [
|
|
5318
|
-
| [GX_BIGINT](#variable-gx_bigint) | [
|
|
5319
|
-
| [GY_BIGINT](#variable-gy_bigint) | [
|
|
5320
|
-
| [MASK_256](#variable-mask_256) | [
|
|
5321
|
-
| [N_BIGINT](#variable-n_bigint) | [
|
|
5322
|
-
| [P_BIGINT](#variable-p_bigint) | [
|
|
5323
|
-
| [P_PLUS1_DIV4](#variable-p_plus1_div4) | [
|
|
5324
|
-
| [biMod](#variable-bimod) | [
|
|
5325
|
-
| [biModAdd](#variable-bimodadd) | [
|
|
5326
|
-
| [biModInv](#variable-bimodinv) | [
|
|
5327
|
-
| [biModMul](#variable-bimodmul) | [
|
|
5328
|
-
| [biModPow](#variable-bimodpow) | [
|
|
5329
|
-
| [biModSqr](#variable-bimodsqr) | [
|
|
5492
|
+
| [BI_EIGHT](#variable-bi_eight) | [biModSub](#variable-bimodsub) | [rightShift](#variable-rightshift) |
|
|
5493
|
+
| [BI_FOUR](#variable-bi_four) | [checkBit](#variable-checkbit) | [ripemd160](#variable-ripemd160) |
|
|
5494
|
+
| [BI_ONE](#variable-bi_one) | [encode](#variable-encode) | [scalarMultiplyWNAF](#variable-scalarmultiplywnaf) |
|
|
5495
|
+
| [BI_THREE](#variable-bi_three) | [exclusiveOR](#variable-exclusiveor) | [sha1](#variable-sha1) |
|
|
5496
|
+
| [BI_TWO](#variable-bi_two) | [fromBase58](#variable-frombase58) | [sha256](#variable-sha256) |
|
|
5497
|
+
| [BI_ZERO](#variable-bi_zero) | [fromBase58Check](#variable-frombase58check) | [sha256hmac](#variable-sha256hmac) |
|
|
5498
|
+
| [GX_BIGINT](#variable-gx_bigint) | [getBytes](#variable-getbytes) | [sha512](#variable-sha512) |
|
|
5499
|
+
| [GY_BIGINT](#variable-gy_bigint) | [getBytes64](#variable-getbytes64) | [sha512hmac](#variable-sha512hmac) |
|
|
5500
|
+
| [MASK_256](#variable-mask_256) | [hash160](#variable-hash160) | [sign](#variable-sign) |
|
|
5501
|
+
| [N_BIGINT](#variable-n_bigint) | [hash256](#variable-hash256) | [toArray](#variable-toarray) |
|
|
5502
|
+
| [P_BIGINT](#variable-p_bigint) | [incrementLeastSignificantThirtyTwoBits](#variable-incrementleastsignificantthirtytwobits) | [toBase58](#variable-tobase58) |
|
|
5503
|
+
| [P_PLUS1_DIV4](#variable-p_plus1_div4) | [jpAdd](#variable-jpadd) | [toBase58Check](#variable-tobase58check) |
|
|
5504
|
+
| [biMod](#variable-bimod) | [jpDouble](#variable-jpdouble) | [toHex](#variable-tohex) |
|
|
5505
|
+
| [biModAdd](#variable-bimodadd) | [jpNeg](#variable-jpneg) | [toUTF8](#variable-toutf8) |
|
|
5506
|
+
| [biModInv](#variable-bimodinv) | [minimallyEncode](#variable-minimallyencode) | [toUint8Array](#variable-touint8array) |
|
|
5507
|
+
| [biModMul](#variable-bimodmul) | [modInvN](#variable-modinvn) | [verify](#variable-verify) |
|
|
5508
|
+
| [biModPow](#variable-bimodpow) | [modMulN](#variable-modmuln) | [zero2](#variable-zero2) |
|
|
5509
|
+
| [biModSqr](#variable-bimodsqr) | [modN](#variable-modn) | |
|
|
5510
|
+
| [biModSqrt](#variable-bimodsqrt) | [multiply](#variable-multiply) | |
|
|
5330
5511
|
|
|
5331
5512
|
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
5332
5513
|
|
|
@@ -5923,16 +6104,18 @@ multiply = function (block0: Bytes, block1: Bytes): Bytes {
|
|
|
5923
6104
|
const v = block1.slice();
|
|
5924
6105
|
const z = createZeroBlock(16);
|
|
5925
6106
|
for (let i = 0; i < 16; i++) {
|
|
6107
|
+
const b = block0[i];
|
|
5926
6108
|
for (let j = 7; j >= 0; j--) {
|
|
5927
|
-
|
|
5928
|
-
|
|
6109
|
+
const bit = (b >> j) & 1;
|
|
6110
|
+
const mask = -bit & 255;
|
|
6111
|
+
for (let k = 0; k < 16; k++) {
|
|
6112
|
+
z[k] ^= v[k] & mask;
|
|
5929
6113
|
}
|
|
5930
|
-
|
|
5931
|
-
|
|
5932
|
-
|
|
5933
|
-
|
|
5934
|
-
|
|
5935
|
-
rightShift(v);
|
|
6114
|
+
const lsb = v[15] & 1;
|
|
6115
|
+
const rmask = -lsb & 255;
|
|
6116
|
+
rightShift(v);
|
|
6117
|
+
for (let k = 0; k < 16; k++) {
|
|
6118
|
+
v[k] ^= R[k] & rmask;
|
|
5936
6119
|
}
|
|
5937
6120
|
}
|
|
5938
6121
|
}
|
|
@@ -6109,9 +6292,13 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
|
|
|
6109
6292
|
|
|
6110
6293
|
```ts
|
|
6111
6294
|
sign = (msg: BigNumber, key: BigNumber, forceLowS: boolean = false, customK?: BigNumber | ((iter: number) => BigNumber)): Signature => {
|
|
6295
|
+
const nBitLength = curve.n.bitLength();
|
|
6296
|
+
if (msg.bitLength() > nBitLength) {
|
|
6297
|
+
throw new Error(`ECDSA message is too large: expected <= ${nBitLength} bits. Callers must hash messages before signing.`);
|
|
6298
|
+
}
|
|
6112
6299
|
msg = truncateToN(msg);
|
|
6113
|
-
const msgBig =
|
|
6114
|
-
const keyBig =
|
|
6300
|
+
const msgBig = bnToBigInt(msg);
|
|
6301
|
+
const keyBig = bnToBigInt(key);
|
|
6115
6302
|
const bkey = key.toArray("be", bytes);
|
|
6116
6303
|
const nonce = msg.toArray("be", bytes);
|
|
6117
6304
|
const drbg = new DRBG(bkey, nonce);
|
|
@@ -6121,26 +6308,24 @@ sign = (msg: BigNumber, key: BigNumber, forceLowS: boolean = false, customK?: Bi
|
|
|
6121
6308
|
: BigNumber.isBN(customK)
|
|
6122
6309
|
? customK
|
|
6123
6310
|
: new BigNumber(drbg.generate(bytes), 16);
|
|
6124
|
-
if (kBN == null)
|
|
6311
|
+
if (kBN == null) {
|
|
6125
6312
|
throw new Error("k is undefined");
|
|
6313
|
+
}
|
|
6126
6314
|
kBN = truncateToN(kBN, true);
|
|
6127
6315
|
if (kBN.cmpn(1) < 0 || kBN.cmp(ns1) > 0) {
|
|
6128
6316
|
if (BigNumber.isBN(customK)) {
|
|
6129
|
-
throw new Error("Invalid fixed custom K value (must be >1 and <N
|
|
6317
|
+
throw new Error("Invalid fixed custom K value (must be >1 and <N-1)");
|
|
6130
6318
|
}
|
|
6131
6319
|
continue;
|
|
6132
6320
|
}
|
|
6133
|
-
const
|
|
6134
|
-
|
|
6135
|
-
if (R.Z === 0n) {
|
|
6321
|
+
const R = curve.g.mulCT(kBN);
|
|
6322
|
+
if (R.isInfinity()) {
|
|
6136
6323
|
if (BigNumber.isBN(customK)) {
|
|
6137
6324
|
throw new Error("Invalid fixed custom K value (k\u00B7G at infinity)");
|
|
6138
6325
|
}
|
|
6139
6326
|
continue;
|
|
6140
6327
|
}
|
|
6141
|
-
const
|
|
6142
|
-
const zInv2 = biModMul(zInv, zInv);
|
|
6143
|
-
const xAff = biModMul(R.X, zInv2);
|
|
6328
|
+
const xAff = BigInt("0x" + R.getX().toString(16));
|
|
6144
6329
|
const rBig = modN(xAff);
|
|
6145
6330
|
if (rBig === 0n) {
|
|
6146
6331
|
if (BigNumber.isBN(customK)) {
|
|
@@ -6148,6 +6333,7 @@ sign = (msg: BigNumber, key: BigNumber, forceLowS: boolean = false, customK?: Bi
|
|
|
6148
6333
|
}
|
|
6149
6334
|
continue;
|
|
6150
6335
|
}
|
|
6336
|
+
const kBig = BigInt("0x" + kBN.toString(16));
|
|
6151
6337
|
const kInv = modInvN(kBig);
|
|
6152
6338
|
const rTimesKey = modMulN(rBig, keyBig);
|
|
6153
6339
|
const sum = modN(msgBig + rTimesKey);
|
|
@@ -6168,7 +6354,7 @@ sign = (msg: BigNumber, key: BigNumber, forceLowS: boolean = false, customK?: Bi
|
|
|
6168
6354
|
}
|
|
6169
6355
|
```
|
|
6170
6356
|
|
|
6171
|
-
See also: [BigNumber](./primitives.md#class-bignumber), [DRBG](./primitives.md#class-drbg), [
|
|
6357
|
+
See also: [BigNumber](./primitives.md#class-bignumber), [DRBG](./primitives.md#class-drbg), [N_BIGINT](./primitives.md#variable-n_bigint), [Signature](./primitives.md#class-signature), [modInvN](./primitives.md#variable-modinvn), [modMulN](./primitives.md#variable-modmuln), [modN](./primitives.md#variable-modn), [toArray](./primitives.md#variable-toarray)
|
|
6172
6358
|
|
|
6173
6359
|
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
6174
6360
|
|
|
@@ -6253,7 +6439,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
|
|
|
6253
6439
|
### Variable: toHex
|
|
6254
6440
|
|
|
6255
6441
|
```ts
|
|
6256
|
-
toHex = (msg: number[]): string => {
|
|
6442
|
+
toHex = (msg: number[] | Uint8Array): string => {
|
|
6257
6443
|
if (CAN_USE_BUFFER) {
|
|
6258
6444
|
return BufferCtor.from(msg).toString("hex");
|
|
6259
6445
|
}
|
|
@@ -6280,22 +6466,41 @@ toUTF8 = (arr: number[]): string => {
|
|
|
6280
6466
|
|
|
6281
6467
|
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
6282
6468
|
|
|
6469
|
+
---
|
|
6470
|
+
### Variable: toUint8Array
|
|
6471
|
+
|
|
6472
|
+
```ts
|
|
6473
|
+
toUint8Array = (msg: any, enc?: "hex" | "utf8" | "base64"): Uint8Array => {
|
|
6474
|
+
if (msg instanceof Uint8Array)
|
|
6475
|
+
return msg;
|
|
6476
|
+
return new Uint8Array(toArray(msg, enc));
|
|
6477
|
+
}
|
|
6478
|
+
```
|
|
6479
|
+
|
|
6480
|
+
See also: [toArray](./primitives.md#variable-toarray)
|
|
6481
|
+
|
|
6482
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Enums](#enums), [Variables](#variables)
|
|
6483
|
+
|
|
6283
6484
|
---
|
|
6284
6485
|
### Variable: verify
|
|
6285
6486
|
|
|
6286
6487
|
```ts
|
|
6287
6488
|
verify = (msg: BigNumber, sig: Signature, key: Point): boolean => {
|
|
6288
|
-
const
|
|
6489
|
+
const nBitLength = curve.n.bitLength();
|
|
6490
|
+
if (msg.bitLength() > nBitLength) {
|
|
6491
|
+
return false;
|
|
6492
|
+
}
|
|
6493
|
+
const hash = bnToBigInt(msg);
|
|
6289
6494
|
if ((key.x == null) || (key.y == null)) {
|
|
6290
6495
|
throw new Error("Invalid public key: missing coordinates.");
|
|
6291
6496
|
}
|
|
6292
6497
|
const publicKey = {
|
|
6293
|
-
x:
|
|
6294
|
-
y:
|
|
6498
|
+
x: bnToBigInt(key.x),
|
|
6499
|
+
y: bnToBigInt(key.y)
|
|
6295
6500
|
};
|
|
6296
6501
|
const signature = {
|
|
6297
|
-
r:
|
|
6298
|
-
s:
|
|
6502
|
+
r: bnToBigInt(sig.r),
|
|
6503
|
+
s: bnToBigInt(sig.s)
|
|
6299
6504
|
};
|
|
6300
6505
|
const { r, s } = signature;
|
|
6301
6506
|
const z = hash;
|