@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,18 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Utils, PrivateKey, Hash } from '
|
|
3
|
-
import WalletWireTransceiver from '
|
|
4
|
-
import WalletWireProcessor from '
|
|
1
|
+
import { CompletedProtoWallet } from '../../../auth/certificates/__tests/CompletedProtoWallet'
|
|
2
|
+
import { Utils, PrivateKey, Hash } from '../../../primitives/index'
|
|
3
|
+
import WalletWireTransceiver from '../../../wallet/substrates/WalletWireTransceiver'
|
|
4
|
+
import WalletWireProcessor from '../../../wallet/substrates/WalletWireProcessor'
|
|
5
5
|
|
|
6
6
|
const sampleData = [3, 1, 4, 1, 5, 9]
|
|
7
7
|
|
|
8
8
|
describe('WalletWire Integration Tests', () => {
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
* This is a copy of the test suite for CompletedProtoWallet, but instead of using a CompletedProtoWallet directly, we're using it over the WalletWire.
|
|
11
|
+
* This serves as an imperfect but still useful way to ensure that the WalletWire doesn't contain serialization or deserialization issues.
|
|
12
|
+
*/
|
|
13
13
|
describe('ProtoWallet Over Wallet Wire', () => {
|
|
14
14
|
it('Throws when functions are not supported', async () => {
|
|
15
|
-
const wallet = new WalletWireTransceiver(
|
|
15
|
+
const wallet = new WalletWireTransceiver(
|
|
16
|
+
new WalletWireProcessor(new CompletedProtoWallet('anyone'))
|
|
17
|
+
)
|
|
16
18
|
await expect(() => {
|
|
17
19
|
return (wallet as any).createAction()
|
|
18
20
|
}).rejects.toThrow()
|
|
@@ -61,42 +63,88 @@ describe('WalletWire Integration Tests', () => {
|
|
|
61
63
|
}).rejects.toThrow()
|
|
62
64
|
})
|
|
63
65
|
it('Validates the BRC-3 compliance vector', async () => {
|
|
64
|
-
const wallet = new WalletWireTransceiver(
|
|
66
|
+
const wallet = new WalletWireTransceiver(
|
|
67
|
+
new WalletWireProcessor(new CompletedProtoWallet('anyone'))
|
|
68
|
+
)
|
|
65
69
|
const { valid } = await wallet.verifySignature({
|
|
66
70
|
data: Utils.toArray('BRC-3 Compliance Validated!', 'utf8'),
|
|
67
|
-
signature: [
|
|
71
|
+
signature: [
|
|
72
|
+
48, 68, 2, 32, 43, 34, 58, 156, 219, 32, 50, 70, 29, 240, 155, 137,
|
|
73
|
+
88, 60, 200, 95, 243, 198, 201, 21, 56, 82, 141, 112, 69, 196, 170,
|
|
74
|
+
73, 156, 6, 44, 48, 2, 32, 118, 125, 254, 201, 44, 87, 177, 170, 93,
|
|
75
|
+
11, 193, 134, 18, 70, 9, 31, 234, 27, 170, 177, 54, 96, 181, 140, 166,
|
|
76
|
+
196, 144, 14, 230, 118, 106, 105
|
|
77
|
+
],
|
|
68
78
|
protocolID: [2, 'BRC3 Test'],
|
|
69
79
|
keyID: '42',
|
|
70
|
-
counterparty:
|
|
80
|
+
counterparty:
|
|
81
|
+
'0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
71
82
|
})
|
|
72
83
|
expect(valid).toBe(true)
|
|
73
84
|
})
|
|
74
85
|
it('Validates the BRC-2 HMAC compliance vector', async () => {
|
|
75
|
-
const wallet = new WalletWireTransceiver(
|
|
86
|
+
const wallet = new WalletWireTransceiver(
|
|
87
|
+
new WalletWireProcessor(
|
|
88
|
+
new CompletedProtoWallet(
|
|
89
|
+
new PrivateKey(
|
|
90
|
+
'6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8',
|
|
91
|
+
'hex'
|
|
92
|
+
)
|
|
93
|
+
)
|
|
94
|
+
)
|
|
95
|
+
)
|
|
76
96
|
const { valid } = await wallet.verifyHmac({
|
|
77
97
|
data: Utils.toArray('BRC-2 HMAC Compliance Validated!', 'utf8'),
|
|
78
|
-
hmac: [
|
|
98
|
+
hmac: [
|
|
99
|
+
81, 240, 18, 153, 163, 45, 174, 85, 9, 246, 142, 125, 209, 133, 82,
|
|
100
|
+
76, 254, 103, 46, 182, 86, 59, 219, 61, 126, 30, 176, 232, 233, 100,
|
|
101
|
+
234, 14
|
|
102
|
+
],
|
|
79
103
|
protocolID: [2, 'BRC2 Test'],
|
|
80
104
|
keyID: '42',
|
|
81
|
-
counterparty:
|
|
105
|
+
counterparty:
|
|
106
|
+
'0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
82
107
|
})
|
|
83
108
|
expect(valid).toBe(true)
|
|
84
109
|
})
|
|
85
110
|
it('Validates the BRC-2 Encryption compliance vector', async () => {
|
|
86
|
-
const wallet = new WalletWireTransceiver(
|
|
111
|
+
const wallet = new WalletWireTransceiver(
|
|
112
|
+
new WalletWireProcessor(
|
|
113
|
+
new CompletedProtoWallet(
|
|
114
|
+
new PrivateKey(
|
|
115
|
+
'6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8',
|
|
116
|
+
'hex'
|
|
117
|
+
)
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
)
|
|
87
121
|
const { plaintext } = await wallet.decrypt({
|
|
88
|
-
ciphertext: [
|
|
122
|
+
ciphertext: [
|
|
123
|
+
252, 203, 216, 184, 29, 161, 223, 212, 16, 193, 94, 99, 31, 140, 99,
|
|
124
|
+
43, 61, 236, 184, 67, 54, 105, 199, 47, 11, 19, 184, 127, 2, 165, 125,
|
|
125
|
+
9, 188, 195, 196, 39, 120, 130, 213, 95, 186, 89, 64, 28, 1, 80, 20,
|
|
126
|
+
213, 159, 133, 98, 253, 128, 105, 113, 247, 197, 152, 236, 64, 166,
|
|
127
|
+
207, 113, 134, 65, 38, 58, 24, 127, 145, 140, 206, 47, 70, 146, 84,
|
|
128
|
+
186, 72, 95, 35, 154, 112, 178, 55, 72, 124
|
|
129
|
+
],
|
|
89
130
|
protocolID: [2, 'BRC2 Test'],
|
|
90
131
|
keyID: '42',
|
|
91
|
-
counterparty:
|
|
132
|
+
counterparty:
|
|
133
|
+
'0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
92
134
|
})
|
|
93
|
-
expect(Utils.toUTF8(plaintext)).toEqual(
|
|
135
|
+
expect(Utils.toUTF8(plaintext)).toEqual(
|
|
136
|
+
'BRC-2 Encryption Compliance Validated!'
|
|
137
|
+
)
|
|
94
138
|
})
|
|
95
139
|
it('Encrypts messages decryptable by the counterparty', async () => {
|
|
96
140
|
const userKey = PrivateKey.fromRandom()
|
|
97
141
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
98
|
-
const user = new WalletWireTransceiver(
|
|
99
|
-
|
|
142
|
+
const user = new WalletWireTransceiver(
|
|
143
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
144
|
+
)
|
|
145
|
+
const counterparty = new WalletWireTransceiver(
|
|
146
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
147
|
+
)
|
|
100
148
|
const { ciphertext } = await user.encrypt({
|
|
101
149
|
plaintext: sampleData,
|
|
102
150
|
protocolID: [2, 'tests'],
|
|
@@ -115,38 +163,55 @@ describe('WalletWire Integration Tests', () => {
|
|
|
115
163
|
it('Fails to decryupt messages for the wrong protocol, key, and counterparty', async () => {
|
|
116
164
|
const userKey = PrivateKey.fromRandom()
|
|
117
165
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
118
|
-
const user = new WalletWireTransceiver(
|
|
119
|
-
|
|
166
|
+
const user = new WalletWireTransceiver(
|
|
167
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
168
|
+
)
|
|
169
|
+
const counterparty = new WalletWireTransceiver(
|
|
170
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
171
|
+
)
|
|
120
172
|
const { ciphertext } = await user.encrypt({
|
|
121
173
|
plaintext: sampleData,
|
|
122
174
|
protocolID: [2, 'tests'],
|
|
123
175
|
keyID: '4',
|
|
124
176
|
counterparty: counterpartyKey.toPublicKey().toString()
|
|
125
177
|
})
|
|
126
|
-
await expect(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
178
|
+
await expect(
|
|
179
|
+
async () =>
|
|
180
|
+
await counterparty.decrypt({
|
|
181
|
+
ciphertext,
|
|
182
|
+
protocolID: [1, 'tests'],
|
|
183
|
+
keyID: '4',
|
|
184
|
+
counterparty: userKey.toPublicKey().toString()
|
|
185
|
+
})
|
|
186
|
+
).rejects.toThrow()
|
|
187
|
+
await expect(
|
|
188
|
+
async () =>
|
|
189
|
+
await counterparty.decrypt({
|
|
190
|
+
ciphertext,
|
|
191
|
+
protocolID: [2, 'tests'],
|
|
192
|
+
keyID: '5',
|
|
193
|
+
counterparty: userKey.toPublicKey().toString()
|
|
194
|
+
})
|
|
195
|
+
).rejects.toThrow()
|
|
196
|
+
await expect(
|
|
197
|
+
async () =>
|
|
198
|
+
await counterparty.decrypt({
|
|
199
|
+
ciphertext,
|
|
200
|
+
protocolID: [2, 'tests'],
|
|
201
|
+
keyID: '4',
|
|
202
|
+
counterparty: counterpartyKey.toPublicKey().toString()
|
|
203
|
+
})
|
|
204
|
+
).rejects.toThrow()
|
|
144
205
|
})
|
|
145
206
|
it('Correctly derives keys for a counterparty', async () => {
|
|
146
207
|
const userKey = PrivateKey.fromRandom()
|
|
147
208
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
148
|
-
const user = new WalletWireTransceiver(
|
|
149
|
-
|
|
209
|
+
const user = new WalletWireTransceiver(
|
|
210
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
211
|
+
)
|
|
212
|
+
const counterparty = new WalletWireTransceiver(
|
|
213
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
214
|
+
)
|
|
150
215
|
const { publicKey: identityKey } = await user.getPublicKey({
|
|
151
216
|
identityKey: true
|
|
152
217
|
})
|
|
@@ -156,19 +221,24 @@ describe('WalletWire Integration Tests', () => {
|
|
|
156
221
|
keyID: '4',
|
|
157
222
|
counterparty: counterpartyKey.toPublicKey().toString()
|
|
158
223
|
})
|
|
159
|
-
const { publicKey: derivedByCounterparty } =
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
224
|
+
const { publicKey: derivedByCounterparty } =
|
|
225
|
+
await counterparty.getPublicKey({
|
|
226
|
+
protocolID: [2, 'tests'],
|
|
227
|
+
keyID: '4',
|
|
228
|
+
counterparty: userKey.toPublicKey().toString(),
|
|
229
|
+
forSelf: true
|
|
230
|
+
})
|
|
165
231
|
expect(derivedForCounterparty).toEqual(derivedByCounterparty)
|
|
166
232
|
})
|
|
167
233
|
it('Signs messages verifiable by the counterparty', async () => {
|
|
168
234
|
const userKey = PrivateKey.fromRandom()
|
|
169
235
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
170
|
-
const user = new WalletWireTransceiver(
|
|
171
|
-
|
|
236
|
+
const user = new WalletWireTransceiver(
|
|
237
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
238
|
+
)
|
|
239
|
+
const counterparty = new WalletWireTransceiver(
|
|
240
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
241
|
+
)
|
|
172
242
|
const { signature } = await user.createSignature({
|
|
173
243
|
data: sampleData,
|
|
174
244
|
protocolID: [2, 'tests'],
|
|
@@ -188,8 +258,12 @@ describe('WalletWire Integration Tests', () => {
|
|
|
188
258
|
it('Directly signs hash of message verifiable by the counterparty', async () => {
|
|
189
259
|
const userKey = PrivateKey.fromRandom()
|
|
190
260
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
191
|
-
const user = new WalletWireTransceiver(
|
|
192
|
-
|
|
261
|
+
const user = new WalletWireTransceiver(
|
|
262
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
263
|
+
)
|
|
264
|
+
const counterparty = new WalletWireTransceiver(
|
|
265
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
266
|
+
)
|
|
193
267
|
const { signature } = await user.createSignature({
|
|
194
268
|
hashToDirectlySign: Hash.sha256(sampleData),
|
|
195
269
|
protocolID: [2, 'tests'],
|
|
@@ -217,48 +291,68 @@ describe('WalletWire Integration Tests', () => {
|
|
|
217
291
|
it('Fails to verify signature for the wrong data, protocol, key, and counterparty', async () => {
|
|
218
292
|
const userKey = PrivateKey.fromRandom()
|
|
219
293
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
220
|
-
const user = new WalletWireTransceiver(
|
|
221
|
-
|
|
294
|
+
const user = new WalletWireTransceiver(
|
|
295
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
296
|
+
)
|
|
297
|
+
const counterparty = new WalletWireTransceiver(
|
|
298
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
299
|
+
)
|
|
222
300
|
const { signature } = await user.createSignature({
|
|
223
301
|
data: sampleData,
|
|
224
302
|
protocolID: [2, 'tests'],
|
|
225
303
|
keyID: '4',
|
|
226
304
|
counterparty: counterpartyKey.toPublicKey().toString()
|
|
227
305
|
})
|
|
228
|
-
await expect(
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
306
|
+
await expect(
|
|
307
|
+
async () =>
|
|
308
|
+
await counterparty.verifySignature({
|
|
309
|
+
signature,
|
|
310
|
+
data: [0, ...sampleData],
|
|
311
|
+
protocolID: [2, 'tests'],
|
|
312
|
+
keyID: '4',
|
|
313
|
+
counterparty: userKey.toPublicKey().toString()
|
|
314
|
+
})
|
|
315
|
+
).rejects.toThrow()
|
|
316
|
+
await expect(
|
|
317
|
+
async () =>
|
|
318
|
+
await counterparty.verifySignature({
|
|
319
|
+
signature,
|
|
320
|
+
data: sampleData,
|
|
321
|
+
protocolID: [2, 'wrong'],
|
|
322
|
+
keyID: '4',
|
|
323
|
+
counterparty: userKey.toPublicKey().toString()
|
|
324
|
+
})
|
|
325
|
+
).rejects.toThrow()
|
|
326
|
+
await expect(
|
|
327
|
+
async () =>
|
|
328
|
+
await counterparty.verifySignature({
|
|
329
|
+
signature,
|
|
330
|
+
data: sampleData,
|
|
331
|
+
protocolID: [2, 'tests'],
|
|
332
|
+
keyID: '2',
|
|
333
|
+
counterparty: userKey.toPublicKey().toString()
|
|
334
|
+
})
|
|
335
|
+
).rejects.toThrow()
|
|
336
|
+
await expect(
|
|
337
|
+
async () =>
|
|
338
|
+
await counterparty.verifySignature({
|
|
339
|
+
signature,
|
|
340
|
+
data: sampleData,
|
|
341
|
+
protocolID: [2, 'tests'],
|
|
342
|
+
keyID: '4',
|
|
343
|
+
counterparty: counterpartyKey.toPublicKey().toString()
|
|
344
|
+
})
|
|
345
|
+
).rejects.toThrow()
|
|
256
346
|
})
|
|
257
347
|
it('Computes HMAC over messages verifiable by the counterparty', async () => {
|
|
258
348
|
const userKey = PrivateKey.fromRandom()
|
|
259
349
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
260
|
-
const user = new WalletWireTransceiver(
|
|
261
|
-
|
|
350
|
+
const user = new WalletWireTransceiver(
|
|
351
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
352
|
+
)
|
|
353
|
+
const counterparty = new WalletWireTransceiver(
|
|
354
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
355
|
+
)
|
|
262
356
|
const { hmac } = await user.createHmac({
|
|
263
357
|
data: sampleData,
|
|
264
358
|
protocolID: [2, 'tests'],
|
|
@@ -278,46 +372,64 @@ describe('WalletWire Integration Tests', () => {
|
|
|
278
372
|
it('Fails to verify HMAC for the wrong data, protocol, key, and counterparty', async () => {
|
|
279
373
|
const userKey = PrivateKey.fromRandom()
|
|
280
374
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
281
|
-
const user = new WalletWireTransceiver(
|
|
282
|
-
|
|
375
|
+
const user = new WalletWireTransceiver(
|
|
376
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
377
|
+
)
|
|
378
|
+
const counterparty = new WalletWireTransceiver(
|
|
379
|
+
new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
|
|
380
|
+
)
|
|
283
381
|
const { hmac } = await user.createHmac({
|
|
284
382
|
data: sampleData,
|
|
285
383
|
protocolID: [2, 'tests'],
|
|
286
384
|
keyID: '4',
|
|
287
385
|
counterparty: counterpartyKey.toPublicKey().toString()
|
|
288
386
|
})
|
|
289
|
-
await expect(
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
387
|
+
await expect(
|
|
388
|
+
async () =>
|
|
389
|
+
await counterparty.verifyHmac({
|
|
390
|
+
hmac,
|
|
391
|
+
data: [0, ...sampleData],
|
|
392
|
+
protocolID: [2, 'tests'],
|
|
393
|
+
keyID: '4',
|
|
394
|
+
counterparty: userKey.toPublicKey().toString()
|
|
395
|
+
})
|
|
396
|
+
).rejects.toThrow()
|
|
397
|
+
await expect(
|
|
398
|
+
async () =>
|
|
399
|
+
await counterparty.verifyHmac({
|
|
400
|
+
hmac,
|
|
401
|
+
data: sampleData,
|
|
402
|
+
protocolID: [2, 'wrong'],
|
|
403
|
+
keyID: '4',
|
|
404
|
+
counterparty: userKey.toPublicKey().toString()
|
|
405
|
+
})
|
|
406
|
+
).rejects.toThrow()
|
|
407
|
+
await expect(
|
|
408
|
+
async () =>
|
|
409
|
+
await counterparty.verifyHmac({
|
|
410
|
+
hmac,
|
|
411
|
+
data: sampleData,
|
|
412
|
+
protocolID: [2, 'tests'],
|
|
413
|
+
keyID: '2',
|
|
414
|
+
counterparty: userKey.toPublicKey().toString()
|
|
415
|
+
})
|
|
416
|
+
).rejects.toThrow()
|
|
417
|
+
await expect(
|
|
418
|
+
async () =>
|
|
419
|
+
await counterparty.verifyHmac({
|
|
420
|
+
hmac,
|
|
421
|
+
data: sampleData,
|
|
422
|
+
protocolID: [2, 'tests'],
|
|
423
|
+
keyID: '4',
|
|
424
|
+
counterparty: counterpartyKey.toPublicKey().toString()
|
|
425
|
+
})
|
|
426
|
+
).rejects.toThrow()
|
|
317
427
|
})
|
|
318
428
|
it('Uses anyone for creating signatures and self for other operations if no counterparty is provided', async () => {
|
|
319
429
|
const userKey = PrivateKey.fromRandom()
|
|
320
|
-
const user = new WalletWireTransceiver(
|
|
430
|
+
const user = new WalletWireTransceiver(
|
|
431
|
+
new WalletWireProcessor(new CompletedProtoWallet(userKey))
|
|
432
|
+
)
|
|
321
433
|
const { hmac } = await user.createHmac({
|
|
322
434
|
data: sampleData,
|
|
323
435
|
protocolID: [2, 'tests'],
|
|
@@ -345,7 +457,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
345
457
|
keyID: '4'
|
|
346
458
|
// counterparty=anyone is implicit for creating signatures
|
|
347
459
|
})
|
|
348
|
-
const anyone = new WalletWireTransceiver(
|
|
460
|
+
const anyone = new WalletWireTransceiver(
|
|
461
|
+
new WalletWireProcessor(new CompletedProtoWallet('anyone'))
|
|
462
|
+
)
|
|
349
463
|
const { valid: anyoneSigValid } = await anyone.verifySignature({
|
|
350
464
|
signature: anyoneSig,
|
|
351
465
|
data: sampleData,
|
|
@@ -412,8 +526,12 @@ describe('WalletWire Integration Tests', () => {
|
|
|
412
526
|
const verifierKey = PrivateKey.fromRandom()
|
|
413
527
|
|
|
414
528
|
// Initialize wallets
|
|
415
|
-
const proverWallet = new WalletWireTransceiver(
|
|
416
|
-
|
|
529
|
+
const proverWallet = new WalletWireTransceiver(
|
|
530
|
+
new WalletWireProcessor(new CompletedProtoWallet(proverKey))
|
|
531
|
+
)
|
|
532
|
+
const verifierWallet = new WalletWireTransceiver(
|
|
533
|
+
new WalletWireProcessor(new CompletedProtoWallet(verifierKey))
|
|
534
|
+
)
|
|
417
535
|
|
|
418
536
|
// Prover reveals counterparty key linkage
|
|
419
537
|
const revelation = await proverWallet.revealCounterpartyKeyLinkage({
|
|
@@ -430,7 +548,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
430
548
|
})
|
|
431
549
|
|
|
432
550
|
// Compute expected linkage
|
|
433
|
-
const expectedLinkage = proverKey
|
|
551
|
+
const expectedLinkage = proverKey
|
|
552
|
+
.deriveSharedSecret(counterpartyKey.toPublicKey())
|
|
553
|
+
.encode(true)
|
|
434
554
|
|
|
435
555
|
// Compare linkage and expectedLinkage
|
|
436
556
|
expect(linkage).toEqual(expectedLinkage)
|
|
@@ -443,8 +563,12 @@ describe('WalletWire Integration Tests', () => {
|
|
|
443
563
|
const verifierKey = PrivateKey.fromRandom()
|
|
444
564
|
|
|
445
565
|
// Initialize wallets
|
|
446
|
-
const proverWallet = new WalletWireTransceiver(
|
|
447
|
-
|
|
566
|
+
const proverWallet = new WalletWireTransceiver(
|
|
567
|
+
new WalletWireProcessor(new CompletedProtoWallet(proverKey))
|
|
568
|
+
)
|
|
569
|
+
const verifierWallet = new WalletWireTransceiver(
|
|
570
|
+
new WalletWireProcessor(new CompletedProtoWallet(verifierKey))
|
|
571
|
+
)
|
|
448
572
|
|
|
449
573
|
const protocolID: [0 | 1 | 2, string] = [0, 'tests']
|
|
450
574
|
const keyID = 'test key id'
|
|
@@ -462,18 +586,27 @@ describe('WalletWire Integration Tests', () => {
|
|
|
462
586
|
// Verifier decrypts the encrypted linkage
|
|
463
587
|
const { plaintext: linkage } = await verifierWallet.decrypt({
|
|
464
588
|
ciphertext: revelation.encryptedLinkage,
|
|
465
|
-
protocolID: [
|
|
589
|
+
protocolID: [
|
|
590
|
+
2,
|
|
591
|
+
`specific linkage revelation ${protocolID[0]} ${protocolID[1]}`
|
|
592
|
+
],
|
|
466
593
|
keyID,
|
|
467
594
|
counterparty: proverKey.toPublicKey().toString()
|
|
468
595
|
})
|
|
469
596
|
|
|
470
597
|
// Compute expected linkage
|
|
471
|
-
const sharedSecret = proverKey
|
|
598
|
+
const sharedSecret = proverKey
|
|
599
|
+
.deriveSharedSecret(counterpartyKey.toPublicKey())
|
|
600
|
+
.encode(true)
|
|
472
601
|
|
|
473
602
|
// Function to compute the invoice number
|
|
474
|
-
const computeInvoiceNumber = function (protocolID, keyID) {
|
|
603
|
+
const computeInvoiceNumber = function (protocolID: [number, string], keyID: string): string {
|
|
475
604
|
const securityLevel = protocolID[0]
|
|
476
|
-
if (
|
|
605
|
+
if (
|
|
606
|
+
!Number.isInteger(securityLevel) ||
|
|
607
|
+
securityLevel < 0 ||
|
|
608
|
+
securityLevel > 2
|
|
609
|
+
) {
|
|
477
610
|
throw new Error('Protocol security level must be 0, 1, or 2')
|
|
478
611
|
}
|
|
479
612
|
const protocolName = protocolID[1].toLowerCase().trim()
|
|
@@ -490,10 +623,14 @@ describe('WalletWire Integration Tests', () => {
|
|
|
490
623
|
throw new Error('Protocol names must be 5 characters or more')
|
|
491
624
|
}
|
|
492
625
|
if (protocolName.includes(' ')) {
|
|
493
|
-
throw new Error(
|
|
626
|
+
throw new Error(
|
|
627
|
+
'Protocol names cannot contain multiple consecutive spaces (" ")'
|
|
628
|
+
)
|
|
494
629
|
}
|
|
495
630
|
if (!/^[a-z0-9 ]+$/g.test(protocolName)) {
|
|
496
|
-
throw new Error(
|
|
631
|
+
throw new Error(
|
|
632
|
+
'Protocol names can only contain letters, numbers and spaces'
|
|
633
|
+
)
|
|
497
634
|
}
|
|
498
635
|
if (protocolName.endsWith(' protocol')) {
|
|
499
636
|
throw new Error('No need to end your protocol name with " protocol"')
|
|
@@ -511,17 +648,21 @@ describe('WalletWire Integration Tests', () => {
|
|
|
511
648
|
})
|
|
512
649
|
})
|
|
513
650
|
// Helper function to create a test wallet wire setup
|
|
514
|
-
const createTestWalletWire = (wallet:
|
|
651
|
+
const createTestWalletWire = (wallet: CompletedProtoWallet): WalletWireTransceiver => {
|
|
515
652
|
const processor = new WalletWireProcessor(wallet)
|
|
516
653
|
const transceiver = new WalletWireTransceiver(processor)
|
|
517
654
|
return transceiver
|
|
518
655
|
}
|
|
519
656
|
|
|
520
|
-
// Mock implementation for methods not supported by
|
|
521
|
-
const mockUnsupportedMethods = (
|
|
522
|
-
|
|
657
|
+
// Mock implementation for methods not supported by CompletedProtoWallet
|
|
658
|
+
const mockUnsupportedMethods = (
|
|
659
|
+
methods: Partial<CompletedProtoWallet>
|
|
660
|
+
): CompletedProtoWallet => {
|
|
661
|
+
// @ts-expect-error
|
|
662
|
+
const result: CompletedProtoWallet = {
|
|
523
663
|
...methods
|
|
524
|
-
}
|
|
664
|
+
}
|
|
665
|
+
return result
|
|
525
666
|
}
|
|
526
667
|
|
|
527
668
|
describe('createAction', () => {
|
|
@@ -665,11 +806,13 @@ describe('WalletWire Integration Tests', () => {
|
|
|
665
806
|
description: 'Test action with all options',
|
|
666
807
|
inputs: [],
|
|
667
808
|
inputBEEF: [1, 2, 3, 4],
|
|
668
|
-
outputs: [
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
809
|
+
outputs: [
|
|
810
|
+
{
|
|
811
|
+
lockingScript: '016a',
|
|
812
|
+
satoshis: 1,
|
|
813
|
+
outputDescription: 'This is a test.'
|
|
814
|
+
}
|
|
815
|
+
],
|
|
673
816
|
lockTime: 0,
|
|
674
817
|
version: 1,
|
|
675
818
|
labels: ['label1', 'label2'],
|
|
@@ -702,7 +845,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
702
845
|
|
|
703
846
|
it('should throw an error with invalid inputs', async () => {
|
|
704
847
|
// Mock the createAction method to throw an error
|
|
705
|
-
const createActionMock = jest
|
|
848
|
+
const createActionMock = jest
|
|
849
|
+
.fn()
|
|
850
|
+
.mockRejectedValue(new Error('Invalid inputs'))
|
|
706
851
|
const wallet = createTestWalletWire(
|
|
707
852
|
mockUnsupportedMethods({
|
|
708
853
|
createAction: createActionMock
|
|
@@ -745,7 +890,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
745
890
|
|
|
746
891
|
it('should throw an error with invalid inputs', async () => {
|
|
747
892
|
// Mock the signAction method to throw an error
|
|
748
|
-
const signActionMock = jest
|
|
893
|
+
const signActionMock = jest
|
|
894
|
+
.fn()
|
|
895
|
+
.mockRejectedValue(new Error('Invalid inputs'))
|
|
749
896
|
const wallet = createTestWalletWire(
|
|
750
897
|
mockUnsupportedMethods({
|
|
751
898
|
signAction: signActionMock
|
|
@@ -778,7 +925,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
778
925
|
|
|
779
926
|
it('should throw an error with invalid reference', async () => {
|
|
780
927
|
// Mock the abortAction method to throw an error
|
|
781
|
-
const abortActionMock = jest
|
|
928
|
+
const abortActionMock = jest
|
|
929
|
+
.fn()
|
|
930
|
+
.mockRejectedValue(new Error('Invalid reference'))
|
|
782
931
|
const wallet = createTestWalletWire(
|
|
783
932
|
mockUnsupportedMethods({
|
|
784
933
|
abortAction: abortActionMock
|
|
@@ -786,7 +935,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
786
935
|
)
|
|
787
936
|
const reference = ''
|
|
788
937
|
const args = { reference }
|
|
789
|
-
await expect(wallet.abortAction(args)).rejects.toThrow(
|
|
938
|
+
await expect(wallet.abortAction(args)).rejects.toThrow(
|
|
939
|
+
'Invalid reference'
|
|
940
|
+
)
|
|
790
941
|
expect(abortActionMock).toHaveBeenCalledWith(args, '')
|
|
791
942
|
})
|
|
792
943
|
})
|
|
@@ -855,7 +1006,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
855
1006
|
|
|
856
1007
|
it('should throw an error with invalid inputs', async () => {
|
|
857
1008
|
// Mock the listActions method to throw an error
|
|
858
|
-
const listActionsMock = jest
|
|
1009
|
+
const listActionsMock = jest
|
|
1010
|
+
.fn()
|
|
1011
|
+
.mockRejectedValue(new Error('Invalid inputs'))
|
|
859
1012
|
const wallet = createTestWalletWire(
|
|
860
1013
|
mockUnsupportedMethods({
|
|
861
1014
|
listActions: listActionsMock
|
|
@@ -872,7 +1025,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
872
1025
|
describe('internalizeAction', () => {
|
|
873
1026
|
it('should internalize an action with valid inputs', async () => {
|
|
874
1027
|
// Mock the internalizeAction method
|
|
875
|
-
const internalizeActionMock = jest
|
|
1028
|
+
const internalizeActionMock = jest
|
|
1029
|
+
.fn()
|
|
1030
|
+
.mockResolvedValue({ accepted: true })
|
|
876
1031
|
const wallet = createTestWalletWire(
|
|
877
1032
|
mockUnsupportedMethods({
|
|
878
1033
|
internalizeAction: internalizeActionMock
|
|
@@ -902,7 +1057,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
902
1057
|
|
|
903
1058
|
it('should throw an error with invalid inputs', async () => {
|
|
904
1059
|
// Mock the internalizeAction method to throw an error
|
|
905
|
-
const internalizeActionMock = jest
|
|
1060
|
+
const internalizeActionMock = jest
|
|
1061
|
+
.fn()
|
|
1062
|
+
.mockRejectedValue(new Error('Invalid inputs'))
|
|
906
1063
|
const wallet = createTestWalletWire(
|
|
907
1064
|
mockUnsupportedMethods({
|
|
908
1065
|
internalizeAction: internalizeActionMock
|
|
@@ -913,12 +1070,16 @@ describe('WalletWire Integration Tests', () => {
|
|
|
913
1070
|
outputs: [],
|
|
914
1071
|
description: 'Test internalize action'
|
|
915
1072
|
}
|
|
916
|
-
await expect(wallet.internalizeAction(args)).rejects.toThrow(
|
|
1073
|
+
await expect(wallet.internalizeAction(args)).rejects.toThrow(
|
|
1074
|
+
'Invalid inputs'
|
|
1075
|
+
)
|
|
917
1076
|
expect(internalizeActionMock).toHaveBeenCalledWith(args, '')
|
|
918
1077
|
})
|
|
919
1078
|
it('should internalize an action with "basket insertion" protocol', async () => {
|
|
920
1079
|
// Mock the internalizeAction method
|
|
921
|
-
const internalizeActionMock = jest
|
|
1080
|
+
const internalizeActionMock = jest
|
|
1081
|
+
.fn()
|
|
1082
|
+
.mockResolvedValue({ accepted: true })
|
|
922
1083
|
const wallet = createTestWalletWire(
|
|
923
1084
|
mockUnsupportedMethods({
|
|
924
1085
|
internalizeAction: internalizeActionMock
|
|
@@ -954,7 +1115,8 @@ describe('WalletWire Integration Tests', () => {
|
|
|
954
1115
|
totalOutputs: 1,
|
|
955
1116
|
outputs: [
|
|
956
1117
|
{
|
|
957
|
-
outpoint:
|
|
1118
|
+
outpoint:
|
|
1119
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
958
1120
|
satoshis: 1000,
|
|
959
1121
|
lockingScript: '00',
|
|
960
1122
|
spendable: true,
|
|
@@ -985,7 +1147,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
985
1147
|
|
|
986
1148
|
it('should throw an error with invalid inputs', async () => {
|
|
987
1149
|
// Mock the listOutputs method to throw an error
|
|
988
|
-
const listOutputsMock = jest
|
|
1150
|
+
const listOutputsMock = jest
|
|
1151
|
+
.fn()
|
|
1152
|
+
.mockRejectedValue(new Error('Invalid inputs'))
|
|
989
1153
|
const wallet = createTestWalletWire(
|
|
990
1154
|
mockUnsupportedMethods({
|
|
991
1155
|
listOutputs: listOutputsMock
|
|
@@ -1004,7 +1168,8 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1004
1168
|
BEEF: [1, 2, 3, 4],
|
|
1005
1169
|
outputs: [
|
|
1006
1170
|
{
|
|
1007
|
-
outpoint:
|
|
1171
|
+
outpoint:
|
|
1172
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1008
1173
|
satoshis: 1000,
|
|
1009
1174
|
spendable: true
|
|
1010
1175
|
}
|
|
@@ -1037,7 +1202,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1037
1202
|
|
|
1038
1203
|
describe('getPublicKey', () => {
|
|
1039
1204
|
it('should get the identity public key', async () => {
|
|
1040
|
-
const wallet = createTestWalletWire(
|
|
1205
|
+
const wallet = createTestWalletWire(
|
|
1206
|
+
new CompletedProtoWallet(PrivateKey.fromRandom())
|
|
1207
|
+
)
|
|
1041
1208
|
const result = await wallet.getPublicKey({ identityKey: true })
|
|
1042
1209
|
expect(result).toHaveProperty('publicKey')
|
|
1043
1210
|
expect(typeof result.publicKey).toBe('string')
|
|
@@ -1047,7 +1214,7 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1047
1214
|
it('should get a derived public key with valid inputs', async () => {
|
|
1048
1215
|
const userKey = PrivateKey.fromRandom()
|
|
1049
1216
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
1050
|
-
const wallet = createTestWalletWire(new
|
|
1217
|
+
const wallet = createTestWalletWire(new CompletedProtoWallet(userKey))
|
|
1051
1218
|
const args = {
|
|
1052
1219
|
protocolID: [2, 'tests'] as [0 | 1 | 2, string],
|
|
1053
1220
|
keyID: 'test-key-id',
|
|
@@ -1060,7 +1227,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1060
1227
|
})
|
|
1061
1228
|
|
|
1062
1229
|
it('should get the public key with counterparty "anyone"', async () => {
|
|
1063
|
-
const wallet = createTestWalletWire(
|
|
1230
|
+
const wallet = createTestWalletWire(
|
|
1231
|
+
new CompletedProtoWallet(PrivateKey.fromRandom())
|
|
1232
|
+
)
|
|
1064
1233
|
const args = {
|
|
1065
1234
|
protocolID: [1, 'testprotocol'] as [0 | 1 | 2, string],
|
|
1066
1235
|
keyID: 'testkeyid',
|
|
@@ -1073,7 +1242,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1073
1242
|
})
|
|
1074
1243
|
|
|
1075
1244
|
it('should get the public key with missing optional parameters', async () => {
|
|
1076
|
-
const wallet = createTestWalletWire(
|
|
1245
|
+
const wallet = createTestWalletWire(
|
|
1246
|
+
new CompletedProtoWallet(PrivateKey.fromRandom())
|
|
1247
|
+
)
|
|
1077
1248
|
const args = {
|
|
1078
1249
|
protocolID: [0, 'minimalprotocol'] as [0 | 1 | 2, string],
|
|
1079
1250
|
keyID: 'minimalkeyid'
|
|
@@ -1090,8 +1261,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1090
1261
|
it('should encrypt and decrypt data correctly', async () => {
|
|
1091
1262
|
const userKey = PrivateKey.fromRandom()
|
|
1092
1263
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
1093
|
-
const userWallet = createTestWalletWire(new
|
|
1094
|
-
const counterpartyWallet = createTestWalletWire(
|
|
1264
|
+
const userWallet = createTestWalletWire(new CompletedProtoWallet(userKey))
|
|
1265
|
+
const counterpartyWallet = createTestWalletWire(
|
|
1266
|
+
new CompletedProtoWallet(counterpartyKey)
|
|
1267
|
+
)
|
|
1095
1268
|
|
|
1096
1269
|
const plaintext = sampleData
|
|
1097
1270
|
const encryptArgs = {
|
|
@@ -1118,7 +1291,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1118
1291
|
it('should throw an error for invalid decryption inputs', async () => {
|
|
1119
1292
|
const userKey = PrivateKey.fromRandom()
|
|
1120
1293
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
1121
|
-
const counterpartyWallet = createTestWalletWire(
|
|
1294
|
+
const counterpartyWallet = createTestWalletWire(
|
|
1295
|
+
new CompletedProtoWallet(counterpartyKey)
|
|
1296
|
+
)
|
|
1122
1297
|
|
|
1123
1298
|
const decryptArgs = {
|
|
1124
1299
|
ciphertext: [0x00],
|
|
@@ -1134,8 +1309,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1134
1309
|
it('should create and verify HMAC correctly', async () => {
|
|
1135
1310
|
const userKey = PrivateKey.fromRandom()
|
|
1136
1311
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
1137
|
-
const userWallet = createTestWalletWire(new
|
|
1138
|
-
const counterpartyWallet = createTestWalletWire(
|
|
1312
|
+
const userWallet = createTestWalletWire(new CompletedProtoWallet(userKey))
|
|
1313
|
+
const counterpartyWallet = createTestWalletWire(
|
|
1314
|
+
new CompletedProtoWallet(counterpartyKey)
|
|
1315
|
+
)
|
|
1139
1316
|
|
|
1140
1317
|
const data = sampleData
|
|
1141
1318
|
const createHmacArgs = {
|
|
@@ -1155,13 +1332,16 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1155
1332
|
keyID: 'test-key-id',
|
|
1156
1333
|
counterparty: userKey.toPublicKey().toString()
|
|
1157
1334
|
}
|
|
1158
|
-
const verifyHmacResult =
|
|
1335
|
+
const verifyHmacResult =
|
|
1336
|
+
await counterpartyWallet.verifyHmac(verifyHmacArgs)
|
|
1159
1337
|
expect(verifyHmacResult).toEqual({ valid: true })
|
|
1160
1338
|
})
|
|
1161
1339
|
|
|
1162
1340
|
it('should throw an error for invalid HMAC verification', async () => {
|
|
1163
1341
|
const userKey = PrivateKey.fromRandom()
|
|
1164
|
-
const counterpartyWallet = createTestWalletWire(
|
|
1342
|
+
const counterpartyWallet = createTestWalletWire(
|
|
1343
|
+
new CompletedProtoWallet(PrivateKey.fromRandom())
|
|
1344
|
+
)
|
|
1165
1345
|
|
|
1166
1346
|
const verifyHmacArgs = {
|
|
1167
1347
|
data: sampleData,
|
|
@@ -1170,7 +1350,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1170
1350
|
keyID: 'test-key-id',
|
|
1171
1351
|
counterparty: userKey.toPublicKey().toString()
|
|
1172
1352
|
}
|
|
1173
|
-
await expect(
|
|
1353
|
+
await expect(
|
|
1354
|
+
counterpartyWallet.verifyHmac(verifyHmacArgs)
|
|
1355
|
+
).rejects.toThrow()
|
|
1174
1356
|
})
|
|
1175
1357
|
})
|
|
1176
1358
|
|
|
@@ -1178,8 +1360,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1178
1360
|
it('should create and verify signature correctly', async () => {
|
|
1179
1361
|
const userKey = PrivateKey.fromRandom()
|
|
1180
1362
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
1181
|
-
const userWallet = createTestWalletWire(new
|
|
1182
|
-
const counterpartyWallet = createTestWalletWire(
|
|
1363
|
+
const userWallet = createTestWalletWire(new CompletedProtoWallet(userKey))
|
|
1364
|
+
const counterpartyWallet = createTestWalletWire(
|
|
1365
|
+
new CompletedProtoWallet(counterpartyKey)
|
|
1366
|
+
)
|
|
1183
1367
|
|
|
1184
1368
|
const data = sampleData
|
|
1185
1369
|
const createSignatureArgs = {
|
|
@@ -1188,7 +1372,8 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1188
1372
|
keyID: 'test-key-id',
|
|
1189
1373
|
counterparty: counterpartyKey.toPublicKey().toString()
|
|
1190
1374
|
}
|
|
1191
|
-
const createSignatureResult =
|
|
1375
|
+
const createSignatureResult =
|
|
1376
|
+
await userWallet.createSignature(createSignatureArgs)
|
|
1192
1377
|
expect(createSignatureResult).toHaveProperty('signature')
|
|
1193
1378
|
expect(createSignatureResult.signature.length).toBeGreaterThan(0)
|
|
1194
1379
|
|
|
@@ -1199,13 +1384,16 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1199
1384
|
keyID: 'test-key-id',
|
|
1200
1385
|
counterparty: userKey.toPublicKey().toString()
|
|
1201
1386
|
}
|
|
1202
|
-
const verifySignatureResult =
|
|
1387
|
+
const verifySignatureResult =
|
|
1388
|
+
await counterpartyWallet.verifySignature(verifySignatureArgs)
|
|
1203
1389
|
expect(verifySignatureResult).toEqual({ valid: true })
|
|
1204
1390
|
})
|
|
1205
1391
|
|
|
1206
1392
|
it('should throw an error for invalid signature verification', async () => {
|
|
1207
1393
|
const userKey = PrivateKey.fromRandom()
|
|
1208
|
-
const counterpartyWallet = createTestWalletWire(
|
|
1394
|
+
const counterpartyWallet = createTestWalletWire(
|
|
1395
|
+
new CompletedProtoWallet(PrivateKey.fromRandom())
|
|
1396
|
+
)
|
|
1209
1397
|
|
|
1210
1398
|
const verifySignatureArgs = {
|
|
1211
1399
|
data: sampleData,
|
|
@@ -1214,7 +1402,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1214
1402
|
keyID: 'test-key-id',
|
|
1215
1403
|
counterparty: userKey.toPublicKey().toString()
|
|
1216
1404
|
}
|
|
1217
|
-
await expect(
|
|
1405
|
+
await expect(
|
|
1406
|
+
counterpartyWallet.verifySignature(verifySignatureArgs)
|
|
1407
|
+
).rejects.toThrow()
|
|
1218
1408
|
})
|
|
1219
1409
|
})
|
|
1220
1410
|
|
|
@@ -1224,8 +1414,12 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1224
1414
|
const counterpartyKey = PrivateKey.fromRandom()
|
|
1225
1415
|
const verifierKey = PrivateKey.fromRandom()
|
|
1226
1416
|
|
|
1227
|
-
const proverWallet = createTestWalletWire(
|
|
1228
|
-
|
|
1417
|
+
const proverWallet = createTestWalletWire(
|
|
1418
|
+
new CompletedProtoWallet(proverKey)
|
|
1419
|
+
)
|
|
1420
|
+
const verifierWallet = createTestWalletWire(
|
|
1421
|
+
new CompletedProtoWallet(verifierKey)
|
|
1422
|
+
)
|
|
1229
1423
|
|
|
1230
1424
|
const args = {
|
|
1231
1425
|
counterparty: counterpartyKey.toPublicKey().toString(),
|
|
@@ -1237,13 +1431,18 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1237
1431
|
|
|
1238
1432
|
const decryptArgs = {
|
|
1239
1433
|
ciphertext: revelation.encryptedLinkage,
|
|
1240
|
-
protocolID: [2, 'counterparty linkage revelation'] as [
|
|
1434
|
+
protocolID: [2, 'counterparty linkage revelation'] as [
|
|
1435
|
+
0 | 1 | 2,
|
|
1436
|
+
string
|
|
1437
|
+
],
|
|
1241
1438
|
keyID: revelation.revelationTime,
|
|
1242
1439
|
counterparty: proverKey.toPublicKey().toString()
|
|
1243
1440
|
}
|
|
1244
1441
|
const decryptedResult = await verifierWallet.decrypt(decryptArgs)
|
|
1245
1442
|
|
|
1246
|
-
const expectedLinkage = proverKey
|
|
1443
|
+
const expectedLinkage = proverKey
|
|
1444
|
+
.deriveSharedSecret(counterpartyKey.toPublicKey())
|
|
1445
|
+
.encode(true)
|
|
1247
1446
|
expect(decryptedResult.plaintext).toEqual(expectedLinkage)
|
|
1248
1447
|
})
|
|
1249
1448
|
})
|
|
@@ -1256,8 +1455,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1256
1455
|
subject: '02' + 'a'.repeat(64),
|
|
1257
1456
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1258
1457
|
certifier: '02' + 'b'.repeat(64),
|
|
1259
|
-
revocationOutpoint:
|
|
1260
|
-
|
|
1458
|
+
revocationOutpoint:
|
|
1459
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1460
|
+
signature:
|
|
1461
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1261
1462
|
fields: {
|
|
1262
1463
|
field1: 'value1',
|
|
1263
1464
|
field2: 'value2'
|
|
@@ -1278,8 +1479,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1278
1479
|
field2: 'value2'
|
|
1279
1480
|
},
|
|
1280
1481
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1281
|
-
revocationOutpoint:
|
|
1282
|
-
|
|
1482
|
+
revocationOutpoint:
|
|
1483
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1484
|
+
signature:
|
|
1485
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1283
1486
|
keyringRevealer: 'certifier',
|
|
1284
1487
|
keyringForSubject: {}
|
|
1285
1488
|
}
|
|
@@ -1300,8 +1503,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1300
1503
|
subject: '02' + 'a'.repeat(64),
|
|
1301
1504
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1302
1505
|
certifier: '02' + 'b'.repeat(64),
|
|
1303
|
-
revocationOutpoint:
|
|
1304
|
-
|
|
1506
|
+
revocationOutpoint:
|
|
1507
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1508
|
+
signature:
|
|
1509
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1305
1510
|
fields: {
|
|
1306
1511
|
field1: 'value1',
|
|
1307
1512
|
field2: 'value2'
|
|
@@ -1322,8 +1527,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1322
1527
|
field2: 'value2'
|
|
1323
1528
|
},
|
|
1324
1529
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1325
|
-
revocationOutpoint:
|
|
1326
|
-
|
|
1530
|
+
revocationOutpoint:
|
|
1531
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1532
|
+
signature:
|
|
1533
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1327
1534
|
keyringRevealer: 'certifier' as 'certifier',
|
|
1328
1535
|
keyringForSubject: {
|
|
1329
1536
|
field1: Utils.toBase64([0x01, 0x02, 0x03]),
|
|
@@ -1348,8 +1555,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1348
1555
|
subject: '02' + 'a'.repeat(64),
|
|
1349
1556
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1350
1557
|
certifier: '02' + 'b'.repeat(64),
|
|
1351
|
-
revocationOutpoint:
|
|
1352
|
-
|
|
1558
|
+
revocationOutpoint:
|
|
1559
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1560
|
+
signature:
|
|
1561
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1353
1562
|
fields: {
|
|
1354
1563
|
field1: 'value1',
|
|
1355
1564
|
field2: 'value2'
|
|
@@ -1371,8 +1580,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1371
1580
|
field2: 'value2'
|
|
1372
1581
|
},
|
|
1373
1582
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1374
|
-
revocationOutpoint:
|
|
1375
|
-
|
|
1583
|
+
revocationOutpoint:
|
|
1584
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1585
|
+
signature:
|
|
1586
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1376
1587
|
keyringRevealer: keyringRevealerPubKey,
|
|
1377
1588
|
keyringForSubject: {
|
|
1378
1589
|
field1: Utils.toBase64([0x01, 0x02, 0x03]),
|
|
@@ -1397,8 +1608,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1397
1608
|
subject: '02' + 'd'.repeat(64),
|
|
1398
1609
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1399
1610
|
certifier: '02' + 'b'.repeat(64),
|
|
1400
|
-
revocationOutpoint:
|
|
1401
|
-
|
|
1611
|
+
revocationOutpoint:
|
|
1612
|
+
'cafebabedeadbeefcafebabedeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1',
|
|
1613
|
+
signature:
|
|
1614
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1402
1615
|
fields: {
|
|
1403
1616
|
field3: 'value3',
|
|
1404
1617
|
field4: 'value4'
|
|
@@ -1438,8 +1651,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1438
1651
|
subject: '02' + 'e'.repeat(64),
|
|
1439
1652
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1440
1653
|
certifier: '02' + 'b'.repeat(64),
|
|
1441
|
-
revocationOutpoint:
|
|
1442
|
-
|
|
1654
|
+
revocationOutpoint:
|
|
1655
|
+
'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
|
|
1656
|
+
signature:
|
|
1657
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1443
1658
|
fields: {
|
|
1444
1659
|
field5: 'value5'
|
|
1445
1660
|
}
|
|
@@ -1458,8 +1673,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1458
1673
|
field5: 'value5'
|
|
1459
1674
|
},
|
|
1460
1675
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1461
|
-
revocationOutpoint:
|
|
1462
|
-
|
|
1676
|
+
revocationOutpoint:
|
|
1677
|
+
'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
|
|
1678
|
+
signature:
|
|
1679
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1463
1680
|
keyringRevealer: 'certifier' as 'certifier',
|
|
1464
1681
|
keyringForSubject: {} // Empty keyring
|
|
1465
1682
|
}
|
|
@@ -1487,8 +1704,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1487
1704
|
subject: '02' + 'a'.repeat(64),
|
|
1488
1705
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1489
1706
|
certifier: '02' + 'b'.repeat(64),
|
|
1490
|
-
revocationOutpoint:
|
|
1491
|
-
|
|
1707
|
+
revocationOutpoint:
|
|
1708
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1709
|
+
signature:
|
|
1710
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1492
1711
|
fields: {
|
|
1493
1712
|
field1: 'value1',
|
|
1494
1713
|
field2: 'value2'
|
|
@@ -1524,8 +1743,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1524
1743
|
subject: '02' + 'a'.repeat(64),
|
|
1525
1744
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1526
1745
|
certifier: '02' + 'b'.repeat(64),
|
|
1527
|
-
revocationOutpoint:
|
|
1528
|
-
|
|
1746
|
+
revocationOutpoint:
|
|
1747
|
+
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
|
|
1748
|
+
signature:
|
|
1749
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1529
1750
|
fields: {
|
|
1530
1751
|
field1: 'value1',
|
|
1531
1752
|
field2: 'value2'
|
|
@@ -1536,8 +1757,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1536
1757
|
subject: '02' + 'c'.repeat(64),
|
|
1537
1758
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1538
1759
|
certifier: '02' + 'b'.repeat(64),
|
|
1539
|
-
revocationOutpoint:
|
|
1540
|
-
|
|
1760
|
+
revocationOutpoint:
|
|
1761
|
+
'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
|
|
1762
|
+
signature:
|
|
1763
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1541
1764
|
fields: {
|
|
1542
1765
|
field3: 'value3',
|
|
1543
1766
|
field4: 'value4',
|
|
@@ -1564,7 +1787,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1564
1787
|
const result = await wallet.listCertificates(args)
|
|
1565
1788
|
expect(result).toHaveProperty('totalCertificates', 2)
|
|
1566
1789
|
expect(result.certificates.length).toBe(2)
|
|
1567
|
-
expect(result.certificates[0].fields).toEqual({
|
|
1790
|
+
expect(result.certificates[0].fields).toEqual({
|
|
1791
|
+
field1: 'value1',
|
|
1792
|
+
field2: 'value2'
|
|
1793
|
+
})
|
|
1568
1794
|
expect(result.certificates[1].fields).toEqual({
|
|
1569
1795
|
field3: 'value3',
|
|
1570
1796
|
field4: 'value4',
|
|
@@ -1583,8 +1809,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1583
1809
|
subject: '02' + 'd'.repeat(64),
|
|
1584
1810
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1585
1811
|
certifier: '02' + 'e'.repeat(64),
|
|
1586
|
-
revocationOutpoint:
|
|
1587
|
-
|
|
1812
|
+
revocationOutpoint:
|
|
1813
|
+
'cafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafe.2',
|
|
1814
|
+
signature:
|
|
1815
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1588
1816
|
fields: {
|
|
1589
1817
|
field6: 'value6'
|
|
1590
1818
|
}
|
|
@@ -1633,8 +1861,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1633
1861
|
subject: '02' + 'a'.repeat(64),
|
|
1634
1862
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1635
1863
|
certifier: '02' + 'b'.repeat(64),
|
|
1636
|
-
revocationOutpoint:
|
|
1637
|
-
|
|
1864
|
+
revocationOutpoint:
|
|
1865
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
1866
|
+
signature:
|
|
1867
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1638
1868
|
fields: {
|
|
1639
1869
|
field1: 'value1',
|
|
1640
1870
|
field2: 'value2'
|
|
@@ -1667,8 +1897,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1667
1897
|
subject: '02' + 'a'.repeat(64),
|
|
1668
1898
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1669
1899
|
certifier: '02' + 'b'.repeat(64),
|
|
1670
|
-
revocationOutpoint:
|
|
1671
|
-
|
|
1900
|
+
revocationOutpoint:
|
|
1901
|
+
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
|
|
1902
|
+
signature:
|
|
1903
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1672
1904
|
fields: {
|
|
1673
1905
|
field1: 'value1',
|
|
1674
1906
|
field2: 'value2',
|
|
@@ -1680,7 +1912,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1680
1912
|
}
|
|
1681
1913
|
const result = await wallet.proveCertificate(args)
|
|
1682
1914
|
expect(result).toHaveProperty('keyringForVerifier')
|
|
1683
|
-
expect(Object.keys(result.keyringForVerifier)).toEqual([
|
|
1915
|
+
expect(Object.keys(result.keyringForVerifier)).toEqual([
|
|
1916
|
+
'field1',
|
|
1917
|
+
'field2'
|
|
1918
|
+
])
|
|
1684
1919
|
expect(proveCertificateMock).toHaveBeenCalledWith(args, '')
|
|
1685
1920
|
})
|
|
1686
1921
|
|
|
@@ -1701,8 +1936,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1701
1936
|
subject: '02' + 'a'.repeat(64),
|
|
1702
1937
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1703
1938
|
certifier: '02' + 'b'.repeat(64),
|
|
1704
|
-
revocationOutpoint:
|
|
1705
|
-
|
|
1939
|
+
revocationOutpoint:
|
|
1940
|
+
'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
|
|
1941
|
+
signature:
|
|
1942
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1706
1943
|
fields: {
|
|
1707
1944
|
field4: 'value4',
|
|
1708
1945
|
field5: 'value5'
|
|
@@ -1721,7 +1958,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1721
1958
|
describe('relinquishCertificate', () => {
|
|
1722
1959
|
it('should relinquish a certificate with valid inputs', async () => {
|
|
1723
1960
|
// Mock the relinquishCertificate method
|
|
1724
|
-
const relinquishCertificateMock = jest
|
|
1961
|
+
const relinquishCertificateMock = jest
|
|
1962
|
+
.fn()
|
|
1963
|
+
.mockResolvedValue({ relinquished: true })
|
|
1725
1964
|
const wallet = createTestWalletWire(
|
|
1726
1965
|
mockUnsupportedMethods({
|
|
1727
1966
|
relinquishCertificate: relinquishCertificateMock
|
|
@@ -1758,7 +1997,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1758
1997
|
|
|
1759
1998
|
it('should throw an error when getHeight fails', async () => {
|
|
1760
1999
|
// Mock the getHeight method to throw an error
|
|
1761
|
-
const getHeightMock = jest
|
|
2000
|
+
const getHeightMock = jest
|
|
2001
|
+
.fn()
|
|
2002
|
+
.mockRejectedValue(new Error('Failed to get height'))
|
|
1762
2003
|
const wallet = createTestWalletWire(
|
|
1763
2004
|
mockUnsupportedMethods({
|
|
1764
2005
|
getHeight: getHeightMock
|
|
@@ -1789,14 +2030,18 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1789
2030
|
|
|
1790
2031
|
it('should throw an error when getHeaderForHeight fails', async () => {
|
|
1791
2032
|
// Mock the getHeaderForHeight method to throw an error
|
|
1792
|
-
const getHeaderForHeightMock = jest
|
|
2033
|
+
const getHeaderForHeightMock = jest
|
|
2034
|
+
.fn()
|
|
2035
|
+
.mockRejectedValue(new Error('Failed to get header'))
|
|
1793
2036
|
const wallet = createTestWalletWire(
|
|
1794
2037
|
mockUnsupportedMethods({
|
|
1795
2038
|
getHeaderForHeight: getHeaderForHeightMock
|
|
1796
2039
|
})
|
|
1797
2040
|
)
|
|
1798
2041
|
const args = { height: -1 } // Invalid height
|
|
1799
|
-
await expect(wallet.getHeaderForHeight(args)).rejects.toThrow(
|
|
2042
|
+
await expect(wallet.getHeaderForHeight(args)).rejects.toThrow(
|
|
2043
|
+
'Failed to get header'
|
|
2044
|
+
)
|
|
1800
2045
|
expect(getHeaderForHeightMock).toHaveBeenCalledWith(args, '')
|
|
1801
2046
|
})
|
|
1802
2047
|
})
|
|
@@ -1812,8 +2057,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1812
2057
|
subject: '02' + 'a'.repeat(64),
|
|
1813
2058
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1814
2059
|
certifier: '02' + 'b'.repeat(64),
|
|
1815
|
-
revocationOutpoint:
|
|
1816
|
-
|
|
2060
|
+
revocationOutpoint:
|
|
2061
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
2062
|
+
signature:
|
|
2063
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1817
2064
|
fields: {},
|
|
1818
2065
|
certifierInfo: {
|
|
1819
2066
|
name: 'Test Certifier',
|
|
@@ -1853,8 +2100,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1853
2100
|
subject: '02' + 'a'.repeat(64),
|
|
1854
2101
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1855
2102
|
certifier: '02' + 'b'.repeat(64),
|
|
1856
|
-
revocationOutpoint:
|
|
1857
|
-
|
|
2103
|
+
revocationOutpoint:
|
|
2104
|
+
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
|
|
2105
|
+
signature:
|
|
2106
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1858
2107
|
fields: {},
|
|
1859
2108
|
certifierInfo: {
|
|
1860
2109
|
name: 'Test Certifier',
|
|
@@ -1896,8 +2145,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1896
2145
|
subject: '02' + 'a'.repeat(64),
|
|
1897
2146
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1898
2147
|
certifier: '02' + 'b'.repeat(64),
|
|
1899
|
-
revocationOutpoint:
|
|
1900
|
-
|
|
2148
|
+
revocationOutpoint:
|
|
2149
|
+
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
|
|
2150
|
+
signature:
|
|
2151
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1901
2152
|
fields: {},
|
|
1902
2153
|
certifierInfo: {
|
|
1903
2154
|
name: 'Certifier One',
|
|
@@ -1917,8 +2168,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1917
2168
|
subject: '02' + 'a'.repeat(64),
|
|
1918
2169
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1919
2170
|
certifier: '02' + 'c'.repeat(64),
|
|
1920
|
-
revocationOutpoint:
|
|
1921
|
-
|
|
2171
|
+
revocationOutpoint:
|
|
2172
|
+
'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
|
|
2173
|
+
signature:
|
|
2174
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1922
2175
|
fields: {},
|
|
1923
2176
|
certifierInfo: {
|
|
1924
2177
|
name: 'Certifier Two',
|
|
@@ -1965,8 +2218,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
1965
2218
|
subject: '02' + 'a'.repeat(64),
|
|
1966
2219
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
1967
2220
|
certifier: '02' + 'b'.repeat(64),
|
|
1968
|
-
revocationOutpoint:
|
|
1969
|
-
|
|
2221
|
+
revocationOutpoint:
|
|
2222
|
+
'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
|
|
2223
|
+
signature:
|
|
2224
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
1970
2225
|
fields: {},
|
|
1971
2226
|
certifierInfo: {
|
|
1972
2227
|
name: 'Test Certifier',
|
|
@@ -2001,7 +2256,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
2001
2256
|
|
|
2002
2257
|
it('should throw an error with invalid inputs', async () => {
|
|
2003
2258
|
// Mock the discoverByAttributes method to throw an error
|
|
2004
|
-
const discoverByAttributesMock = jest
|
|
2259
|
+
const discoverByAttributesMock = jest
|
|
2260
|
+
.fn()
|
|
2261
|
+
.mockRejectedValue(new Error('Invalid inputs'))
|
|
2005
2262
|
const wallet = createTestWalletWire(
|
|
2006
2263
|
mockUnsupportedMethods({
|
|
2007
2264
|
discoverByAttributes: discoverByAttributesMock
|
|
@@ -2010,7 +2267,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
2010
2267
|
const args = {
|
|
2011
2268
|
attributes: {}
|
|
2012
2269
|
}
|
|
2013
|
-
await expect(wallet.discoverByAttributes(args)).rejects.toThrow(
|
|
2270
|
+
await expect(wallet.discoverByAttributes(args)).rejects.toThrow(
|
|
2271
|
+
'Invalid inputs'
|
|
2272
|
+
)
|
|
2014
2273
|
expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '')
|
|
2015
2274
|
})
|
|
2016
2275
|
it('should discover certificates matching provided attributes', async () => {
|
|
@@ -2023,8 +2282,10 @@ describe('WalletWire Integration Tests', () => {
|
|
|
2023
2282
|
subject: '02' + 'd'.repeat(64),
|
|
2024
2283
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
2025
2284
|
certifier: '02' + 'e'.repeat(64),
|
|
2026
|
-
revocationOutpoint:
|
|
2027
|
-
|
|
2285
|
+
revocationOutpoint:
|
|
2286
|
+
'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
|
|
2287
|
+
signature:
|
|
2288
|
+
'3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
|
|
2028
2289
|
fields: {},
|
|
2029
2290
|
certifierInfo: {
|
|
2030
2291
|
name: 'Certifier Three',
|
|
@@ -2033,7 +2294,7 @@ describe('WalletWire Integration Tests', () => {
|
|
|
2033
2294
|
trust: 8
|
|
2034
2295
|
},
|
|
2035
2296
|
publiclyRevealedKeyring: {
|
|
2036
|
-
fieldX: Utils.toBase64([
|
|
2297
|
+
fieldX: Utils.toBase64([0x0a, 0x0b])
|
|
2037
2298
|
},
|
|
2038
2299
|
decryptedFields: {
|
|
2039
2300
|
fieldY: 'decryptedValueY'
|
|
@@ -2058,7 +2319,9 @@ describe('WalletWire Integration Tests', () => {
|
|
|
2058
2319
|
expect(result).toHaveProperty('totalCertificates', 1)
|
|
2059
2320
|
expect(result.certificates.length).toBe(1)
|
|
2060
2321
|
expect(result.certificates[0].certifierInfo.name).toBe('Certifier Three')
|
|
2061
|
-
expect(result.certificates[0].decryptedFields.fieldY).toBe(
|
|
2322
|
+
expect(result.certificates[0].decryptedFields.fieldY).toBe(
|
|
2323
|
+
'decryptedValueY'
|
|
2324
|
+
)
|
|
2062
2325
|
expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '')
|
|
2063
2326
|
})
|
|
2064
2327
|
|