@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,6 +1,6 @@
|
|
|
1
1
|
/* global describe, it */
|
|
2
2
|
|
|
3
|
-
import BigNumber from '
|
|
3
|
+
import BigNumber from '../../primitives/BigNumber'
|
|
4
4
|
import * as fixtures from './BigNumber.fixtures'
|
|
5
5
|
|
|
6
6
|
describe('BN.js/Arithmetic', () => {
|
|
@@ -78,7 +78,9 @@ describe('BN.js/Arithmetic', () => {
|
|
|
78
78
|
})
|
|
79
79
|
|
|
80
80
|
it('should throw error with num eq 0x4000000', () => {
|
|
81
|
-
expect(() => new BigNumber(0).iaddn(0x4000000)).toThrow(
|
|
81
|
+
expect(() => new BigNumber(0).iaddn(0x4000000)).toThrow(
|
|
82
|
+
'num is too large'
|
|
83
|
+
)
|
|
82
84
|
})
|
|
83
85
|
|
|
84
86
|
it('should reset sign if value equal to value in instance', () => {
|
|
@@ -92,20 +94,25 @@ describe('BN.js/Arithmetic', () => {
|
|
|
92
94
|
expect(new BigNumber(26).sub(new BigNumber(14)).toString(16)).toBe('c')
|
|
93
95
|
expect(new BigNumber(14).sub(new BigNumber(26)).toString(16)).toBe('-c')
|
|
94
96
|
expect(new BigNumber(26).sub(new BigNumber(26)).toString(16)).toBe('0')
|
|
95
|
-
expect(new BigNumber(-26).sub(new BigNumber(26)).toString(16)).toBe(
|
|
97
|
+
expect(new BigNumber(-26).sub(new BigNumber(26)).toString(16)).toBe(
|
|
98
|
+
'-34'
|
|
99
|
+
)
|
|
96
100
|
})
|
|
97
101
|
|
|
98
102
|
const a = new BigNumber(
|
|
99
103
|
'31ff3c61db2db84b9823d320907a573f6ad37c437abe458b1802cda041d6384' +
|
|
100
|
-
|
|
101
|
-
16
|
|
104
|
+
'a7d8daef41395491e2',
|
|
105
|
+
16
|
|
106
|
+
)
|
|
102
107
|
const b = new BigNumber(
|
|
103
108
|
'6f0e4d9f1d6071c183677f601af9305721c91d31b0bbbae8fb790000',
|
|
104
|
-
16
|
|
109
|
+
16
|
|
110
|
+
)
|
|
105
111
|
const r = new BigNumber(
|
|
106
112
|
'31ff3c61db2db84b9823d3208989726578fd75276287cd9516533a9acfb9a67' +
|
|
107
|
-
|
|
108
|
-
16
|
|
113
|
+
'76281f34583ddb91e2',
|
|
114
|
+
16
|
|
115
|
+
)
|
|
109
116
|
|
|
110
117
|
it('should subtract big numbers', () => {
|
|
111
118
|
expect(a.sub(b).cmp(r)).toBe(0)
|
|
@@ -129,9 +136,12 @@ describe('BN.js/Arithmetic', () => {
|
|
|
129
136
|
describe('.isubn()', () => {
|
|
130
137
|
it('should subtract negative number', () => {
|
|
131
138
|
const r = new BigNumber(
|
|
132
|
-
'7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b',
|
|
139
|
+
'7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b',
|
|
140
|
+
16
|
|
141
|
+
)
|
|
133
142
|
expect(r.isubn(-1).toString(16)).toBe(
|
|
134
|
-
'7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681c'
|
|
143
|
+
'7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681c'
|
|
144
|
+
)
|
|
135
145
|
})
|
|
136
146
|
|
|
137
147
|
it('should work for positive numbers', () => {
|
|
@@ -163,7 +173,9 @@ describe('BN.js/Arithmetic', () => {
|
|
|
163
173
|
})
|
|
164
174
|
|
|
165
175
|
it('should throw error with num eq 0x4000000', () => {
|
|
166
|
-
expect(() => new BigNumber(0).isubn(0x4000000)).toThrow(
|
|
176
|
+
expect(() => new BigNumber(0).isubn(0x4000000)).toThrow(
|
|
177
|
+
'Assertion failed'
|
|
178
|
+
)
|
|
167
179
|
})
|
|
168
180
|
})
|
|
169
181
|
|
|
@@ -203,27 +215,25 @@ describe('BN.js/Arithmetic', () => {
|
|
|
203
215
|
'79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
|
|
204
216
|
16
|
|
205
217
|
)
|
|
206
|
-
expect(
|
|
207
|
-
mul(n, n).toString(16)
|
|
208
|
-
).toBe(
|
|
218
|
+
expect(mul(n, n).toString(16)).toBe(
|
|
209
219
|
'39e58a8055b6fb264b75ec8c646509784204ac15a8c24e05babc9729ab9' +
|
|
210
|
-
|
|
211
|
-
|
|
220
|
+
'b055c3a9458e4ce3289560a38e08ba8175a9446ce14e608245ab3a9' +
|
|
221
|
+
'978a8bd8acaa40'
|
|
212
222
|
)
|
|
213
|
-
expect(
|
|
214
|
-
mul(mul(n, n), n).toString(16)
|
|
215
|
-
).toBe(
|
|
223
|
+
expect(mul(mul(n, n), n).toString(16)).toBe(
|
|
216
224
|
'1b888e01a06e974017a28a5b4da436169761c9730b7aeedf75fc60f687b' +
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
225
|
+
'46e0cf2cb11667f795d5569482640fe5f628939467a01a612b02350' +
|
|
226
|
+
'0d0161e9730279a7561043af6197798e41b7432458463e64fa81158' +
|
|
227
|
+
'907322dc330562697d0d600'
|
|
220
228
|
)
|
|
221
229
|
})
|
|
222
230
|
|
|
223
231
|
it('should multiply neg number on 0', () => {
|
|
224
232
|
expect(
|
|
225
|
-
mul(
|
|
226
|
-
|
|
233
|
+
mul(
|
|
234
|
+
new BigNumber('-100000000000'),
|
|
235
|
+
new BigNumber('3').div(new BigNumber('4'))
|
|
236
|
+
).toString(16)
|
|
227
237
|
).toBe('0')
|
|
228
238
|
})
|
|
229
239
|
|
|
@@ -279,17 +289,27 @@ describe('BN.js/Arithmetic', () => {
|
|
|
279
289
|
})
|
|
280
290
|
|
|
281
291
|
it('should throw error with num eq 0x4000000', () => {
|
|
282
|
-
expect(() => new BigNumber(0).imuln(0x4000000)).toThrow(
|
|
292
|
+
expect(() => new BigNumber(0).imuln(0x4000000)).toThrow(
|
|
293
|
+
/^Assertion failed$/
|
|
294
|
+
)
|
|
283
295
|
})
|
|
284
296
|
|
|
285
297
|
it('should negate number if number is negative', () => {
|
|
286
298
|
const a = new BigNumber('dead', 16)
|
|
287
|
-
expect(a.clone().imuln(-1).toString(16)).toBe(
|
|
288
|
-
|
|
299
|
+
expect(a.clone().imuln(-1).toString(16)).toBe(
|
|
300
|
+
a.clone().neg().toString(16)
|
|
301
|
+
)
|
|
302
|
+
expect(a.clone().muln(-1).toString(16)).toBe(
|
|
303
|
+
a.clone().neg().toString(16)
|
|
304
|
+
)
|
|
289
305
|
|
|
290
306
|
const b = new BigNumber('dead', 16)
|
|
291
|
-
expect(b.clone().imuln(-42).toString(16)).toBe(
|
|
292
|
-
|
|
307
|
+
expect(b.clone().imuln(-42).toString(16)).toBe(
|
|
308
|
+
b.clone().neg().muln(42).toString(16)
|
|
309
|
+
)
|
|
310
|
+
expect(b.clone().muln(-42).toString(16)).toBe(
|
|
311
|
+
b.clone().neg().muln(42).toString(16)
|
|
312
|
+
)
|
|
293
313
|
})
|
|
294
314
|
})
|
|
295
315
|
|
|
@@ -305,63 +325,129 @@ describe('BN.js/Arithmetic', () => {
|
|
|
305
325
|
|
|
306
326
|
describe('.div()', () => {
|
|
307
327
|
it('should divide small numbers (<=26 bits)', () => {
|
|
308
|
-
expect(new BigNumber('256').div(new BigNumber(10)).toString(10)).toEqual(
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
expect(new BigNumber('-256').div(new BigNumber(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
expect(new BigNumber('
|
|
315
|
-
|
|
316
|
-
|
|
328
|
+
expect(new BigNumber('256').div(new BigNumber(10)).toString(10)).toEqual(
|
|
329
|
+
'25'
|
|
330
|
+
)
|
|
331
|
+
expect(new BigNumber('-256').div(new BigNumber(10)).toString(10)).toEqual(
|
|
332
|
+
'-25'
|
|
333
|
+
)
|
|
334
|
+
expect(new BigNumber('256').div(new BigNumber(-10)).toString(10)).toEqual(
|
|
335
|
+
'-25'
|
|
336
|
+
)
|
|
337
|
+
expect(
|
|
338
|
+
new BigNumber('-256').div(new BigNumber(-10)).toString(10)
|
|
339
|
+
).toEqual('25')
|
|
340
|
+
|
|
341
|
+
expect(new BigNumber('10').div(new BigNumber(256)).toString(10)).toEqual(
|
|
342
|
+
'0'
|
|
343
|
+
)
|
|
344
|
+
expect(new BigNumber('-10').div(new BigNumber(256)).toString(10)).toEqual(
|
|
345
|
+
'0'
|
|
346
|
+
)
|
|
347
|
+
expect(new BigNumber('10').div(new BigNumber(-256)).toString(10)).toEqual(
|
|
348
|
+
'0'
|
|
349
|
+
)
|
|
350
|
+
expect(
|
|
351
|
+
new BigNumber('-10').div(new BigNumber(-256)).toString(10)
|
|
352
|
+
).toEqual('0')
|
|
317
353
|
})
|
|
318
354
|
|
|
319
355
|
it('should divide large numbers (>53 bits)', () => {
|
|
320
|
-
expect(
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
356
|
+
expect(
|
|
357
|
+
new BigNumber('1222222225255589')
|
|
358
|
+
.div(new BigNumber('611111124969028'))
|
|
359
|
+
.toString(10)
|
|
360
|
+
).toEqual('1')
|
|
361
|
+
expect(
|
|
362
|
+
new BigNumber('-1222222225255589')
|
|
363
|
+
.div(new BigNumber('611111124969028'))
|
|
364
|
+
.toString(10)
|
|
365
|
+
).toEqual('-1')
|
|
366
|
+
expect(
|
|
367
|
+
new BigNumber('1222222225255589')
|
|
368
|
+
.div(new BigNumber('-611111124969028'))
|
|
369
|
+
.toString(10)
|
|
370
|
+
).toEqual('-1')
|
|
371
|
+
expect(
|
|
372
|
+
new BigNumber('-1222222225255589')
|
|
373
|
+
.div(new BigNumber('-611111124969028'))
|
|
374
|
+
.toString(10)
|
|
375
|
+
).toEqual('1')
|
|
324
376
|
|
|
325
|
-
expect(
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
377
|
+
expect(
|
|
378
|
+
new BigNumber('611111124969028')
|
|
379
|
+
.div(new BigNumber('1222222225255589'))
|
|
380
|
+
.toString(10)
|
|
381
|
+
).toEqual('0')
|
|
382
|
+
expect(
|
|
383
|
+
new BigNumber('-611111124969028')
|
|
384
|
+
.div(new BigNumber('1222222225255589'))
|
|
385
|
+
.toString(10)
|
|
386
|
+
).toEqual('0')
|
|
387
|
+
expect(
|
|
388
|
+
new BigNumber('611111124969028')
|
|
389
|
+
.div(new BigNumber('-1222222225255589'))
|
|
390
|
+
.toString(10)
|
|
391
|
+
).toEqual('0')
|
|
392
|
+
expect(
|
|
393
|
+
new BigNumber('-611111124969028')
|
|
394
|
+
.div(new BigNumber('-1222222225255589'))
|
|
395
|
+
.toString(10)
|
|
396
|
+
).toEqual('0')
|
|
329
397
|
})
|
|
330
398
|
|
|
331
399
|
it('should divide numbers', () => {
|
|
332
|
-
expect(
|
|
333
|
-
|
|
400
|
+
expect(
|
|
401
|
+
new BigNumber('69527932928').div(new BigNumber('16974594')).toString(16)
|
|
402
|
+
).toEqual('fff')
|
|
403
|
+
expect(
|
|
404
|
+
new BigNumber('-69527932928')
|
|
405
|
+
.div(new BigNumber('16974594'))
|
|
406
|
+
.toString(16)
|
|
407
|
+
).toEqual('-fff')
|
|
334
408
|
|
|
335
|
-
const b = new BigNumber(
|
|
336
|
-
|
|
409
|
+
const b = new BigNumber(
|
|
410
|
+
'39e58a8055b6fb264b75ec8c646509784204ac15a8c24e05babc9729ab9b055c3a9458e4ce3289560a38e08ba8175a9446ce14e608245ab3a9978a8bd8acaa40',
|
|
411
|
+
16
|
|
412
|
+
)
|
|
413
|
+
const n = new BigNumber(
|
|
414
|
+
'79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
|
|
415
|
+
16
|
|
416
|
+
)
|
|
337
417
|
expect(b.div(n).toString(16)).toEqual(n.toString(16))
|
|
338
418
|
|
|
339
|
-
expect(new BigNumber('1').div(new BigNumber('-5')).toString(10)).toEqual(
|
|
419
|
+
expect(new BigNumber('1').div(new BigNumber('-5')).toString(10)).toEqual(
|
|
420
|
+
'0'
|
|
421
|
+
)
|
|
340
422
|
})
|
|
341
423
|
|
|
342
424
|
it('should not fail on regression after moving to _wordDiv', function () {
|
|
343
425
|
// Regression after moving to word div
|
|
344
426
|
let p = new BigNumber(
|
|
345
427
|
'fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f',
|
|
346
|
-
16
|
|
428
|
+
16
|
|
429
|
+
)
|
|
347
430
|
let a = new BigNumber(
|
|
348
431
|
'79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
|
|
349
|
-
16
|
|
432
|
+
16
|
|
433
|
+
)
|
|
350
434
|
const as = a.sqr()
|
|
351
|
-
expect(
|
|
352
|
-
|
|
353
|
-
|
|
435
|
+
expect(as.div(p).toString(16)).toEqual(
|
|
436
|
+
'39e58a8055b6fb264b75ec8c646509784204ac15a8c24e05babc9729e58090b9'
|
|
437
|
+
)
|
|
354
438
|
|
|
355
439
|
p = new BigNumber(
|
|
356
440
|
'ffffffff00000001000000000000000000000000ffffffffffffffffffffffff',
|
|
357
|
-
16
|
|
441
|
+
16
|
|
442
|
+
)
|
|
358
443
|
a = new BigNumber(
|
|
359
444
|
'fffffffe00000003fffffffd0000000200000001fffffffe00000002ffffffff' +
|
|
360
|
-
|
|
361
|
-
16
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
'ffffffff00000002000000000000000000000001000000000000000000000001'
|
|
445
|
+
'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
|
|
446
|
+
16
|
|
447
|
+
)
|
|
448
|
+
expect(a.div(p).toString(16)).toEqual(
|
|
449
|
+
'ffffffff00000002000000000000000000000001000000000000000000000001'
|
|
450
|
+
)
|
|
365
451
|
})
|
|
366
452
|
})
|
|
367
453
|
|
|
@@ -370,74 +456,160 @@ describe('BN.js/Arithmetic', () => {
|
|
|
370
456
|
expect(new BigNumber('10', 16).idivn(3).toString(16)).toEqual('5')
|
|
371
457
|
expect(new BigNumber('10', 16).idivn(-3).toString(16)).toEqual('-5')
|
|
372
458
|
expect(new BigNumber('12', 16).idivn(3).toString(16)).toEqual('6')
|
|
373
|
-
expect(new BigNumber('10000000000000000').idivn(3).toString(10)).toEqual(
|
|
374
|
-
|
|
459
|
+
expect(new BigNumber('10000000000000000').idivn(3).toString(10)).toEqual(
|
|
460
|
+
'3333333333333333'
|
|
461
|
+
)
|
|
462
|
+
expect(
|
|
463
|
+
new BigNumber('100000000000000000000000000000').idivn(3).toString(10)
|
|
464
|
+
).toEqual('33333333333333333333333333333')
|
|
375
465
|
|
|
376
466
|
const t = new BigNumber(3)
|
|
377
|
-
expect(
|
|
467
|
+
expect(
|
|
468
|
+
new BigNumber('12345678901234567890123456', 16).idivn(3).toString(16)
|
|
469
|
+
).toEqual(
|
|
470
|
+
new BigNumber('12345678901234567890123456', 16).div(t).toString(16)
|
|
471
|
+
)
|
|
378
472
|
})
|
|
379
473
|
})
|
|
380
474
|
|
|
381
475
|
describe('.divRound()', () => {
|
|
382
476
|
it('should divide numbers with rounding', () => {
|
|
383
|
-
expect(new BigNumber(9).divRound(new BigNumber(20)).toString(10)).toEqual(
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
expect(
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
expect(
|
|
477
|
+
expect(new BigNumber(9).divRound(new BigNumber(20)).toString(10)).toEqual(
|
|
478
|
+
'0'
|
|
479
|
+
)
|
|
480
|
+
expect(
|
|
481
|
+
new BigNumber(10).divRound(new BigNumber(20)).toString(10)
|
|
482
|
+
).toEqual('1')
|
|
483
|
+
expect(
|
|
484
|
+
new BigNumber(150).divRound(new BigNumber(20)).toString(10)
|
|
485
|
+
).toEqual('8')
|
|
486
|
+
expect(
|
|
487
|
+
new BigNumber(149).divRound(new BigNumber(20)).toString(10)
|
|
488
|
+
).toEqual('7')
|
|
489
|
+
expect(
|
|
490
|
+
new BigNumber(149).divRound(new BigNumber(17)).toString(10)
|
|
491
|
+
).toEqual('9')
|
|
492
|
+
expect(
|
|
493
|
+
new BigNumber(144).divRound(new BigNumber(17)).toString(10)
|
|
494
|
+
).toEqual('8')
|
|
495
|
+
expect(
|
|
496
|
+
new BigNumber(-144).divRound(new BigNumber(17)).toString(10)
|
|
497
|
+
).toEqual('-8')
|
|
390
498
|
})
|
|
391
499
|
|
|
392
500
|
it('should return 1 on exact division', () => {
|
|
393
|
-
expect(
|
|
501
|
+
expect(
|
|
502
|
+
new BigNumber(144).divRound(new BigNumber(144)).toString(10)
|
|
503
|
+
).toEqual('1')
|
|
394
504
|
})
|
|
395
505
|
})
|
|
396
506
|
|
|
397
507
|
describe('.mod()', () => {
|
|
398
508
|
it('should modulo small numbers (<=26 bits)', () => {
|
|
399
|
-
expect(new BigNumber('256').mod(new BigNumber(10)).toString(10)).toEqual(
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
expect(new BigNumber('-256').mod(new BigNumber(
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
expect(new BigNumber('
|
|
406
|
-
|
|
407
|
-
|
|
509
|
+
expect(new BigNumber('256').mod(new BigNumber(10)).toString(10)).toEqual(
|
|
510
|
+
'6'
|
|
511
|
+
)
|
|
512
|
+
expect(new BigNumber('-256').mod(new BigNumber(10)).toString(10)).toEqual(
|
|
513
|
+
'-6'
|
|
514
|
+
)
|
|
515
|
+
expect(new BigNumber('256').mod(new BigNumber(-10)).toString(10)).toEqual(
|
|
516
|
+
'6'
|
|
517
|
+
)
|
|
518
|
+
expect(
|
|
519
|
+
new BigNumber('-256').mod(new BigNumber(-10)).toString(10)
|
|
520
|
+
).toEqual('-6')
|
|
521
|
+
|
|
522
|
+
expect(new BigNumber('10').mod(new BigNumber(256)).toString(10)).toEqual(
|
|
523
|
+
'10'
|
|
524
|
+
)
|
|
525
|
+
expect(new BigNumber('-10').mod(new BigNumber(256)).toString(10)).toEqual(
|
|
526
|
+
'-10'
|
|
527
|
+
)
|
|
528
|
+
expect(new BigNumber('10').mod(new BigNumber(-256)).toString(10)).toEqual(
|
|
529
|
+
'10'
|
|
530
|
+
)
|
|
531
|
+
expect(
|
|
532
|
+
new BigNumber('-10').mod(new BigNumber(-256)).toString(10)
|
|
533
|
+
).toEqual('-10')
|
|
408
534
|
})
|
|
409
535
|
|
|
410
536
|
it('should modulo large numbers (>53 bits)', () => {
|
|
411
|
-
expect(
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
537
|
+
expect(
|
|
538
|
+
new BigNumber('1222222225255589')
|
|
539
|
+
.mod(new BigNumber('611111124969028'))
|
|
540
|
+
.toString(10)
|
|
541
|
+
).toEqual('611111100286561')
|
|
542
|
+
expect(
|
|
543
|
+
new BigNumber('-1222222225255589')
|
|
544
|
+
.mod(new BigNumber('611111124969028'))
|
|
545
|
+
.toString(10)
|
|
546
|
+
).toEqual('-611111100286561')
|
|
547
|
+
expect(
|
|
548
|
+
new BigNumber('1222222225255589')
|
|
549
|
+
.mod(new BigNumber('-611111124969028'))
|
|
550
|
+
.toString(10)
|
|
551
|
+
).toEqual('611111100286561')
|
|
552
|
+
expect(
|
|
553
|
+
new BigNumber('-1222222225255589')
|
|
554
|
+
.mod(new BigNumber('-611111124969028'))
|
|
555
|
+
.toString(10)
|
|
556
|
+
).toEqual('-611111100286561')
|
|
415
557
|
|
|
416
|
-
expect(
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
558
|
+
expect(
|
|
559
|
+
new BigNumber('611111124969028')
|
|
560
|
+
.mod(new BigNumber('1222222225255589'))
|
|
561
|
+
.toString(10)
|
|
562
|
+
).toEqual('611111124969028')
|
|
563
|
+
expect(
|
|
564
|
+
new BigNumber('-611111124969028')
|
|
565
|
+
.mod(new BigNumber('1222222225255589'))
|
|
566
|
+
.toString(10)
|
|
567
|
+
).toEqual('-611111124969028')
|
|
568
|
+
expect(
|
|
569
|
+
new BigNumber('611111124969028')
|
|
570
|
+
.mod(new BigNumber('-1222222225255589'))
|
|
571
|
+
.toString(10)
|
|
572
|
+
).toEqual('611111124969028')
|
|
573
|
+
expect(
|
|
574
|
+
new BigNumber('-611111124969028')
|
|
575
|
+
.mod(new BigNumber('-1222222225255589'))
|
|
576
|
+
.toString(10)
|
|
577
|
+
).toEqual('-611111124969028')
|
|
420
578
|
})
|
|
421
579
|
|
|
422
580
|
it('should mod numbers', () => {
|
|
423
|
-
expect(new BigNumber('10').mod(new BigNumber(256)).toString(16)).toEqual(
|
|
424
|
-
|
|
581
|
+
expect(new BigNumber('10').mod(new BigNumber(256)).toString(16)).toEqual(
|
|
582
|
+
'a'
|
|
583
|
+
)
|
|
584
|
+
expect(
|
|
585
|
+
new BigNumber('69527932928').mod(new BigNumber('16974594')).toString(16)
|
|
586
|
+
).toEqual('102f302')
|
|
425
587
|
|
|
426
588
|
expect(new BigNumber(178).div(new BigNumber(10)).toNumber()).toEqual(17)
|
|
427
589
|
expect(new BigNumber(178).mod(new BigNumber(10)).toNumber()).toEqual(8)
|
|
428
590
|
expect(new BigNumber(178).umod(new BigNumber(10)).toNumber()).toEqual(8)
|
|
429
591
|
|
|
430
|
-
expect(new BigNumber(-178).div(new BigNumber(10)).toNumber()).toEqual(
|
|
592
|
+
expect(new BigNumber(-178).div(new BigNumber(10)).toNumber()).toEqual(
|
|
593
|
+
-17
|
|
594
|
+
)
|
|
431
595
|
expect(new BigNumber(-178).mod(new BigNumber(10)).toNumber()).toEqual(-8)
|
|
432
596
|
expect(new BigNumber(-178).umod(new BigNumber(10)).toNumber()).toEqual(2)
|
|
433
597
|
|
|
434
|
-
expect(new BigNumber(178).div(new BigNumber(-10)).toNumber()).toEqual(
|
|
598
|
+
expect(new BigNumber(178).div(new BigNumber(-10)).toNumber()).toEqual(
|
|
599
|
+
-17
|
|
600
|
+
)
|
|
435
601
|
expect(new BigNumber(178).mod(new BigNumber(-10)).toNumber()).toEqual(8)
|
|
436
602
|
expect(new BigNumber(178).umod(new BigNumber(-10)).toNumber()).toEqual(8)
|
|
437
603
|
|
|
438
|
-
expect(new BigNumber(-178).div(new BigNumber(-10)).toNumber()).toEqual(
|
|
439
|
-
|
|
440
|
-
|
|
604
|
+
expect(new BigNumber(-178).div(new BigNumber(-10)).toNumber()).toEqual(
|
|
605
|
+
17
|
|
606
|
+
)
|
|
607
|
+
expect(new BigNumber(-178).mod(new BigNumber(-10)).toNumber()).toEqual(
|
|
608
|
+
-8
|
|
609
|
+
)
|
|
610
|
+
expect(new BigNumber(-178).umod(new BigNumber(-10)).toNumber()).toEqual(
|
|
611
|
+
2
|
|
612
|
+
)
|
|
441
613
|
|
|
442
614
|
expect(new BigNumber(-4).div(new BigNumber(-3)).toNumber()).toEqual(1)
|
|
443
615
|
expect(new BigNumber(-4).mod(new BigNumber(-3)).toNumber()).toEqual(-1)
|
|
@@ -447,19 +619,25 @@ describe('BN.js/Arithmetic', () => {
|
|
|
447
619
|
|
|
448
620
|
const p = new BigNumber(
|
|
449
621
|
'ffffffff00000001000000000000000000000000ffffffffffffffffffffffff',
|
|
450
|
-
16
|
|
622
|
+
16
|
|
623
|
+
)
|
|
451
624
|
const a = new BigNumber(
|
|
452
625
|
'fffffffe00000003fffffffd0000000200000001fffffffe00000002ffffffff' +
|
|
453
|
-
|
|
454
|
-
16
|
|
626
|
+
'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
|
|
627
|
+
16
|
|
628
|
+
)
|
|
455
629
|
expect(a.mod(p).toString(16)).toEqual('0')
|
|
456
630
|
})
|
|
457
631
|
|
|
458
632
|
it('should properly carry the sign inside division', () => {
|
|
459
|
-
const a = new BigNumber(
|
|
633
|
+
const a = new BigNumber(
|
|
634
|
+
'945304eb96065b2a98b57a48a06ae28d285a71b5',
|
|
635
|
+
'hex'
|
|
636
|
+
)
|
|
460
637
|
const b = new BigNumber(
|
|
461
638
|
'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe',
|
|
462
|
-
'hex'
|
|
639
|
+
'hex'
|
|
640
|
+
)
|
|
463
641
|
|
|
464
642
|
expect(a.mul(b).mod(a).cmpn(0)).toEqual(0)
|
|
465
643
|
})
|
|
@@ -471,11 +649,15 @@ describe('BN.js/Arithmetic', () => {
|
|
|
471
649
|
expect(new BigNumber('10', 16).modrn(-256).toString(16)).toEqual('-10')
|
|
472
650
|
expect(new BigNumber('100', 16).modrn(256).toString(16)).toEqual('0')
|
|
473
651
|
expect(new BigNumber('1001', 16).modrn(256).toString(16)).toEqual('1')
|
|
474
|
-
expect(new BigNumber('100000000001', 16).modrn(256).toString(16)).toEqual(
|
|
652
|
+
expect(new BigNumber('100000000001', 16).modrn(256).toString(16)).toEqual(
|
|
653
|
+
'1'
|
|
654
|
+
)
|
|
475
655
|
expect(new BigNumber('100000000001', 16).modrn(257).toString(16)).toEqual(
|
|
476
|
-
new BigNumber('100000000001', 16).mod(new BigNumber(257)).toString(16)
|
|
656
|
+
new BigNumber('100000000001', 16).mod(new BigNumber(257)).toString(16)
|
|
657
|
+
)
|
|
477
658
|
expect(new BigNumber('123456789012', 16).modrn(3).toString(16)).toEqual(
|
|
478
|
-
new BigNumber('123456789012', 16).mod(new BigNumber(3)).toString(16)
|
|
659
|
+
new BigNumber('123456789012', 16).mod(new BigNumber(3)).toString(16)
|
|
660
|
+
)
|
|
479
661
|
})
|
|
480
662
|
})
|
|
481
663
|
|
|
@@ -483,7 +665,9 @@ describe('BN.js/Arithmetic', () => {
|
|
|
483
665
|
it('should return absolute value', () => {
|
|
484
666
|
expect(new BigNumber(0x1001).abs().toString()).toEqual('4097')
|
|
485
667
|
expect(new BigNumber(-0x1001).abs().toString()).toEqual('4097')
|
|
486
|
-
expect(new BigNumber('ffffffff', 16).abs().toString()).toEqual(
|
|
668
|
+
expect(new BigNumber('ffffffff', 16).abs().toString()).toEqual(
|
|
669
|
+
'4294967295'
|
|
670
|
+
)
|
|
487
671
|
})
|
|
488
672
|
})
|
|
489
673
|
|
|
@@ -496,7 +680,8 @@ describe('BN.js/Arithmetic', () => {
|
|
|
496
680
|
|
|
497
681
|
const p192 = new BigNumber(
|
|
498
682
|
'fffffffffffffffffffffffffffffffeffffffffffffffff',
|
|
499
|
-
16
|
|
683
|
+
16
|
|
684
|
+
)
|
|
500
685
|
a = new BigNumber('deadbeef', 16)
|
|
501
686
|
b = a.invm(p192)
|
|
502
687
|
expect(a.mul(b).mod(p192).toString(16)).toEqual('1')
|
|
@@ -516,11 +701,21 @@ describe('BN.js/Arithmetic', () => {
|
|
|
516
701
|
describe('.gcd()', () => {
|
|
517
702
|
it('should return GCD', () => {
|
|
518
703
|
expect(new BigNumber(3).gcd(new BigNumber(2)).toString(10)).toEqual('1')
|
|
519
|
-
expect(new BigNumber(18).gcd(new BigNumber(12)).toString(10)).toEqual(
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
expect(new BigNumber(-18).gcd(new BigNumber(
|
|
523
|
-
|
|
704
|
+
expect(new BigNumber(18).gcd(new BigNumber(12)).toString(10)).toEqual(
|
|
705
|
+
'6'
|
|
706
|
+
)
|
|
707
|
+
expect(new BigNumber(-18).gcd(new BigNumber(12)).toString(10)).toEqual(
|
|
708
|
+
'6'
|
|
709
|
+
)
|
|
710
|
+
expect(new BigNumber(-18).gcd(new BigNumber(-12)).toString(10)).toEqual(
|
|
711
|
+
'6'
|
|
712
|
+
)
|
|
713
|
+
expect(new BigNumber(-18).gcd(new BigNumber(0)).toString(10)).toEqual(
|
|
714
|
+
'18'
|
|
715
|
+
)
|
|
716
|
+
expect(new BigNumber(0).gcd(new BigNumber(-18)).toString(10)).toEqual(
|
|
717
|
+
'18'
|
|
718
|
+
)
|
|
524
719
|
expect(new BigNumber(2).gcd(new BigNumber(0)).toString(10)).toEqual('2')
|
|
525
720
|
expect(new BigNumber(0).gcd(new BigNumber(3)).toString(10)).toEqual('3')
|
|
526
721
|
expect(new BigNumber(0).gcd(new BigNumber(0)).toString(10)).toEqual('0')
|
|
@@ -529,10 +724,18 @@ describe('BN.js/Arithmetic', () => {
|
|
|
529
724
|
|
|
530
725
|
describe('.egcd()', () => {
|
|
531
726
|
it('should return EGCD', () => {
|
|
532
|
-
expect(new BigNumber(3).egcd(new BigNumber(2)).gcd.toString(10)).toEqual(
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
expect(
|
|
727
|
+
expect(new BigNumber(3).egcd(new BigNumber(2)).gcd.toString(10)).toEqual(
|
|
728
|
+
'1'
|
|
729
|
+
)
|
|
730
|
+
expect(
|
|
731
|
+
new BigNumber(18).egcd(new BigNumber(12)).gcd.toString(10)
|
|
732
|
+
).toEqual('6')
|
|
733
|
+
expect(
|
|
734
|
+
new BigNumber(-18).egcd(new BigNumber(12)).gcd.toString(10)
|
|
735
|
+
).toEqual('6')
|
|
736
|
+
expect(new BigNumber(0).egcd(new BigNumber(12)).gcd.toString(10)).toEqual(
|
|
737
|
+
'12'
|
|
738
|
+
)
|
|
536
739
|
})
|
|
537
740
|
it('should not allow 0 input', () => {
|
|
538
741
|
expect(() => {
|
|
@@ -548,24 +751,40 @@ describe('BN.js/Arithmetic', () => {
|
|
|
548
751
|
|
|
549
752
|
describe('BN.max(a, b)', () => {
|
|
550
753
|
it('should return maximum', () => {
|
|
551
|
-
expect(
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
expect(
|
|
754
|
+
expect(
|
|
755
|
+
BigNumber.max(new BigNumber(3), new BigNumber(2)).toString(16)
|
|
756
|
+
).toEqual('3')
|
|
757
|
+
expect(
|
|
758
|
+
BigNumber.max(new BigNumber(2), new BigNumber(3)).toString(16)
|
|
759
|
+
).toEqual('3')
|
|
760
|
+
expect(
|
|
761
|
+
BigNumber.max(new BigNumber(2), new BigNumber(2)).toString(16)
|
|
762
|
+
).toEqual('2')
|
|
763
|
+
expect(
|
|
764
|
+
BigNumber.max(new BigNumber(2), new BigNumber(-2)).toString(16)
|
|
765
|
+
).toEqual('2')
|
|
555
766
|
})
|
|
556
767
|
})
|
|
557
768
|
|
|
558
769
|
describe('BN.min(a, b)', () => {
|
|
559
770
|
it('should return minimum', () => {
|
|
560
|
-
expect(
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
expect(
|
|
771
|
+
expect(
|
|
772
|
+
BigNumber.min(new BigNumber(3), new BigNumber(2)).toString(16)
|
|
773
|
+
).toEqual('2')
|
|
774
|
+
expect(
|
|
775
|
+
BigNumber.min(new BigNumber(2), new BigNumber(3)).toString(16)
|
|
776
|
+
).toEqual('2')
|
|
777
|
+
expect(
|
|
778
|
+
BigNumber.min(new BigNumber(2), new BigNumber(2)).toString(16)
|
|
779
|
+
).toEqual('2')
|
|
780
|
+
expect(
|
|
781
|
+
BigNumber.min(new BigNumber(2), new BigNumber(-2)).toString(16)
|
|
782
|
+
).toEqual('-2')
|
|
564
783
|
})
|
|
565
784
|
})
|
|
566
785
|
|
|
567
786
|
describe('BN.ineg', () => {
|
|
568
|
-
it(
|
|
787
|
+
it("shouldn't change sign for zero", () => {
|
|
569
788
|
expect(new BigNumber(0).ineg().toString(10)).toEqual('0')
|
|
570
789
|
})
|
|
571
790
|
})
|