@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,9 +1,9 @@
|
|
|
1
|
-
import { sign, verify, magicHash } from '
|
|
2
|
-
import { toArray } from '
|
|
3
|
-
import PrivateKey from '
|
|
4
|
-
import PublicKey from '
|
|
5
|
-
import Signature from '
|
|
6
|
-
import BigNumber from '
|
|
1
|
+
import { sign, verify, magicHash } from '../BSM'
|
|
2
|
+
import { toArray } from '../../primitives/utils'
|
|
3
|
+
import PrivateKey from '../../primitives/PrivateKey'
|
|
4
|
+
import PublicKey from '../../primitives/PublicKey'
|
|
5
|
+
import Signature from '../../primitives/Signature'
|
|
6
|
+
import BigNumber from '../../primitives/BigNumber'
|
|
7
7
|
|
|
8
8
|
describe('BSM', () => {
|
|
9
9
|
describe('magicHash', () => {
|
|
@@ -16,14 +16,26 @@ describe('BSM', () => {
|
|
|
16
16
|
describe('sign', () => {
|
|
17
17
|
const messageBuf = toArray('this is my message', 'utf8')
|
|
18
18
|
const privateKey = new PrivateKey(42)
|
|
19
|
+
|
|
19
20
|
it('should return a signature', () => {
|
|
20
|
-
const sig = sign(messageBuf, privateKey, 'raw')
|
|
21
|
-
|
|
21
|
+
const sig = sign(messageBuf, privateKey, 'raw')
|
|
22
|
+
|
|
23
|
+
if (sig instanceof Signature) { // ✅ Explicitly check if `sig` is a Signature instance
|
|
24
|
+
const derSignature = sig.toDER()
|
|
25
|
+
expect(derSignature.length).toEqual(70)
|
|
26
|
+
} else {
|
|
27
|
+
throw new Error('Expected a Signature object, but got a different type')
|
|
28
|
+
}
|
|
22
29
|
})
|
|
30
|
+
|
|
23
31
|
it('Creates the correct base64 signature', () => {
|
|
24
|
-
const privateKey = PrivateKey.fromWif(
|
|
32
|
+
const privateKey = PrivateKey.fromWif(
|
|
33
|
+
'L211enC224G1kV8pyyq7bjVd9SxZebnRYEzzM3i7ZHCc1c5E7dQu'
|
|
34
|
+
)
|
|
25
35
|
const sig = sign(toArray('hello world', 'utf8'), privateKey, 'base64')
|
|
26
|
-
expect(sig).toEqual(
|
|
36
|
+
expect(sig).toEqual(
|
|
37
|
+
'H4T8Asr0WkC6wYfBESR6pCAfECtdsPM4fwiSQ2qndFi8dVtv/mrOFaySx9xQE7j24ugoJ4iGnsRwAC8QwaoHOXk='
|
|
38
|
+
)
|
|
27
39
|
})
|
|
28
40
|
})
|
|
29
41
|
describe('verify', () => {
|
|
@@ -32,22 +44,36 @@ describe('BSM', () => {
|
|
|
32
44
|
|
|
33
45
|
it('should verify a signed message', () => {
|
|
34
46
|
const sig = sign(messageBuf, privateKey, 'raw')
|
|
35
|
-
|
|
47
|
+
if (typeof sig !== 'string') {
|
|
48
|
+
expect(verify(messageBuf, sig, privateKey.toPublicKey())).toEqual(true)
|
|
49
|
+
} else {
|
|
50
|
+
throw new Error('Expected a Signature object, but got a string')
|
|
51
|
+
}
|
|
36
52
|
})
|
|
37
53
|
it('Should verify a signed message in base64', () => {
|
|
38
54
|
const message = toArray('Texas', 'utf8')
|
|
39
|
-
const signature = Signature.fromCompact(
|
|
40
|
-
|
|
55
|
+
const signature = Signature.fromCompact(
|
|
56
|
+
'IAV89EkfHSzAIA8cEWbbKHUYzJqcShkpWaXGJ5+mf4+YIlf3XNlr0bj9X60sNe1A7+x9qyk+zmXropMDY4370n8=',
|
|
57
|
+
'base64'
|
|
58
|
+
)
|
|
59
|
+
const publicKey = PublicKey.fromString(
|
|
60
|
+
'03d4d1a6c5d8c03b0e671bc1891b69afaecb40c0686188fe9019f93581b43e8334'
|
|
61
|
+
)
|
|
41
62
|
expect(verify(message, signature, publicKey)).toBe(true)
|
|
42
63
|
})
|
|
43
64
|
it('Should be able to calculate the recovery number for a signature and public key', () => {
|
|
44
65
|
const message = toArray('Texas', 'utf8')
|
|
45
|
-
const signature = Signature.fromCompact(
|
|
46
|
-
|
|
66
|
+
const signature = Signature.fromCompact(
|
|
67
|
+
'IAV89EkfHSzAIA8cEWbbKHUYzJqcShkpWaXGJ5+mf4+YIlf3XNlr0bj9X60sNe1A7+x9qyk+zmXropMDY4370n8=',
|
|
68
|
+
'base64'
|
|
69
|
+
)
|
|
70
|
+
const publicKey = PublicKey.fromString(
|
|
71
|
+
'03d4d1a6c5d8c03b0e671bc1891b69afaecb40c0686188fe9019f93581b43e8334'
|
|
72
|
+
)
|
|
47
73
|
const msgHash = new BigNumber(magicHash(message))
|
|
48
74
|
const recovery = signature.CalculateRecoveryFactor(publicKey, msgHash)
|
|
49
75
|
expect(recovery).toBe(1)
|
|
50
|
-
const recoveredPubkey = signature.RecoverPublicKey(recovery, msgHash)
|
|
76
|
+
const recoveredPubkey = signature.RecoverPublicKey(recovery, msgHash)
|
|
51
77
|
expect(recoveredPubkey.toDER()).toEqual(publicKey.toDER())
|
|
52
78
|
})
|
|
53
79
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import ECIES from '
|
|
2
|
-
import * as Hash from '
|
|
3
|
-
import PrivateKey from '
|
|
4
|
-
import {
|
|
1
|
+
import ECIES from '../ECIES'
|
|
2
|
+
import * as Hash from '../../primitives/Hash'
|
|
3
|
+
import PrivateKey from '../../primitives/PrivateKey'
|
|
4
|
+
import { Utils } from '../../primitives/index'
|
|
5
5
|
|
|
6
6
|
describe('#ECIES', () => {
|
|
7
7
|
it('should make a new ECIES object', () => {
|
|
@@ -10,11 +10,17 @@ describe('#ECIES', () => {
|
|
|
10
10
|
|
|
11
11
|
const fromkey = new PrivateKey(42)
|
|
12
12
|
const tokey = new PrivateKey(88)
|
|
13
|
-
const messageBuf = Hash.sha256(
|
|
13
|
+
const messageBuf = Hash.sha256(
|
|
14
|
+
Utils.toArray('my message is the hash of this string', 'utf8')
|
|
15
|
+
)
|
|
14
16
|
|
|
15
17
|
describe('@bitcoreEncrypt', () => {
|
|
16
18
|
it('should return a buffer', () => {
|
|
17
|
-
const encBuf = ECIES.bitcoreEncrypt(
|
|
19
|
+
const encBuf = ECIES.bitcoreEncrypt(
|
|
20
|
+
messageBuf,
|
|
21
|
+
tokey.toPublicKey(),
|
|
22
|
+
fromkey
|
|
23
|
+
)
|
|
18
24
|
expect(Array.isArray(encBuf)).toEqual(true)
|
|
19
25
|
})
|
|
20
26
|
|
|
@@ -26,9 +32,13 @@ describe('#ECIES', () => {
|
|
|
26
32
|
|
|
27
33
|
describe('@bitcoreDecrypt', () => {
|
|
28
34
|
it('should decrypt that which was encrypted', () => {
|
|
29
|
-
const encBuf = ECIES.bitcoreEncrypt(
|
|
35
|
+
const encBuf = ECIES.bitcoreEncrypt(
|
|
36
|
+
messageBuf,
|
|
37
|
+
tokey.toPublicKey(),
|
|
38
|
+
fromkey
|
|
39
|
+
)
|
|
30
40
|
const messageBuf2 = ECIES.bitcoreDecrypt(encBuf, tokey)
|
|
31
|
-
expect(toHex(messageBuf2)).toEqual(toHex(messageBuf))
|
|
41
|
+
expect(Utils.toHex(messageBuf2)).toEqual(Utils.toHex(messageBuf))
|
|
32
42
|
})
|
|
33
43
|
|
|
34
44
|
it('should decrypt that which was encrypted if fromPrivateKey was randomly generated', () => {
|
|
@@ -41,57 +51,104 @@ describe('#ECIES', () => {
|
|
|
41
51
|
describe('Electrum ECIES', () => {
|
|
42
52
|
// const alicePrivateKey = PrivateKey.fromString('L1Ejc5dAigm5XrM3mNptMEsNnHzS7s51YxU7J61ewGshZTKkbmzJ')
|
|
43
53
|
// const bobPrivateKey = PrivateKey.fromString('KxfxrUXSMjJQcb3JgnaaA6MqsrKQ1nBSxvhuigdKRyFiEm6BZDgG')
|
|
44
|
-
const alicePrivateKey = PrivateKey.fromString(
|
|
45
|
-
|
|
54
|
+
const alicePrivateKey = PrivateKey.fromString(
|
|
55
|
+
'77e06abc52bf065cb5164c5deca839d0276911991a2730be4d8d0a0307de7ceb',
|
|
56
|
+
16
|
|
57
|
+
)
|
|
58
|
+
const bobPrivateKey = PrivateKey.fromString(
|
|
59
|
+
'2b57c7c5e408ce927eef5e2efb49cfdadde77961d342daa72284bb3d6590862d',
|
|
60
|
+
16
|
|
61
|
+
)
|
|
46
62
|
|
|
47
63
|
it('should do these test vectors correctly', () => {
|
|
48
|
-
const message = toArray('this is my test message', 'utf8')
|
|
49
|
-
|
|
50
|
-
expect(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.toEqual(message)
|
|
58
|
-
expect(ECIES.electrumDecrypt(
|
|
59
|
-
toArray(
|
|
60
|
-
'QklFMQM55QTWSSsILaluEejwOXlrBs1IVcEB4kkqbxDz4Fap53XHOt6L3tKmrXho6yj6phfoiMkBOhUldRPnEI4fSZXbvZJHgyAzxA6SoujduvJXv+A9ri3po9veilrmc8p6dwo=',
|
|
61
|
-
'base64'
|
|
62
|
-
),
|
|
63
|
-
bobPrivateKey
|
|
64
|
-
))
|
|
65
|
-
.toEqual(message)
|
|
66
|
-
|
|
67
|
-
expect(toBase64(
|
|
68
|
-
ECIES.electrumEncrypt(message, bobPrivateKey.toPublicKey(), alicePrivateKey)
|
|
69
|
-
))
|
|
70
|
-
.toEqual(
|
|
71
|
-
'QklFMQM55QTWSSsILaluEejwOXlrBs1IVcEB4kkqbxDz4Fap53XHOt6L3tKmrXho6yj6phfoiMkBOhUldRPnEI4fSZXbvZJHgyAzxA6SoujduvJXv+A9ri3po9veilrmc8p6dwo='
|
|
64
|
+
const message = Utils.toArray('this is my test message', 'utf8')
|
|
65
|
+
|
|
66
|
+
expect(
|
|
67
|
+
ECIES.electrumDecrypt(
|
|
68
|
+
Utils.toArray(
|
|
69
|
+
'QklFMQOGFyMXLo9Qv047K3BYJhmnJgt58EC8skYP/R2QU/U0yXXHOt6L3tKmrXho6yj6phfoiMkBOhUldRPnEI4fSZXbiaH4FsxKIOOvzolIFVAS0FplUmib2HnlAM1yP/iiPsU=',
|
|
70
|
+
'base64'
|
|
71
|
+
),
|
|
72
|
+
alicePrivateKey
|
|
72
73
|
)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
).toEqual(message)
|
|
75
|
+
expect(
|
|
76
|
+
ECIES.electrumDecrypt(
|
|
77
|
+
Utils.toArray(
|
|
78
|
+
'QklFMQM55QTWSSsILaluEejwOXlrBs1IVcEB4kkqbxDz4Fap53XHOt6L3tKmrXho6yj6phfoiMkBOhUldRPnEI4fSZXbvZJHgyAzxA6SoujduvJXv+A9ri3po9veilrmc8p6dwo=',
|
|
79
|
+
'base64'
|
|
80
|
+
),
|
|
81
|
+
bobPrivateKey
|
|
76
82
|
)
|
|
83
|
+
).toEqual(message)
|
|
84
|
+
|
|
85
|
+
expect(
|
|
86
|
+
Utils.toBase64(
|
|
87
|
+
ECIES.electrumEncrypt(
|
|
88
|
+
message,
|
|
89
|
+
bobPrivateKey.toPublicKey(),
|
|
90
|
+
alicePrivateKey
|
|
91
|
+
)
|
|
92
|
+
)
|
|
93
|
+
).toEqual(
|
|
94
|
+
'QklFMQM55QTWSSsILaluEejwOXlrBs1IVcEB4kkqbxDz4Fap53XHOt6L3tKmrXho6yj6phfoiMkBOhUldRPnEI4fSZXbvZJHgyAzxA6SoujduvJXv+A9ri3po9veilrmc8p6dwo='
|
|
95
|
+
)
|
|
96
|
+
expect(
|
|
97
|
+
Utils.toBase64(
|
|
98
|
+
ECIES.electrumEncrypt(
|
|
99
|
+
message,
|
|
100
|
+
alicePrivateKey.toPublicKey(),
|
|
101
|
+
bobPrivateKey
|
|
102
|
+
)
|
|
103
|
+
)
|
|
104
|
+
).toEqual(
|
|
105
|
+
'QklFMQOGFyMXLo9Qv047K3BYJhmnJgt58EC8skYP/R2QU/U0yXXHOt6L3tKmrXho6yj6phfoiMkBOhUldRPnEI4fSZXbiaH4FsxKIOOvzolIFVAS0FplUmib2HnlAM1yP/iiPsU='
|
|
106
|
+
)
|
|
77
107
|
})
|
|
78
108
|
|
|
79
109
|
it('should encrypt and decrypt symmetrically with matching strings in ECDH noKey mode', () => {
|
|
80
|
-
const message = toArray('this is my ECDH test message', 'utf8')
|
|
81
|
-
const ecdhMessageEncryptedBob = ECIES.electrumEncrypt(
|
|
82
|
-
|
|
110
|
+
const message = Utils.toArray('this is my ECDH test message', 'utf8')
|
|
111
|
+
const ecdhMessageEncryptedBob = ECIES.electrumEncrypt(
|
|
112
|
+
message,
|
|
113
|
+
bobPrivateKey.toPublicKey(),
|
|
114
|
+
alicePrivateKey,
|
|
115
|
+
true
|
|
116
|
+
)
|
|
117
|
+
const ecdhMessageEncryptedAlice = ECIES.electrumEncrypt(
|
|
118
|
+
message,
|
|
119
|
+
alicePrivateKey.toPublicKey(),
|
|
120
|
+
bobPrivateKey,
|
|
121
|
+
true
|
|
122
|
+
)
|
|
83
123
|
expect(ecdhMessageEncryptedBob).toEqual(ecdhMessageEncryptedAlice)
|
|
84
|
-
expect(
|
|
85
|
-
.
|
|
86
|
-
|
|
87
|
-
|
|
124
|
+
expect(
|
|
125
|
+
ECIES.electrumDecrypt(
|
|
126
|
+
ecdhMessageEncryptedAlice,
|
|
127
|
+
bobPrivateKey,
|
|
128
|
+
alicePrivateKey.toPublicKey()
|
|
129
|
+
)
|
|
130
|
+
).toEqual(Utils.toArray('this is my ECDH test message', 'utf8'))
|
|
131
|
+
expect(
|
|
132
|
+
ECIES.electrumDecrypt(
|
|
133
|
+
ecdhMessageEncryptedBob,
|
|
134
|
+
alicePrivateKey,
|
|
135
|
+
bobPrivateKey.toPublicKey()
|
|
136
|
+
)
|
|
137
|
+
).toEqual(Utils.toArray('this is my ECDH test message', 'utf8'))
|
|
88
138
|
})
|
|
89
139
|
|
|
90
140
|
it('should encrypt and decrypt using ephemeral fromPrivateKey', () => {
|
|
91
|
-
const message = toArray(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
141
|
+
const message = Utils.toArray(
|
|
142
|
+
'this is my ephemeral key test message',
|
|
143
|
+
'utf8'
|
|
144
|
+
)
|
|
145
|
+
const encryptedMessage = ECIES.electrumEncrypt(
|
|
146
|
+
message,
|
|
147
|
+
bobPrivateKey.toPublicKey()
|
|
148
|
+
)
|
|
149
|
+
expect(ECIES.electrumDecrypt(encryptedMessage, bobPrivateKey)).toEqual(
|
|
150
|
+
message
|
|
151
|
+
)
|
|
95
152
|
})
|
|
96
153
|
|
|
97
154
|
it('should encrypt and decrypt message with counterparty public key', () => {
|
|
@@ -99,19 +156,27 @@ describe('#ECIES', () => {
|
|
|
99
156
|
const senderPrivateKey = PrivateKey.fromWif(wif)
|
|
100
157
|
const senderPublicKey = senderPrivateKey.toPublicKey()
|
|
101
158
|
const msgStr = 'hello world'
|
|
102
|
-
const messageBuf = toArray(msgStr, 'utf8')
|
|
159
|
+
const messageBuf = Utils.toArray(msgStr, 'utf8')
|
|
103
160
|
|
|
104
161
|
// Create a random counterparty (recipient) public/private key pair
|
|
105
162
|
const recipientPrivateKey = PrivateKey.fromRandom()
|
|
106
163
|
const recipientPublicKey = recipientPrivateKey.toPublicKey()
|
|
107
164
|
|
|
108
165
|
// Encrypt the message using electrumEncrypt
|
|
109
|
-
const encryptedMessage = ECIES.electrumEncrypt(
|
|
166
|
+
const encryptedMessage = ECIES.electrumEncrypt(
|
|
167
|
+
messageBuf,
|
|
168
|
+
recipientPublicKey,
|
|
169
|
+
senderPrivateKey
|
|
170
|
+
)
|
|
110
171
|
|
|
111
172
|
// Decrypt the message using electrumDecrypt
|
|
112
|
-
const decryptedMessageBuf = ECIES.electrumDecrypt(
|
|
173
|
+
const decryptedMessageBuf = ECIES.electrumDecrypt(
|
|
174
|
+
encryptedMessage,
|
|
175
|
+
recipientPrivateKey,
|
|
176
|
+
senderPublicKey
|
|
177
|
+
)
|
|
113
178
|
|
|
114
|
-
const decryptedMsgStr = toUTF8(decryptedMessageBuf)
|
|
179
|
+
const decryptedMsgStr = Utils.toUTF8(decryptedMessageBuf)
|
|
115
180
|
|
|
116
181
|
expect(decryptedMsgStr).toEqual(msgStr)
|
|
117
182
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import HD from '
|
|
2
|
-
import { fromBase58Check, toArray, toHex } from '
|
|
1
|
+
import HD from '../HD'
|
|
2
|
+
import { fromBase58Check, toArray, toHex } from '../../primitives/utils'
|
|
3
3
|
|
|
4
4
|
describe('HD', () => {
|
|
5
5
|
it('should satisfy these basic API features', () => {
|
|
@@ -10,64 +10,64 @@ describe('HD', () => {
|
|
|
10
10
|
// test vectors: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
|
|
11
11
|
const vector1master = '000102030405060708090a0b0c0d0e0f'
|
|
12
12
|
const vector1mPublic =
|
|
13
|
-
|
|
13
|
+
'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8'
|
|
14
14
|
const vector1mPrivate =
|
|
15
|
-
|
|
15
|
+
'xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi'
|
|
16
16
|
const vector1m0hPublic =
|
|
17
|
-
|
|
17
|
+
'xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw'
|
|
18
18
|
const vector1m0hPrivate =
|
|
19
|
-
|
|
19
|
+
'xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7'
|
|
20
20
|
const vector1m0h1Public =
|
|
21
|
-
|
|
21
|
+
'xpub6ASuArnXKPbfEwhqN6e3mwBcDTgzisQN1wXN9BJcM47sSikHjJf3UFHKkNAWbWMiGj7Wf5uMash7SyYq527Hqck2AxYysAA7xmALppuCkwQ'
|
|
22
22
|
const vector1m0h1Private =
|
|
23
|
-
|
|
23
|
+
'xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs'
|
|
24
24
|
const vector1m0h12hPublic =
|
|
25
|
-
|
|
25
|
+
'xpub6D4BDPcP2GT577Vvch3R8wDkScZWzQzMMUm3PWbmWvVJrZwQY4VUNgqFJPMM3No2dFDFGTsxxpG5uJh7n7epu4trkrX7x7DogT5Uv6fcLW5'
|
|
26
26
|
const vector1m0h12hPrivate =
|
|
27
|
-
|
|
27
|
+
'xprv9z4pot5VBttmtdRTWfWQmoH1taj2axGVzFqSb8C9xaxKymcFzXBDptWmT7FwuEzG3ryjH4ktypQSAewRiNMjANTtpgP4mLTj34bhnZX7UiM'
|
|
28
28
|
const vector1m0h12h2Public =
|
|
29
|
-
|
|
29
|
+
'xpub6FHa3pjLCk84BayeJxFW2SP4XRrFd1JYnxeLeU8EqN3vDfZmbqBqaGJAyiLjTAwm6ZLRQUMv1ZACTj37sR62cfN7fe5JnJ7dh8zL4fiyLHV'
|
|
30
30
|
const vector1m0h12h2Private =
|
|
31
|
-
|
|
31
|
+
'xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334'
|
|
32
32
|
const vector1m0h12h21000000000Public =
|
|
33
|
-
|
|
33
|
+
'xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy'
|
|
34
34
|
const vector1m0h12h21000000000Private =
|
|
35
|
-
|
|
35
|
+
'xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76'
|
|
36
36
|
const vector2master =
|
|
37
|
-
|
|
37
|
+
'fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542'
|
|
38
38
|
const vector2mPublic =
|
|
39
|
-
|
|
39
|
+
'xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB'
|
|
40
40
|
const vector2mPrivate =
|
|
41
|
-
|
|
41
|
+
'xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U'
|
|
42
42
|
const vector2m0Public =
|
|
43
|
-
|
|
43
|
+
'xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH'
|
|
44
44
|
const vector2m0Private =
|
|
45
|
-
|
|
45
|
+
'xprv9vHkqa6EV4sPZHYqZznhT2NPtPCjKuDKGY38FBWLvgaDx45zo9WQRUT3dKYnjwih2yJD9mkrocEZXo1ex8G81dwSM1fwqWpWkeS3v86pgKt'
|
|
46
46
|
const vector2m02147483647hPublic =
|
|
47
|
-
|
|
47
|
+
'xpub6ASAVgeehLbnwdqV6UKMHVzgqAG8Gr6riv3Fxxpj8ksbH9ebxaEyBLZ85ySDhKiLDBrQSARLq1uNRts8RuJiHjaDMBU4Zn9h8LZNnBC5y4a'
|
|
48
48
|
const vector2m02147483647hPrivate =
|
|
49
|
-
|
|
49
|
+
'xprv9wSp6B7kry3Vj9m1zSnLvN3xH8RdsPP1Mh7fAaR7aRLcQMKTR2vidYEeEg2mUCTAwCd6vnxVrcjfy2kRgVsFawNzmjuHc2YmYRmagcEPdU9'
|
|
50
50
|
const vector2m02147483647h1Public =
|
|
51
|
-
|
|
51
|
+
'xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon'
|
|
52
52
|
const vector2m02147483647h1Private =
|
|
53
|
-
|
|
53
|
+
'xprv9zFnWC6h2cLgpmSA46vutJzBcfJ8yaJGg8cX1e5StJh45BBciYTRXSd25UEPVuesF9yog62tGAQtHjXajPPdbRCHuWS6T8XA2ECKADdw4Ef'
|
|
54
54
|
const vector2m02147483647h12147483646hPublic =
|
|
55
|
-
|
|
55
|
+
'xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL'
|
|
56
56
|
const vector2m02147483647h12147483646hPrivate =
|
|
57
|
-
|
|
57
|
+
'xprvA1RpRA33e1JQ7ifknakTFpgNXPmW2YvmhqLQYMmrj4xJXXWYpDPS3xz7iAxn8L39njGVyuoseXzU6rcxFLJ8HFsTjSyQbLYnMpCqE2VbFWc'
|
|
58
58
|
const vector2m02147483647h12147483646h2Public =
|
|
59
|
-
|
|
59
|
+
'xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt'
|
|
60
60
|
const vector2m02147483647h12147483646h2Private =
|
|
61
|
-
|
|
61
|
+
'xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j'
|
|
62
|
+
|
|
63
|
+
it('should make a new bip32', () => {
|
|
64
|
+
const bip32 = new HD() // ✅ Use `const` instead of `let`
|
|
62
65
|
|
|
63
|
-
it('should make a new a bip32', () => {
|
|
64
|
-
let bip32
|
|
65
|
-
bip32 = new HD()
|
|
66
66
|
expect(bip32).toBeDefined()
|
|
67
67
|
expect(HD.fromString(vector1mPrivate).toString()).toEqual(vector1mPrivate)
|
|
68
|
-
expect(
|
|
69
|
-
.toString())
|
|
70
|
-
|
|
68
|
+
expect(
|
|
69
|
+
HD.fromString(HD.fromString(vector1mPrivate).toString()).toString()
|
|
70
|
+
).toEqual(vector1mPrivate)
|
|
71
71
|
})
|
|
72
72
|
|
|
73
73
|
it('should initialize test vector 1 from the extended public key', () => {
|
|
@@ -179,7 +179,9 @@ describe('HD', () => {
|
|
|
179
179
|
const childPub = HD.fromString(child.toPublic().toString())
|
|
180
180
|
const child2 = childPub.derive('m/1000000000')
|
|
181
181
|
expect(child2).toBeDefined()
|
|
182
|
-
expect(child2.toPublic().toString()).toEqual(
|
|
182
|
+
expect(child2.toPublic().toString()).toEqual(
|
|
183
|
+
vector1m0h12h21000000000Public
|
|
184
|
+
)
|
|
183
185
|
})
|
|
184
186
|
|
|
185
187
|
it('should initialize test vector 2 from the extended public key', () => {
|
|
@@ -268,7 +270,9 @@ describe('HD', () => {
|
|
|
268
270
|
const bip32 = HD.fromString(vector2mPrivate)
|
|
269
271
|
const child = bip32.derive("m/0/2147483647'/1/2147483646'")
|
|
270
272
|
expect(child).toBeDefined()
|
|
271
|
-
expect(child.toPublic().toString()).toEqual(
|
|
273
|
+
expect(child.toPublic().toString()).toEqual(
|
|
274
|
+
vector2m02147483647h12147483646hPublic
|
|
275
|
+
)
|
|
272
276
|
})
|
|
273
277
|
|
|
274
278
|
it('should get m/0/2147483647h/1/2147483646h/2 ext. private key from test vector 2', () => {
|
|
@@ -282,7 +286,9 @@ describe('HD', () => {
|
|
|
282
286
|
const bip32 = HD.fromString(vector2mPrivate)
|
|
283
287
|
const child = bip32.derive("m/0/2147483647'/1/2147483646'/2")
|
|
284
288
|
expect(child).toBeDefined()
|
|
285
|
-
expect(child.toPublic().toString()).toEqual(
|
|
289
|
+
expect(child.toPublic().toString()).toEqual(
|
|
290
|
+
vector2m02147483647h12147483646h2Public
|
|
291
|
+
)
|
|
286
292
|
})
|
|
287
293
|
|
|
288
294
|
it('should get m/0/2147483647h/1/2147483646h/2 ext. public key from m/0/2147483647h/2147483646h public key from test vector 2', () => {
|
|
@@ -291,7 +297,9 @@ describe('HD', () => {
|
|
|
291
297
|
const childPub = HD.fromString(child.toPublic().toString())
|
|
292
298
|
const child2 = childPub.derive('m/2')
|
|
293
299
|
expect(child2).toBeDefined()
|
|
294
|
-
expect(child2.toPublic().toString()).toEqual(
|
|
300
|
+
expect(child2.toPublic().toString()).toEqual(
|
|
301
|
+
vector2m02147483647h12147483646h2Public
|
|
302
|
+
)
|
|
295
303
|
})
|
|
296
304
|
|
|
297
305
|
describe('#fromRandom', () => {
|
|
@@ -349,9 +357,12 @@ describe('HD', () => {
|
|
|
349
357
|
describe('#fromBinary', () => {
|
|
350
358
|
it('should make a bip32 from binary', () => {
|
|
351
359
|
const str =
|
|
352
|
-
|
|
360
|
+
'xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi'
|
|
353
361
|
const buf = fromBase58Check(str)
|
|
354
|
-
let bip32 = HD.fromBinary([
|
|
362
|
+
let bip32 = HD.fromBinary([
|
|
363
|
+
...(buf.prefix as number[]),
|
|
364
|
+
...(buf.data as number[])
|
|
365
|
+
])
|
|
355
366
|
expect(bip32).toBeDefined()
|
|
356
367
|
expect(bip32.toString()).toEqual(str)
|
|
357
368
|
bip32 = bip32.toPublic()
|
|
@@ -364,17 +375,19 @@ describe('HD', () => {
|
|
|
364
375
|
describe('#toBinary', () => {
|
|
365
376
|
it('should return a bip32 buffer', () => {
|
|
366
377
|
const str =
|
|
367
|
-
|
|
378
|
+
'xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi'
|
|
368
379
|
const buf = fromBase58Check(str)
|
|
369
380
|
const bip32 = HD.fromString(str)
|
|
370
|
-
expect(toHex(bip32.toBinary())).toEqual(
|
|
381
|
+
expect(toHex(bip32.toBinary())).toEqual(
|
|
382
|
+
toHex([...(buf.prefix as number[]), ...(buf.data as number[])])
|
|
383
|
+
)
|
|
371
384
|
})
|
|
372
385
|
})
|
|
373
386
|
|
|
374
387
|
describe('#fromString', () => {
|
|
375
388
|
it('should make a bip32 from a string', () => {
|
|
376
389
|
const str =
|
|
377
|
-
|
|
390
|
+
'xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi'
|
|
378
391
|
const bip32 = HD.fromString(str)
|
|
379
392
|
expect(bip32).toBeDefined()
|
|
380
393
|
expect(bip32.toString()).toEqual(str)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import Mnemonic from '
|
|
2
|
-
import { wordList as enWordList } from '
|
|
3
|
-
import Random from '
|
|
1
|
+
import Mnemonic from '../Mnemonic'
|
|
2
|
+
import { wordList as enWordList } from '../bip-39-wordlist-en'
|
|
3
|
+
import Random from '../../primitives/Random'
|
|
4
4
|
import vectors from './Mnemonic.vectors'
|
|
5
|
-
import HD from '
|
|
6
|
-
import { toBase58Check, toHex, toArray } from '
|
|
5
|
+
import HD from '../HD'
|
|
6
|
+
import { toBase58Check, toHex, toArray } from '../../primitives/utils'
|
|
7
7
|
|
|
8
8
|
describe('Mnemonic', function () {
|
|
9
9
|
it('should initialize the class', () => {
|
|
@@ -22,18 +22,18 @@ describe('Mnemonic', function () {
|
|
|
22
22
|
//
|
|
23
23
|
// More information here:
|
|
24
24
|
// https://github.com/iancoleman/bip39/issues/58
|
|
25
|
-
const seed = Mnemonic.fromString(
|
|
26
|
-
'banana'
|
|
27
|
-
)
|
|
25
|
+
const seed = Mnemonic.fromString(
|
|
26
|
+
'fruit wave dwarf banana earth journey tattoo true farm silk olive fence'
|
|
27
|
+
).toSeed('banana')
|
|
28
28
|
let bip32 = HD.fromSeed(seed)
|
|
29
29
|
bip32 = bip32.derive("m/44'/0'/0'/0/0")
|
|
30
|
-
const pkh = bip32.pubKey.toHash()
|
|
30
|
+
const pkh = bip32.pubKey.toHash() as number[]
|
|
31
31
|
const addr = toBase58Check(pkh)
|
|
32
32
|
expect(addr).toEqual('17rxURoF96VhmkcEGCj5LNQkmN9HVhWb7F')
|
|
33
33
|
})
|
|
34
34
|
|
|
35
35
|
it('should generate a mnemonic phrase that passes the check', () => {
|
|
36
|
-
let mnemonic
|
|
36
|
+
let mnemonic: string
|
|
37
37
|
|
|
38
38
|
// should be able to make a mnemonic with or without the default wordlist
|
|
39
39
|
let m = new Mnemonic().fromRandom(128)
|
|
@@ -160,9 +160,8 @@ describe('Mnemonic', function () {
|
|
|
160
160
|
})
|
|
161
161
|
|
|
162
162
|
describe('vectors', () => {
|
|
163
|
-
// eslint-disable-next-line ban/ban
|
|
164
163
|
vectors.english.forEach((vector, v) => {
|
|
165
|
-
it('should pass english test vector ' + v, () => {
|
|
164
|
+
it('should pass english test vector ' + v.toString(), () => {
|
|
166
165
|
const entropy = toArray(vector.entropy, 'hex')
|
|
167
166
|
const m = new Mnemonic().fromEntropy(entropy)
|
|
168
167
|
expect(m.toString()).toEqual(vector.mnemonic)
|