@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
package/src/primitives/Point.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
import BasePoint from './BasePoint.js'
|
|
2
3
|
import JPoint from './JacobianPoint.js'
|
|
3
4
|
import BigNumber from './BigNumber.js'
|
|
@@ -44,8 +45,10 @@ export default class Point extends BasePoint {
|
|
|
44
45
|
static fromDER (bytes: number[]): Point {
|
|
45
46
|
const len = 32
|
|
46
47
|
// uncompressed, hybrid-odd, hybrid-even
|
|
47
|
-
if (
|
|
48
|
-
bytes
|
|
48
|
+
if (
|
|
49
|
+
(bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
|
|
50
|
+
bytes.length - 1 === 2 * len
|
|
51
|
+
) {
|
|
49
52
|
if (bytes[0] === 0x06) {
|
|
50
53
|
if (bytes[bytes.length - 1] % 2 !== 0) {
|
|
51
54
|
throw new Error('Point string value is wrong length')
|
|
@@ -62,8 +65,10 @@ export default class Point extends BasePoint {
|
|
|
62
65
|
)
|
|
63
66
|
|
|
64
67
|
return res
|
|
65
|
-
} else if (
|
|
66
|
-
bytes
|
|
68
|
+
} else if (
|
|
69
|
+
(bytes[0] === 0x02 || bytes[0] === 0x03) &&
|
|
70
|
+
bytes.length - 1 === len
|
|
71
|
+
) {
|
|
67
72
|
return Point.fromX(bytes.slice(1, 1 + len), bytes[0] === 0x03)
|
|
68
73
|
}
|
|
69
74
|
throw new Error('Unknown point format')
|
|
@@ -145,7 +150,7 @@ export default class Point extends BasePoint {
|
|
|
145
150
|
const p = BigInt(
|
|
146
151
|
'0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F'
|
|
147
152
|
)
|
|
148
|
-
const a = BigInt(0)
|
|
153
|
+
// const a = BigInt(0)
|
|
149
154
|
const b = BigInt(7)
|
|
150
155
|
|
|
151
156
|
// Convert x to BigInt
|
|
@@ -155,10 +160,7 @@ export default class Point extends BasePoint {
|
|
|
155
160
|
} else if (typeof x === 'string') {
|
|
156
161
|
xBigInt = BigInt('0x' + x)
|
|
157
162
|
} else if (Array.isArray(x)) {
|
|
158
|
-
xBigInt = BigInt(
|
|
159
|
-
'0x' +
|
|
160
|
-
toHex(x).padStart(64, '0')
|
|
161
|
-
)
|
|
163
|
+
xBigInt = BigInt('0x' + toHex(x).padStart(64, '0'))
|
|
162
164
|
} else if (typeof x === 'number') {
|
|
163
165
|
xBigInt = BigInt(x)
|
|
164
166
|
} else {
|
|
@@ -179,7 +181,7 @@ export default class Point extends BasePoint {
|
|
|
179
181
|
}
|
|
180
182
|
|
|
181
183
|
// Adjust y to match the oddness
|
|
182
|
-
const isYOdd =
|
|
184
|
+
const isYOdd = y % BigInt(2) === BigInt(1)
|
|
183
185
|
if ((odd && !isYOdd) || (!odd && isYOdd)) {
|
|
184
186
|
y = p - y
|
|
185
187
|
}
|
|
@@ -232,9 +234,7 @@ export default class Point extends BasePoint {
|
|
|
232
234
|
* const serializedPoint = '{"x":52,"y":15}';
|
|
233
235
|
* const point = Point.fromJSON(serializedPoint, true);
|
|
234
236
|
*/
|
|
235
|
-
static fromJSON (
|
|
236
|
-
obj: string | any[], isRed: boolean
|
|
237
|
-
): Point {
|
|
237
|
+
static fromJSON (obj: string | any[], isRed: boolean): Point {
|
|
238
238
|
if (typeof obj === 'string') {
|
|
239
239
|
obj = JSON.parse(obj)
|
|
240
240
|
}
|
|
@@ -250,18 +250,20 @@ export default class Point extends BasePoint {
|
|
|
250
250
|
const pre = obj[2]
|
|
251
251
|
res.precomputed = {
|
|
252
252
|
beta: null,
|
|
253
|
-
doubles:
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
253
|
+
doubles:
|
|
254
|
+
typeof pre.doubles === 'object' && pre.doubles !== null
|
|
255
|
+
? {
|
|
256
|
+
step: pre.doubles.step,
|
|
257
|
+
points: [res].concat(pre.doubles.points.map(obj2point))
|
|
258
|
+
}
|
|
259
|
+
: undefined,
|
|
260
|
+
naf:
|
|
261
|
+
typeof pre.naf === 'object' && pre.naf !== null
|
|
262
|
+
? {
|
|
263
|
+
wnd: pre.naf.wnd,
|
|
264
|
+
points: [res].concat(pre.naf.points.map(obj2point))
|
|
265
|
+
}
|
|
266
|
+
: undefined
|
|
265
267
|
}
|
|
266
268
|
return res
|
|
267
269
|
}
|
|
@@ -301,8 +303,12 @@ export default class Point extends BasePoint {
|
|
|
301
303
|
this.x.forceRed(this.curve.red)
|
|
302
304
|
this.y.forceRed(this.curve.red)
|
|
303
305
|
}
|
|
304
|
-
if (this.x.red === null) {
|
|
305
|
-
|
|
306
|
+
if (this.x.red === null) {
|
|
307
|
+
this.x = this.x.toRed(this.curve.red)
|
|
308
|
+
}
|
|
309
|
+
if (this.y.red === null) {
|
|
310
|
+
this.y = this.y.toRed(this.curve.red)
|
|
311
|
+
}
|
|
306
312
|
this.inf = false
|
|
307
313
|
}
|
|
308
314
|
}
|
|
@@ -378,25 +384,40 @@ export default class Point extends BasePoint {
|
|
|
378
384
|
* const aPoint = new Point(x, y);
|
|
379
385
|
* const jsonPoint = aPoint.toJSON();
|
|
380
386
|
*/
|
|
381
|
-
toJSON (): [
|
|
382
|
-
|
|
387
|
+
toJSON (): [
|
|
388
|
+
BigNumber | null,
|
|
389
|
+
BigNumber | null,
|
|
390
|
+
{
|
|
391
|
+
doubles: { step: any, points: any[] } | undefined
|
|
392
|
+
naf: { wnd: any, points: any[] } | undefined
|
|
393
|
+
}?,
|
|
394
|
+
] {
|
|
395
|
+
if (this.precomputed == null) {
|
|
396
|
+
return [this.x, this.y]
|
|
397
|
+
}
|
|
383
398
|
|
|
384
|
-
return [
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
399
|
+
return [
|
|
400
|
+
this.x,
|
|
401
|
+
this.y,
|
|
402
|
+
typeof this.precomputed === 'object' && this.precomputed !== null
|
|
403
|
+
? {
|
|
404
|
+
doubles:
|
|
405
|
+
this.precomputed.doubles != null
|
|
406
|
+
? {
|
|
407
|
+
step: this.precomputed.doubles.step,
|
|
408
|
+
points: this.precomputed.doubles.points.slice(1)
|
|
409
|
+
}
|
|
410
|
+
: undefined,
|
|
411
|
+
naf:
|
|
412
|
+
this.precomputed.naf != null
|
|
413
|
+
? {
|
|
414
|
+
wnd: this.precomputed.naf.wnd,
|
|
415
|
+
points: this.precomputed.naf.points.slice(1)
|
|
416
|
+
}
|
|
417
|
+
: undefined
|
|
418
|
+
}
|
|
419
|
+
: undefined
|
|
420
|
+
]
|
|
400
421
|
}
|
|
401
422
|
|
|
402
423
|
/**
|
|
@@ -413,8 +434,13 @@ export default class Point extends BasePoint {
|
|
|
413
434
|
if (this.isInfinity()) {
|
|
414
435
|
return '<EC Point Infinity>'
|
|
415
436
|
}
|
|
416
|
-
return
|
|
417
|
-
'
|
|
437
|
+
return (
|
|
438
|
+
'<EC Point x: ' +
|
|
439
|
+
(this.x?.fromRed()?.toString(16, 2) ?? 'undefined') +
|
|
440
|
+
' y: ' +
|
|
441
|
+
(this.y?.fromRed()?.toString(16, 2) ?? 'undefined') +
|
|
442
|
+
'>'
|
|
443
|
+
)
|
|
418
444
|
}
|
|
419
445
|
|
|
420
446
|
/**
|
|
@@ -444,25 +470,41 @@ export default class Point extends BasePoint {
|
|
|
444
470
|
*/
|
|
445
471
|
add (p: Point): Point {
|
|
446
472
|
// O + P = P
|
|
447
|
-
if (this.inf) {
|
|
473
|
+
if (this.inf) {
|
|
474
|
+
return p
|
|
475
|
+
}
|
|
448
476
|
|
|
449
477
|
// P + O = P
|
|
450
|
-
if (p.inf) {
|
|
478
|
+
if (p.inf) {
|
|
479
|
+
return this
|
|
480
|
+
}
|
|
451
481
|
|
|
452
482
|
// P + P = 2P
|
|
453
|
-
if (this.eq(p)) {
|
|
483
|
+
if (this.eq(p)) {
|
|
484
|
+
return this.dbl()
|
|
485
|
+
}
|
|
454
486
|
|
|
455
487
|
// P + (-P) = O
|
|
456
|
-
if (this.neg().eq(p)) {
|
|
488
|
+
if (this.neg().eq(p)) {
|
|
489
|
+
return new Point(new BigNumber(0), new BigNumber(0))
|
|
490
|
+
}
|
|
457
491
|
|
|
458
492
|
// P + Q = O
|
|
459
|
-
if (this.x
|
|
493
|
+
if (this.x?.cmp(p.x ?? new BigNumber(0)) === 0) {
|
|
494
|
+
return new Point(new BigNumber(0), new BigNumber(0))
|
|
495
|
+
}
|
|
460
496
|
|
|
461
|
-
let c = this.y
|
|
462
|
-
if (c.cmpn(0) !== 0) {
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
497
|
+
let c = this.y?.redSub(p.y ?? new BigNumber(0)) ?? new BigNumber(0)
|
|
498
|
+
if (c.cmpn(0) !== 0) {
|
|
499
|
+
c = c.redMul(this.x?.redSub(p.x ?? new BigNumber(0)).redInvm() ?? new BigNumber(1))
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
const nx = c?.redSqr().redISub(this.x ?? new BigNumber(0)).redISub(p.x ?? new BigNumber(0))
|
|
503
|
+
const ny = (c ?? new BigNumber(1))
|
|
504
|
+
.redMul((this.x ?? new BigNumber(0)).redSub(nx ?? new BigNumber(0)))
|
|
505
|
+
.redISub(this.y ?? new BigNumber(0))
|
|
506
|
+
|
|
507
|
+
return new Point(nx ?? new BigNumber(0), ny ?? new BigNumber(0))
|
|
466
508
|
}
|
|
467
509
|
|
|
468
510
|
/**
|
|
@@ -475,22 +517,24 @@ export default class Point extends BasePoint {
|
|
|
475
517
|
* const result = P.dbl();
|
|
476
518
|
* */
|
|
477
519
|
dbl (): Point {
|
|
478
|
-
if (this.inf) {
|
|
520
|
+
if (this.inf) {
|
|
521
|
+
return this
|
|
522
|
+
}
|
|
479
523
|
|
|
480
524
|
// 2P = O
|
|
481
|
-
const ys1 = this.y.redAdd(this.y)
|
|
525
|
+
const ys1 = (this.y ?? new BigNumber(0)).redAdd(this.y ?? new BigNumber(0))
|
|
482
526
|
if (ys1.cmpn(0) === 0) {
|
|
483
|
-
return new Point(
|
|
527
|
+
return new Point(new BigNumber(0), new BigNumber(0))
|
|
484
528
|
}
|
|
485
529
|
|
|
486
530
|
const a = this.curve.a
|
|
487
|
-
|
|
488
|
-
const x2 = this.x.redSqr()
|
|
531
|
+
const x2 = (this.x ?? new BigNumber(0)).redSqr()
|
|
489
532
|
const dyinv = ys1.redInvm()
|
|
490
533
|
const c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv)
|
|
491
534
|
|
|
492
|
-
const nx = c.redSqr().redISub(this.x.redAdd(this.x))
|
|
493
|
-
const ny = c.redMul(this.x.redSub(nx)).redISub(this.y)
|
|
535
|
+
const nx = c.redSqr().redISub((this.x ?? new BigNumber(0)).redAdd(this.x ?? new BigNumber(0)))
|
|
536
|
+
const ny = c.redMul((this.x ?? new BigNumber(0)).redSub(nx)).redISub(this.y ?? new BigNumber(0))
|
|
537
|
+
|
|
494
538
|
return new Point(nx, ny)
|
|
495
539
|
}
|
|
496
540
|
|
|
@@ -502,7 +546,7 @@ export default class Point extends BasePoint {
|
|
|
502
546
|
* const x = P.getX();
|
|
503
547
|
*/
|
|
504
548
|
getX (): BigNumber {
|
|
505
|
-
return this.x.fromRed()
|
|
549
|
+
return (this.x ?? new BigNumber(0)).fromRed()
|
|
506
550
|
}
|
|
507
551
|
|
|
508
552
|
/**
|
|
@@ -513,7 +557,7 @@ export default class Point extends BasePoint {
|
|
|
513
557
|
* const x = P.getX();
|
|
514
558
|
*/
|
|
515
559
|
getY (): BigNumber {
|
|
516
|
-
return this.y.fromRed()
|
|
560
|
+
return (this.y ?? new BigNumber(0)).fromRed()
|
|
517
561
|
}
|
|
518
562
|
|
|
519
563
|
/**
|
|
@@ -597,9 +641,11 @@ export default class Point extends BasePoint {
|
|
|
597
641
|
* const areEqual = p1.eq(p2); // returns true
|
|
598
642
|
*/
|
|
599
643
|
eq (p: Point): boolean {
|
|
600
|
-
return
|
|
601
|
-
|
|
602
|
-
(this.inf
|
|
644
|
+
return (
|
|
645
|
+
this === p ||
|
|
646
|
+
(this.inf === p.inf &&
|
|
647
|
+
(this.inf || ((this.x ?? new BigNumber(0)).cmp(p.x ?? new BigNumber(0)) === 0 && (this.y ?? new BigNumber(0)).cmp(p.y ?? new BigNumber(0)) === 0)))
|
|
648
|
+
)
|
|
603
649
|
}
|
|
604
650
|
|
|
605
651
|
/**
|
|
@@ -612,24 +658,30 @@ export default class Point extends BasePoint {
|
|
|
612
658
|
* const result = P.neg();
|
|
613
659
|
*/
|
|
614
660
|
neg (_precompute?: boolean): Point {
|
|
615
|
-
if (this.inf) {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
661
|
+
if (this.inf) {
|
|
662
|
+
return this
|
|
663
|
+
}
|
|
664
|
+
const res = new Point(this.x, (this.y ?? new BigNumber(0)).redNeg())
|
|
665
|
+
if (_precompute === true && this.precomputed != null) {
|
|
619
666
|
const pre = this.precomputed
|
|
620
667
|
const negate = (p: Point): Point => p.neg()
|
|
621
668
|
res.precomputed = {
|
|
622
|
-
naf:
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
669
|
+
naf: pre.naf != null
|
|
670
|
+
? {
|
|
671
|
+
wnd: pre.naf.wnd,
|
|
672
|
+
points: pre.naf.points.map(negate) as BasePoint[]
|
|
673
|
+
}
|
|
674
|
+
: undefined,
|
|
675
|
+
doubles: pre.doubles != null
|
|
676
|
+
? {
|
|
677
|
+
step: pre.doubles.step,
|
|
678
|
+
points: pre.doubles.points.map((p) => (p as Point).neg())
|
|
679
|
+
}
|
|
680
|
+
: undefined,
|
|
630
681
|
beta: undefined
|
|
631
682
|
}
|
|
632
683
|
}
|
|
684
|
+
|
|
633
685
|
return res
|
|
634
686
|
}
|
|
635
687
|
|
|
@@ -650,7 +702,9 @@ export default class Point extends BasePoint {
|
|
|
650
702
|
dblp (k: number): Point {
|
|
651
703
|
/* eslint-disable @typescript-eslint/no-this-alias */
|
|
652
704
|
let r: Point = this
|
|
653
|
-
for (let i = 0; i < k; i++) {
|
|
705
|
+
for (let i = 0; i < k; i++) {
|
|
706
|
+
r = r.dbl()
|
|
707
|
+
}
|
|
654
708
|
return r
|
|
655
709
|
}
|
|
656
710
|
|
|
@@ -674,34 +728,49 @@ export default class Point extends BasePoint {
|
|
|
674
728
|
}
|
|
675
729
|
|
|
676
730
|
private _getBeta (): undefined | Point {
|
|
677
|
-
if (typeof this.curve.endo !== 'object') {
|
|
731
|
+
if (typeof this.curve.endo !== 'object') {
|
|
732
|
+
return
|
|
733
|
+
}
|
|
678
734
|
|
|
679
735
|
const pre = this.precomputed
|
|
680
|
-
if (
|
|
736
|
+
if (
|
|
737
|
+
typeof pre === 'object' &&
|
|
738
|
+
pre !== null &&
|
|
739
|
+
typeof pre.beta === 'object' &&
|
|
740
|
+
pre.beta !== null
|
|
741
|
+
) {
|
|
681
742
|
return pre.beta as Point
|
|
682
743
|
}
|
|
683
744
|
|
|
684
|
-
const beta = new Point(this.x.redMul(this.curve.endo.beta), this.y)
|
|
745
|
+
const beta = new Point((this.x ?? new BigNumber(0)).redMul(this.curve.endo.beta), this.y)
|
|
685
746
|
if (pre != null) {
|
|
686
747
|
const curve = this.curve
|
|
687
748
|
const endoMul = (p: Point): Point => {
|
|
749
|
+
if (p.x === null) {
|
|
750
|
+
throw new Error('p.x is null')
|
|
751
|
+
}
|
|
752
|
+
if (curve.endo === undefined || curve.endo === null) {
|
|
753
|
+
throw new Error('curve.endo is undefined')
|
|
754
|
+
}
|
|
688
755
|
return new Point(p.x.redMul(curve.endo.beta), p.y)
|
|
689
756
|
}
|
|
690
757
|
pre.beta = beta
|
|
691
758
|
beta.precomputed = {
|
|
692
759
|
beta: null,
|
|
693
|
-
naf:
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
760
|
+
naf:
|
|
761
|
+
pre.naf != null
|
|
762
|
+
? {
|
|
763
|
+
wnd: pre.naf.wnd,
|
|
764
|
+
points: pre.naf.points.map(endoMul)
|
|
765
|
+
}
|
|
766
|
+
: undefined,
|
|
767
|
+
doubles:
|
|
768
|
+
pre.doubles != null
|
|
769
|
+
? {
|
|
770
|
+
step: pre.doubles.step,
|
|
771
|
+
points: pre.doubles.points.map(endoMul)
|
|
772
|
+
}
|
|
773
|
+
: undefined
|
|
705
774
|
}
|
|
706
775
|
}
|
|
707
776
|
return beta
|
|
@@ -735,7 +804,7 @@ export default class Point extends BasePoint {
|
|
|
735
804
|
if (nafW === i) {
|
|
736
805
|
b = b.mixedAdd(doubles.points[j])
|
|
737
806
|
} else if (nafW === -i) {
|
|
738
|
-
b = b.mixedAdd(
|
|
807
|
+
b = b.mixedAdd(doubles.points[j].neg())
|
|
739
808
|
}
|
|
740
809
|
}
|
|
741
810
|
a = a.add(b)
|
|
@@ -750,17 +819,17 @@ export default class Point extends BasePoint {
|
|
|
750
819
|
len: number,
|
|
751
820
|
jacobianResult?: boolean
|
|
752
821
|
): BasePoint {
|
|
753
|
-
const wndWidth = this.curve._wnafT1
|
|
754
|
-
const wnd = this.curve._wnafT2
|
|
755
|
-
const naf = this.curve._wnafT3
|
|
822
|
+
const wndWidth: number[] = this.curve._wnafT1.map(num => num.toNumber()) // Convert BigNumber to number
|
|
823
|
+
const wnd: Point[][] = this.curve._wnafT2.map(() => []) // Initialize as empty Point[][] array
|
|
824
|
+
const naf: number[][] = this.curve._wnafT3.map(() => []) // Initialize as empty number[][] array
|
|
756
825
|
|
|
757
826
|
// Fill all arrays
|
|
758
827
|
let max = 0
|
|
759
828
|
for (let i = 0; i < len; i++) {
|
|
760
829
|
const p = points[i]
|
|
761
830
|
const nafPoints = p._getNAFPoints(defW)
|
|
762
|
-
wndWidth[i] = nafPoints.wnd
|
|
763
|
-
wnd[i] = nafPoints.points
|
|
831
|
+
wndWidth[i] = nafPoints.wnd // Ensure correct type
|
|
832
|
+
wnd[i] = nafPoints.points // Ensure correct type
|
|
764
833
|
}
|
|
765
834
|
|
|
766
835
|
// Comb small window NAFs
|
|
@@ -768,27 +837,33 @@ export default class Point extends BasePoint {
|
|
|
768
837
|
const a = i - 1
|
|
769
838
|
const b = i
|
|
770
839
|
if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
|
|
771
|
-
naf[a] = this.curve
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
840
|
+
naf[a] = this.curve.getNAF(
|
|
841
|
+
coeffs[a],
|
|
842
|
+
wndWidth[a],
|
|
843
|
+
this.curve._bitLength
|
|
844
|
+
)
|
|
845
|
+
naf[b] = this.curve.getNAF(
|
|
846
|
+
coeffs[b],
|
|
847
|
+
wndWidth[b],
|
|
848
|
+
this.curve._bitLength
|
|
849
|
+
)
|
|
775
850
|
max = Math.max(naf[a].length, max)
|
|
776
851
|
max = Math.max(naf[b].length, max)
|
|
777
852
|
continue
|
|
778
853
|
}
|
|
779
854
|
|
|
780
855
|
const comb: any[] = [
|
|
781
|
-
points[a]
|
|
782
|
-
null
|
|
783
|
-
null
|
|
856
|
+
points[a] /* 1 */,
|
|
857
|
+
null /* 3 */,
|
|
858
|
+
null /* 5 */,
|
|
784
859
|
points[b] /* 7 */
|
|
785
860
|
]
|
|
786
861
|
|
|
787
862
|
// Try to avoid Projective points, if possible
|
|
788
|
-
if (points[a].y.cmp(points[b].y) === 0) {
|
|
863
|
+
if ((points[a].y ?? new BigNumber(0)).cmp(points[b].y ?? new BigNumber(0)) === 0) {
|
|
789
864
|
comb[1] = points[a].add(points[b])
|
|
790
865
|
comb[2] = points[a].toJ().mixedAdd(points[b].neg())
|
|
791
|
-
} else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
|
|
866
|
+
} else if ((points[a].y ?? new BigNumber(0)).cmp((points[b].y ?? new BigNumber(0)).redNeg()) === 0) {
|
|
792
867
|
comb[1] = points[a].toJ().mixedAdd(points[b])
|
|
793
868
|
comb[2] = points[a].add(points[b].neg())
|
|
794
869
|
} else {
|
|
@@ -797,15 +872,8 @@ export default class Point extends BasePoint {
|
|
|
797
872
|
}
|
|
798
873
|
|
|
799
874
|
const index = [
|
|
800
|
-
-3
|
|
801
|
-
|
|
802
|
-
-5, /* -1 1 */
|
|
803
|
-
-7, /* 0 -1 */
|
|
804
|
-
0, /* 0 0 */
|
|
805
|
-
7, /* 0 1 */
|
|
806
|
-
5, /* 1 -1 */
|
|
807
|
-
1, /* 1 0 */
|
|
808
|
-
3 /* 1 1 */
|
|
875
|
+
-3 /* -1 -1 */, -1 /* -1 0 */, -5 /* -1 1 */, -7 /* 0 -1 */,
|
|
876
|
+
0 /* 0 0 */, 7 /* 0 1 */, 5 /* 1 -1 */, 1 /* 1 0 */, 3 /* 1 1 */
|
|
809
877
|
]
|
|
810
878
|
|
|
811
879
|
const jsf = this.curve.getJSF(coeffs[a], coeffs[b])
|
|
@@ -830,26 +898,38 @@ export default class Point extends BasePoint {
|
|
|
830
898
|
while (i >= 0) {
|
|
831
899
|
let zero = true
|
|
832
900
|
for (let j = 0; j < len; j++) {
|
|
833
|
-
tmp[j] = naf[j][i]
|
|
834
|
-
if (tmp[j]
|
|
901
|
+
tmp[j] = new BigNumber(typeof naf[j][i] === 'number' ? naf[j][i] : 0) // Ensure type consistency
|
|
902
|
+
if (!tmp[j].isZero()) { // Use BigNumber's built-in comparison
|
|
903
|
+
zero = false
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
if (!zero) {
|
|
907
|
+
break
|
|
835
908
|
}
|
|
836
|
-
if (!zero) { break }
|
|
837
909
|
k++
|
|
838
910
|
i--
|
|
839
911
|
}
|
|
840
|
-
if (i >= 0) {
|
|
912
|
+
if (i >= 0) {
|
|
913
|
+
k++
|
|
914
|
+
}
|
|
841
915
|
acc = acc.dblp(k)
|
|
842
|
-
if (i < 0) {
|
|
916
|
+
if (i < 0) {
|
|
917
|
+
break
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
const one = new BigNumber(1)
|
|
921
|
+
const two = new BigNumber(2)
|
|
843
922
|
|
|
844
923
|
for (let j = 0; j < len; j++) {
|
|
845
924
|
const z = tmp[j]
|
|
846
925
|
let p
|
|
847
|
-
|
|
926
|
+
|
|
927
|
+
if (z.cmpn(0) === 0) { // Check if z is 0
|
|
848
928
|
continue
|
|
849
|
-
} else if (z
|
|
850
|
-
p = wnd[j][(
|
|
851
|
-
} else
|
|
852
|
-
p = wnd[j][(
|
|
929
|
+
} else if (!z.isNeg()) { // If z is positive
|
|
930
|
+
p = wnd[j][z.sub(one).div(two).toNumber()]
|
|
931
|
+
} else { // If z is negative
|
|
932
|
+
p = wnd[j][z.neg().sub(one).div(two).toNumber()].neg()
|
|
853
933
|
}
|
|
854
934
|
|
|
855
935
|
if (p.type === 'affine') {
|
|
@@ -860,23 +940,29 @@ export default class Point extends BasePoint {
|
|
|
860
940
|
}
|
|
861
941
|
}
|
|
862
942
|
// Zeroify references
|
|
863
|
-
for (let i = 0; i < len; i++) {
|
|
943
|
+
for (let i = 0; i < len; i++) {
|
|
944
|
+
wnd[i] = []
|
|
945
|
+
}
|
|
864
946
|
|
|
865
|
-
if (jacobianResult) {
|
|
947
|
+
if (jacobianResult === true) {
|
|
866
948
|
return acc
|
|
867
949
|
} else {
|
|
868
950
|
return acc.toP()
|
|
869
951
|
}
|
|
870
952
|
}
|
|
871
953
|
|
|
872
|
-
private _endoWnafMulAdd (
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
954
|
+
private _endoWnafMulAdd (
|
|
955
|
+
points: Point[],
|
|
956
|
+
coeffs: BigNumber[], // Explicitly type coeffs
|
|
957
|
+
jacobianResult?: boolean
|
|
958
|
+
): BasePoint {
|
|
959
|
+
const npoints: Point[] = new Array(points.length * 2)
|
|
960
|
+
const ncoeffs: BigNumber[] = new Array(points.length * 2)
|
|
961
|
+
let i: number
|
|
876
962
|
for (i = 0; i < points.length; i++) {
|
|
877
963
|
const split = this.curve._endoSplit(coeffs[i])
|
|
878
964
|
let p = points[i]
|
|
879
|
-
let beta = p._getBeta()
|
|
965
|
+
let beta: Point = p._getBeta() ?? new Point(new BigNumber(0), new BigNumber(0))
|
|
880
966
|
|
|
881
967
|
if (split.k1.negative !== 0) {
|
|
882
968
|
split.k1.ineg()
|
|
@@ -892,31 +978,39 @@ export default class Point extends BasePoint {
|
|
|
892
978
|
ncoeffs[i * 2] = split.k1
|
|
893
979
|
ncoeffs[i * 2 + 1] = split.k2
|
|
894
980
|
}
|
|
981
|
+
|
|
895
982
|
const res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult)
|
|
896
983
|
|
|
897
984
|
// Clean-up references to points and coefficients
|
|
898
985
|
for (let j = 0; j < i * 2; j++) {
|
|
899
|
-
npoints[j] = null
|
|
900
|
-
ncoeffs[j] = null
|
|
986
|
+
npoints[j] = null as unknown as Point
|
|
987
|
+
ncoeffs[j] = null as unknown as BigNumber
|
|
901
988
|
}
|
|
902
989
|
return res
|
|
903
990
|
}
|
|
904
991
|
|
|
905
992
|
private _hasDoubles (k: BigNumber): boolean {
|
|
906
|
-
if (this.precomputed == null) {
|
|
993
|
+
if (this.precomputed == null) {
|
|
994
|
+
return false
|
|
995
|
+
}
|
|
907
996
|
|
|
908
997
|
const doubles = this.precomputed.doubles
|
|
909
|
-
if (typeof doubles !== 'object') {
|
|
998
|
+
if (typeof doubles !== 'object') {
|
|
999
|
+
return false
|
|
1000
|
+
}
|
|
910
1001
|
|
|
911
|
-
return
|
|
912
|
-
|
|
1002
|
+
return (
|
|
1003
|
+
doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step)
|
|
1004
|
+
)
|
|
1005
|
+
}
|
|
913
1006
|
|
|
914
1007
|
private _getDoubles (
|
|
915
1008
|
step?: number,
|
|
916
1009
|
power?: number
|
|
917
1010
|
): { step: number, points: any[] } {
|
|
918
1011
|
if (
|
|
919
|
-
typeof this.precomputed === 'object' &&
|
|
1012
|
+
typeof this.precomputed === 'object' &&
|
|
1013
|
+
this.precomputed !== null &&
|
|
920
1014
|
typeof this.precomputed.doubles === 'object' &&
|
|
921
1015
|
this.precomputed.doubles !== null
|
|
922
1016
|
) {
|
|
@@ -926,20 +1020,24 @@ export default class Point extends BasePoint {
|
|
|
926
1020
|
const doubles = [this]
|
|
927
1021
|
/* eslint-disable @typescript-eslint/no-this-alias */
|
|
928
1022
|
let acc: Point = this
|
|
929
|
-
for (let i = 0; i < power; i += step) {
|
|
930
|
-
for (let j = 0; j < step; j++) {
|
|
1023
|
+
for (let i = 0; i < (power ?? 0); i += (step ?? 1)) {
|
|
1024
|
+
for (let j = 0; j < (step ?? 1); j++) {
|
|
1025
|
+
acc = acc.dbl()
|
|
1026
|
+
}
|
|
931
1027
|
doubles.push(acc as this)
|
|
932
1028
|
}
|
|
933
1029
|
return {
|
|
934
|
-
step,
|
|
1030
|
+
step: step ?? 1,
|
|
935
1031
|
points: doubles
|
|
936
1032
|
}
|
|
937
|
-
}
|
|
1033
|
+
}
|
|
938
1034
|
|
|
939
1035
|
private _getNAFPoints (wnd: number): { wnd: number, points: any[] } {
|
|
940
1036
|
if (
|
|
941
|
-
typeof this.precomputed === 'object' &&
|
|
942
|
-
|
|
1037
|
+
typeof this.precomputed === 'object' &&
|
|
1038
|
+
this.precomputed !== null &&
|
|
1039
|
+
typeof this.precomputed.naf === 'object' &&
|
|
1040
|
+
this.precomputed.naf !== null
|
|
943
1041
|
) {
|
|
944
1042
|
return this.precomputed.naf
|
|
945
1043
|
}
|
|
@@ -947,7 +1045,11 @@ export default class Point extends BasePoint {
|
|
|
947
1045
|
const res = [this]
|
|
948
1046
|
const max = (1 << wnd) - 1
|
|
949
1047
|
const dbl = max === 1 ? null : this.dbl()
|
|
950
|
-
for (let i = 1; i < max; i++) {
|
|
1048
|
+
for (let i = 1; i < max; i++) {
|
|
1049
|
+
if (dbl !== null) {
|
|
1050
|
+
res[i] = res[i - 1].add(dbl) as this
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
951
1053
|
return {
|
|
952
1054
|
wnd,
|
|
953
1055
|
points: res
|