@bsv/sdk 1.0.26 → 1.0.29
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/package.json +1 -1
- package/dist/cjs/mod.js +0 -25
- package/dist/cjs/mod.js.map +0 -1
- package/dist/cjs/package.json +0 -49
- package/dist/cjs/src/compat/BSM.js +0 -77
- package/dist/cjs/src/compat/BSM.js.map +0 -1
- package/dist/cjs/src/compat/ECIES.js +0 -512
- package/dist/cjs/src/compat/ECIES.js.map +0 -1
- package/dist/cjs/src/compat/HD.js +0 -344
- package/dist/cjs/src/compat/HD.js.map +0 -1
- package/dist/cjs/src/compat/Mnemonic.js +0 -298
- package/dist/cjs/src/compat/Mnemonic.js.map +0 -1
- package/dist/cjs/src/compat/bip-39-wordlist-en.js +0 -2057
- package/dist/cjs/src/compat/bip-39-wordlist-en.js.map +0 -1
- package/dist/cjs/src/compat/index.js +0 -37
- package/dist/cjs/src/compat/index.js.map +0 -1
- package/dist/cjs/src/messages/EncryptedMessage.js +0 -69
- package/dist/cjs/src/messages/EncryptedMessage.js.map +0 -1
- package/dist/cjs/src/messages/SignedMessage.js +0 -85
- package/dist/cjs/src/messages/SignedMessage.js.map +0 -1
- package/dist/cjs/src/messages/index.js +0 -29
- package/dist/cjs/src/messages/index.js.map +0 -1
- package/dist/cjs/src/primitives/AESGCM.js +0 -384
- package/dist/cjs/src/primitives/AESGCM.js.map +0 -1
- package/dist/cjs/src/primitives/BasePoint.js +0 -19
- package/dist/cjs/src/primitives/BasePoint.js.map +0 -1
- package/dist/cjs/src/primitives/BigNumber.js +0 -4272
- package/dist/cjs/src/primitives/BigNumber.js.map +0 -1
- package/dist/cjs/src/primitives/Curve.js +0 -1126
- package/dist/cjs/src/primitives/Curve.js.map +0 -1
- package/dist/cjs/src/primitives/DRBG.js +0 -99
- package/dist/cjs/src/primitives/DRBG.js.map +0 -1
- package/dist/cjs/src/primitives/ECDSA.js +0 -169
- package/dist/cjs/src/primitives/ECDSA.js.map +0 -1
- package/dist/cjs/src/primitives/Hash.js +0 -1387
- package/dist/cjs/src/primitives/Hash.js.map +0 -1
- package/dist/cjs/src/primitives/JacobianPoint.js +0 -400
- package/dist/cjs/src/primitives/JacobianPoint.js.map +0 -1
- package/dist/cjs/src/primitives/K256.js +0 -111
- package/dist/cjs/src/primitives/K256.js.map +0 -1
- package/dist/cjs/src/primitives/Mersenne.js +0 -118
- package/dist/cjs/src/primitives/Mersenne.js.map +0 -1
- package/dist/cjs/src/primitives/MontgomoryMethod.js +0 -150
- package/dist/cjs/src/primitives/MontgomoryMethod.js.map +0 -1
- package/dist/cjs/src/primitives/Point.js +0 -819
- package/dist/cjs/src/primitives/Point.js.map +0 -1
- package/dist/cjs/src/primitives/PrivateKey.js +0 -246
- package/dist/cjs/src/primitives/PrivateKey.js.map +0 -1
- package/dist/cjs/src/primitives/PublicKey.js +0 -168
- package/dist/cjs/src/primitives/PublicKey.js.map +0 -1
- package/dist/cjs/src/primitives/Random.js +0 -57
- package/dist/cjs/src/primitives/Random.js.map +0 -1
- package/dist/cjs/src/primitives/ReductionContext.js +0 -490
- package/dist/cjs/src/primitives/ReductionContext.js.map +0 -1
- package/dist/cjs/src/primitives/Signature.js +0 -357
- package/dist/cjs/src/primitives/Signature.js.map +0 -1
- package/dist/cjs/src/primitives/SymmetricKey.js +0 -82
- package/dist/cjs/src/primitives/SymmetricKey.js.map +0 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +0 -172
- package/dist/cjs/src/primitives/TransactionSignature.js.map +0 -1
- package/dist/cjs/src/primitives/index.js +0 -51
- package/dist/cjs/src/primitives/index.js.map +0 -1
- package/dist/cjs/src/primitives/utils.js +0 -624
- package/dist/cjs/src/primitives/utils.js.map +0 -1
- package/dist/cjs/src/script/LockingScript.js +0 -35
- package/dist/cjs/src/script/LockingScript.js.map +0 -1
- package/dist/cjs/src/script/OP.js +0 -207
- package/dist/cjs/src/script/OP.js.map +0 -1
- package/dist/cjs/src/script/Script.js +0 -435
- package/dist/cjs/src/script/Script.js.map +0 -1
- package/dist/cjs/src/script/ScriptChunk.js +0 -3
- package/dist/cjs/src/script/ScriptChunk.js.map +0 -1
- package/dist/cjs/src/script/ScriptTemplate.js +0 -3
- package/dist/cjs/src/script/ScriptTemplate.js.map +0 -1
- package/dist/cjs/src/script/Spend.js +0 -1252
- package/dist/cjs/src/script/Spend.js.map +0 -1
- package/dist/cjs/src/script/UnlockingScript.js +0 -35
- package/dist/cjs/src/script/UnlockingScript.js.map +0 -1
- package/dist/cjs/src/script/index.js +0 -32
- package/dist/cjs/src/script/index.js.map +0 -1
- package/dist/cjs/src/script/templates/P2PKH.js +0 -120
- package/dist/cjs/src/script/templates/P2PKH.js.map +0 -1
- package/dist/cjs/src/script/templates/RPuzzle.js +0 -125
- package/dist/cjs/src/script/templates/RPuzzle.js.map +0 -1
- package/dist/cjs/src/script/templates/index.js +0 -11
- package/dist/cjs/src/script/templates/index.js.map +0 -1
- package/dist/cjs/src/transaction/Broadcaster.js +0 -3
- package/dist/cjs/src/transaction/Broadcaster.js.map +0 -1
- package/dist/cjs/src/transaction/ChainTracker.js +0 -3
- package/dist/cjs/src/transaction/ChainTracker.js.map +0 -1
- package/dist/cjs/src/transaction/FeeModel.js +0 -3
- package/dist/cjs/src/transaction/FeeModel.js.map +0 -1
- package/dist/cjs/src/transaction/MerklePath.js +0 -239
- package/dist/cjs/src/transaction/MerklePath.js.map +0 -1
- package/dist/cjs/src/transaction/Transaction.js +0 -616
- package/dist/cjs/src/transaction/Transaction.js.map +0 -1
- package/dist/cjs/src/transaction/TransactionInput.js +0 -3
- package/dist/cjs/src/transaction/TransactionInput.js.map +0 -1
- package/dist/cjs/src/transaction/TransactionOutput.js +0 -3
- package/dist/cjs/src/transaction/TransactionOutput.js.map +0 -1
- package/dist/cjs/src/transaction/broadcasters/ARC.js +0 -112
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +0 -1
- package/dist/cjs/src/transaction/broadcasters/index.js +0 -9
- package/dist/cjs/src/transaction/broadcasters/index.js.map +0 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +0 -69
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +0 -1
- package/dist/cjs/src/transaction/fee-models/index.js +0 -9
- package/dist/cjs/src/transaction/fee-models/index.js.map +0 -1
- package/dist/cjs/src/transaction/index.js +0 -11
- package/dist/cjs/src/transaction/index.js.map +0 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/esm/mod.js +0 -9
- package/dist/esm/mod.js.map +0 -1
- package/dist/esm/src/compat/BSM.js +0 -45
- package/dist/esm/src/compat/BSM.js.map +0 -1
- package/dist/esm/src/compat/ECIES.js +0 -483
- package/dist/esm/src/compat/ECIES.js.map +0 -1
- package/dist/esm/src/compat/HD.js +0 -322
- package/dist/esm/src/compat/HD.js.map +0 -1
- package/dist/esm/src/compat/Mnemonic.js +0 -272
- package/dist/esm/src/compat/Mnemonic.js.map +0 -1
- package/dist/esm/src/compat/bip-39-wordlist-en.js +0 -2054
- package/dist/esm/src/compat/bip-39-wordlist-en.js.map +0 -1
- package/dist/esm/src/compat/index.js +0 -5
- package/dist/esm/src/compat/index.js.map +0 -1
- package/dist/esm/src/messages/EncryptedMessage.js +0 -61
- package/dist/esm/src/messages/EncryptedMessage.js.map +0 -1
- package/dist/esm/src/messages/SignedMessage.js +0 -77
- package/dist/esm/src/messages/SignedMessage.js.map +0 -1
- package/dist/esm/src/messages/index.js +0 -3
- package/dist/esm/src/messages/index.js.map +0 -1
- package/dist/esm/src/primitives/AESGCM.js +0 -371
- package/dist/esm/src/primitives/AESGCM.js.map +0 -1
- package/dist/esm/src/primitives/BasePoint.js +0 -16
- package/dist/esm/src/primitives/BasePoint.js.map +0 -1
- package/dist/esm/src/primitives/BigNumber.js +0 -4307
- package/dist/esm/src/primitives/BigNumber.js.map +0 -1
- package/dist/esm/src/primitives/Curve.js +0 -1141
- package/dist/esm/src/primitives/Curve.js.map +0 -1
- package/dist/esm/src/primitives/DRBG.js +0 -98
- package/dist/esm/src/primitives/DRBG.js.map +0 -1
- package/dist/esm/src/primitives/ECDSA.js +0 -161
- package/dist/esm/src/primitives/ECDSA.js.map +0 -1
- package/dist/esm/src/primitives/Hash.js +0 -1391
- package/dist/esm/src/primitives/Hash.js.map +0 -1
- package/dist/esm/src/primitives/JacobianPoint.js +0 -398
- package/dist/esm/src/primitives/JacobianPoint.js.map +0 -1
- package/dist/esm/src/primitives/K256.js +0 -105
- package/dist/esm/src/primitives/K256.js.map +0 -1
- package/dist/esm/src/primitives/Mersenne.js +0 -117
- package/dist/esm/src/primitives/Mersenne.js.map +0 -1
- package/dist/esm/src/primitives/MontgomoryMethod.js +0 -149
- package/dist/esm/src/primitives/MontgomoryMethod.js.map +0 -1
- package/dist/esm/src/primitives/Point.js +0 -816
- package/dist/esm/src/primitives/Point.js.map +0 -1
- package/dist/esm/src/primitives/PrivateKey.js +0 -240
- package/dist/esm/src/primitives/PrivateKey.js.map +0 -1
- package/dist/esm/src/primitives/PublicKey.js +0 -162
- package/dist/esm/src/primitives/PublicKey.js.map +0 -1
- package/dist/esm/src/primitives/Random.js +0 -56
- package/dist/esm/src/primitives/Random.js.map +0 -1
- package/dist/esm/src/primitives/ReductionContext.js +0 -486
- package/dist/esm/src/primitives/ReductionContext.js.map +0 -1
- package/dist/esm/src/primitives/Signature.js +0 -360
- package/dist/esm/src/primitives/Signature.js.map +0 -1
- package/dist/esm/src/primitives/SymmetricKey.js +0 -76
- package/dist/esm/src/primitives/SymmetricKey.js.map +0 -1
- package/dist/esm/src/primitives/TransactionSignature.js +0 -144
- package/dist/esm/src/primitives/TransactionSignature.js.map +0 -1
- package/dist/esm/src/primitives/index.js +0 -13
- package/dist/esm/src/primitives/index.js.map +0 -1
- package/dist/esm/src/primitives/utils.js +0 -609
- package/dist/esm/src/primitives/utils.js.map +0 -1
- package/dist/esm/src/script/LockingScript.js +0 -29
- package/dist/esm/src/script/LockingScript.js.map +0 -1
- package/dist/esm/src/script/OP.js +0 -205
- package/dist/esm/src/script/OP.js.map +0 -1
- package/dist/esm/src/script/Script.js +0 -430
- package/dist/esm/src/script/Script.js.map +0 -1
- package/dist/esm/src/script/ScriptChunk.js +0 -2
- package/dist/esm/src/script/ScriptChunk.js.map +0 -1
- package/dist/esm/src/script/ScriptTemplate.js +0 -2
- package/dist/esm/src/script/ScriptTemplate.js.map +0 -1
- package/dist/esm/src/script/Spend.js +0 -1240
- package/dist/esm/src/script/Spend.js.map +0 -1
- package/dist/esm/src/script/UnlockingScript.js +0 -29
- package/dist/esm/src/script/UnlockingScript.js.map +0 -1
- package/dist/esm/src/script/index.js +0 -7
- package/dist/esm/src/script/index.js.map +0 -1
- package/dist/esm/src/script/templates/P2PKH.js +0 -113
- package/dist/esm/src/script/templates/P2PKH.js.map +0 -1
- package/dist/esm/src/script/templates/RPuzzle.js +0 -119
- package/dist/esm/src/script/templates/RPuzzle.js.map +0 -1
- package/dist/esm/src/script/templates/index.js +0 -3
- package/dist/esm/src/script/templates/index.js.map +0 -1
- package/dist/esm/src/transaction/Broadcaster.js +0 -2
- package/dist/esm/src/transaction/Broadcaster.js.map +0 -1
- package/dist/esm/src/transaction/ChainTracker.js +0 -2
- package/dist/esm/src/transaction/ChainTracker.js.map +0 -1
- package/dist/esm/src/transaction/FeeModel.js +0 -2
- package/dist/esm/src/transaction/FeeModel.js.map +0 -1
- package/dist/esm/src/transaction/MerklePath.js +0 -237
- package/dist/esm/src/transaction/MerklePath.js.map +0 -1
- package/dist/esm/src/transaction/Transaction.js +0 -617
- package/dist/esm/src/transaction/Transaction.js.map +0 -1
- package/dist/esm/src/transaction/TransactionInput.js +0 -2
- package/dist/esm/src/transaction/TransactionInput.js.map +0 -1
- package/dist/esm/src/transaction/TransactionOutput.js +0 -2
- package/dist/esm/src/transaction/TransactionOutput.js.map +0 -1
- package/dist/esm/src/transaction/broadcasters/ARC.js +0 -111
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +0 -1
- package/dist/esm/src/transaction/broadcasters/index.js +0 -2
- package/dist/esm/src/transaction/broadcasters/index.js.map +0 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +0 -71
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +0 -1
- package/dist/esm/src/transaction/fee-models/index.js +0 -2
- package/dist/esm/src/transaction/fee-models/index.js.map +0 -1
- package/dist/esm/src/transaction/index.js +0 -3
- package/dist/esm/src/transaction/index.js.map +0 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/types/mod.d.ts +0 -9
- package/dist/types/mod.d.ts.map +0 -1
- package/dist/types/src/compat/BSM.d.ts +0 -28
- package/dist/types/src/compat/BSM.d.ts.map +0 -1
- package/dist/types/src/compat/ECIES.d.ts +0 -62
- package/dist/types/src/compat/ECIES.d.ts.map +0 -1
- package/dist/types/src/compat/HD.d.ts +0 -131
- package/dist/types/src/compat/HD.d.ts.map +0 -1
- package/dist/types/src/compat/Mnemonic.d.ts +0 -132
- package/dist/types/src/compat/Mnemonic.d.ts.map +0 -1
- package/dist/types/src/compat/bip-39-wordlist-en.d.ts +0 -5
- package/dist/types/src/compat/bip-39-wordlist-en.d.ts.map +0 -1
- package/dist/types/src/compat/index.d.ts +0 -5
- package/dist/types/src/compat/index.d.ts.map +0 -1
- package/dist/types/src/messages/EncryptedMessage.d.ts +0 -20
- package/dist/types/src/messages/EncryptedMessage.d.ts.map +0 -1
- package/dist/types/src/messages/SignedMessage.d.ts +0 -21
- package/dist/types/src/messages/SignedMessage.d.ts.map +0 -1
- package/dist/types/src/messages/index.d.ts +0 -3
- package/dist/types/src/messages/index.d.ts.map +0 -1
- package/dist/types/src/primitives/AESGCM.d.ts +0 -14
- package/dist/types/src/primitives/AESGCM.d.ts.map +0 -1
- package/dist/types/src/primitives/BasePoint.d.ts +0 -22
- package/dist/types/src/primitives/BasePoint.d.ts.map +0 -1
- package/dist/types/src/primitives/BigNumber.d.ts +0 -1895
- package/dist/types/src/primitives/BigNumber.d.ts.map +0 -1
- package/dist/types/src/primitives/Curve.d.ts +0 -55
- package/dist/types/src/primitives/Curve.d.ts.map +0 -1
- package/dist/types/src/primitives/DRBG.d.ts +0 -54
- package/dist/types/src/primitives/DRBG.d.ts.map +0 -1
- package/dist/types/src/primitives/ECDSA.d.ts +0 -39
- package/dist/types/src/primitives/ECDSA.d.ts.map +0 -1
- package/dist/types/src/primitives/Hash.d.ts +0 -450
- package/dist/types/src/primitives/Hash.d.ts.map +0 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts +0 -164
- package/dist/types/src/primitives/JacobianPoint.d.ts.map +0 -1
- package/dist/types/src/primitives/K256.d.ts +0 -53
- package/dist/types/src/primitives/K256.d.ts.map +0 -1
- package/dist/types/src/primitives/Mersenne.d.ts +0 -72
- package/dist/types/src/primitives/Mersenne.d.ts.map +0 -1
- package/dist/types/src/primitives/MontgomoryMethod.d.ts +0 -96
- package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +0 -1
- package/dist/types/src/primitives/Point.d.ts +0 -303
- package/dist/types/src/primitives/Point.d.ts.map +0 -1
- package/dist/types/src/primitives/PrivateKey.d.ts +0 -174
- package/dist/types/src/primitives/PrivateKey.d.ts.map +0 -1
- package/dist/types/src/primitives/PublicKey.d.ts +0 -120
- package/dist/types/src/primitives/PublicKey.d.ts.map +0 -1
- package/dist/types/src/primitives/Random.d.ts +0 -14
- package/dist/types/src/primitives/Random.d.ts.map +0 -1
- package/dist/types/src/primitives/ReductionContext.d.ts +0 -308
- package/dist/types/src/primitives/ReductionContext.d.ts.map +0 -1
- package/dist/types/src/primitives/Signature.d.ts +0 -162
- package/dist/types/src/primitives/Signature.d.ts.map +0 -1
- package/dist/types/src/primitives/SymmetricKey.d.ts +0 -55
- package/dist/types/src/primitives/SymmetricKey.d.ts.map +0 -1
- package/dist/types/src/primitives/TransactionSignature.d.ts +0 -36
- package/dist/types/src/primitives/TransactionSignature.d.ts.map +0 -1
- package/dist/types/src/primitives/index.d.ts +0 -13
- package/dist/types/src/primitives/index.d.ts.map +0 -1
- package/dist/types/src/primitives/utils.d.ts +0 -124
- package/dist/types/src/primitives/utils.d.ts.map +0 -1
- package/dist/types/src/script/LockingScript.d.ts +0 -25
- package/dist/types/src/script/LockingScript.d.ts.map +0 -1
- package/dist/types/src/script/OP.d.ts +0 -193
- package/dist/types/src/script/OP.d.ts.map +0 -1
- package/dist/types/src/script/Script.d.ts +0 -148
- package/dist/types/src/script/Script.d.ts.map +0 -1
- package/dist/types/src/script/ScriptChunk.d.ts +0 -8
- package/dist/types/src/script/ScriptChunk.d.ts.map +0 -1
- package/dist/types/src/script/ScriptTemplate.d.ts +0 -33
- package/dist/types/src/script/ScriptTemplate.d.ts.map +0 -1
- package/dist/types/src/script/Spend.d.ts +0 -103
- package/dist/types/src/script/Spend.d.ts.map +0 -1
- package/dist/types/src/script/UnlockingScript.d.ts +0 -25
- package/dist/types/src/script/UnlockingScript.d.ts.map +0 -1
- package/dist/types/src/script/index.d.ts +0 -8
- package/dist/types/src/script/index.d.ts.map +0 -1
- package/dist/types/src/script/templates/P2PKH.d.ts +0 -40
- package/dist/types/src/script/templates/P2PKH.d.ts.map +0 -1
- package/dist/types/src/script/templates/RPuzzle.d.ts +0 -47
- package/dist/types/src/script/templates/RPuzzle.d.ts.map +0 -1
- package/dist/types/src/script/templates/index.d.ts +0 -3
- package/dist/types/src/script/templates/index.d.ts.map +0 -1
- package/dist/types/src/transaction/Broadcaster.d.ts +0 -39
- package/dist/types/src/transaction/Broadcaster.d.ts.map +0 -1
- package/dist/types/src/transaction/ChainTracker.d.ts +0 -23
- package/dist/types/src/transaction/ChainTracker.d.ts.map +0 -1
- package/dist/types/src/transaction/FeeModel.d.ts +0 -12
- package/dist/types/src/transaction/FeeModel.d.ts.map +0 -1
- package/dist/types/src/transaction/MerklePath.d.ts +0 -91
- package/dist/types/src/transaction/MerklePath.d.ts.map +0 -1
- package/dist/types/src/transaction/Transaction.d.ts +0 -215
- package/dist/types/src/transaction/Transaction.d.ts.map +0 -1
- package/dist/types/src/transaction/TransactionInput.d.ts +0 -63
- package/dist/types/src/transaction/TransactionInput.d.ts.map +0 -1
- package/dist/types/src/transaction/TransactionOutput.d.ts +0 -36
- package/dist/types/src/transaction/TransactionOutput.d.ts.map +0 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts +0 -28
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +0 -1
- package/dist/types/src/transaction/broadcasters/index.d.ts +0 -2
- package/dist/types/src/transaction/broadcasters/index.d.ts.map +0 -1
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +0 -26
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +0 -1
- package/dist/types/src/transaction/fee-models/index.d.ts +0 -2
- package/dist/types/src/transaction/fee-models/index.d.ts.map +0 -1
- package/dist/types/src/transaction/index.d.ts +0 -7
- package/dist/types/src/transaction/index.d.ts.map +0 -1
- package/dist/types/tsconfig.types.tsbuildinfo +0 -1
package/package.json
CHANGED
package/dist/cjs/mod.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./src/primitives/index.js"), exports);
|
|
18
|
-
__exportStar(require("./src/script/index.js"), exports);
|
|
19
|
-
__exportStar(require("./src/script/templates/index.js"), exports);
|
|
20
|
-
__exportStar(require("./src/transaction/index.js"), exports);
|
|
21
|
-
__exportStar(require("./src/transaction/fee-models/index.js"), exports);
|
|
22
|
-
__exportStar(require("./src/transaction/broadcasters/index.js"), exports);
|
|
23
|
-
__exportStar(require("./src/messages/index.js"), exports);
|
|
24
|
-
__exportStar(require("./src/compat/index.js"), exports);
|
|
25
|
-
//# sourceMappingURL=mod.js.map
|
package/dist/cjs/mod.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../mod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAyC;AACzC,wDAAqC;AACrC,kEAA+C;AAC/C,6DAA0C;AAC1C,wEAAqD;AACrD,0EAAuD;AACvD,0DAAuC;AACvC,wDAAqC"}
|
package/dist/cjs/package.json
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@bsv/sdk",
|
|
3
|
-
"version": "1.0.25",
|
|
4
|
-
"type": "commonjs",
|
|
5
|
-
"description": "BSV Blockchain Software Development Kit",
|
|
6
|
-
"files": [
|
|
7
|
-
"dist",
|
|
8
|
-
"src",
|
|
9
|
-
"docs",
|
|
10
|
-
"mod.ts",
|
|
11
|
-
"LICENSE.txt"
|
|
12
|
-
],
|
|
13
|
-
"scripts": {
|
|
14
|
-
"test": "npm run build && jest",
|
|
15
|
-
"test:watch": "npm run build && jest --watch",
|
|
16
|
-
"test:coverage": "npm run build && jest --coverage",
|
|
17
|
-
"lint": "ts-standard --fix src/**/*.ts",
|
|
18
|
-
"build": "tsc -b && tsconfig-to-dual-package tsconfig.cjs.json",
|
|
19
|
-
"dev": "tsc -b -w",
|
|
20
|
-
"prepublish": "npm run build",
|
|
21
|
-
"doc": "ts2md --inputFilename=src/script/index.ts --outputFilename=docs/script.md --filenameSubString=script --firstHeadingLevel=1 && ts2md --inputFilename=src/primitives/index.ts --outputFilename=docs/primitives.md --filenameSubString=primitives --firstHeadingLevel=1 && ts2md --inputFilename=src/transaction/index.ts --outputFilename=docs/transaction.md --filenameSubString=transaction --firstHeadingLevel=1 && ts2md --inputFilename=src/messages/index.ts --outputFilename=docs/messages.md --filenameSubString=messages --firstHeadingLevel=1 && ts2md --inputFilename=src/compat/index.ts --outputFilename=docs/compat.md --filenameSubString=compat --firstHeadingLevel=1"
|
|
22
|
-
},
|
|
23
|
-
"repository": {
|
|
24
|
-
"type": "git",
|
|
25
|
-
"url": "git+https://github.com/bitcoin-sv/ts-sdk.git"
|
|
26
|
-
},
|
|
27
|
-
"keywords": [
|
|
28
|
-
"BSV",
|
|
29
|
-
"Blockchain",
|
|
30
|
-
"SDK",
|
|
31
|
-
"Bitcoin",
|
|
32
|
-
"SV"
|
|
33
|
-
],
|
|
34
|
-
"author": "BSV Blockchain Association",
|
|
35
|
-
"license": "SEE LICENSE IN LICENSE.txt",
|
|
36
|
-
"bugs": {
|
|
37
|
-
"url": "https://github.com/bitcoin-sv/ts-sdk/issues"
|
|
38
|
-
},
|
|
39
|
-
"homepage": "https://github.com/bitcoin-sv/ts-sdk#readme",
|
|
40
|
-
"devDependencies": {
|
|
41
|
-
"@types/jest": "^29.5.5",
|
|
42
|
-
"jest": "^29.7.0",
|
|
43
|
-
"ts-jest": "^29.1.1",
|
|
44
|
-
"ts-standard": "^12.0.2",
|
|
45
|
-
"ts2md": "^0.2.0",
|
|
46
|
-
"tsconfig-to-dual-package": "^1.2.0",
|
|
47
|
-
"typescript": "^5.2.2"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.verify = exports.sign = exports.magicHash = void 0;
|
|
30
|
-
const BigNumber_js_1 = __importDefault(require("../primitives/BigNumber.js"));
|
|
31
|
-
const utils_js_1 = require("../primitives/utils.js");
|
|
32
|
-
const ECDSA = __importStar(require("../primitives/ECDSA.js"));
|
|
33
|
-
const Hash = __importStar(require("../primitives/Hash.js"));
|
|
34
|
-
const prefix = 'Bitcoin Signed Message:\n';
|
|
35
|
-
/**
|
|
36
|
-
* Generates a SHA256 double-hash of the prefixed message.
|
|
37
|
-
* @deprecated Replaced by BRC-77 which uses a more secure and private method for message signing.
|
|
38
|
-
* @param messageBuf The message buffer to be hashed.
|
|
39
|
-
* @returns The double-hash of the prefixed message as a number array.
|
|
40
|
-
*/
|
|
41
|
-
const magicHash = (messageBuf) => {
|
|
42
|
-
const bw = new utils_js_1.Writer();
|
|
43
|
-
bw.writeVarIntNum(prefix.length);
|
|
44
|
-
bw.write((0, utils_js_1.toArray)(prefix, 'utf8'));
|
|
45
|
-
bw.writeVarIntNum(messageBuf.length);
|
|
46
|
-
bw.write(messageBuf);
|
|
47
|
-
const buf = bw.toArray();
|
|
48
|
-
const hashBuf = Hash.hash256(buf);
|
|
49
|
-
return hashBuf;
|
|
50
|
-
};
|
|
51
|
-
exports.magicHash = magicHash;
|
|
52
|
-
/**
|
|
53
|
-
* Signs a BSM message using the given private key.
|
|
54
|
-
* @deprecated Replaced by BRC-77 which employs BRC-42 key derivation and BRC-43 invoice numbers for enhanced security and privacy.
|
|
55
|
-
* @param message The message to be signed as a number array.
|
|
56
|
-
* @param privateKey The private key used for signing the message.
|
|
57
|
-
* @returns The signature object.
|
|
58
|
-
*/
|
|
59
|
-
const sign = (message, privateKey) => {
|
|
60
|
-
const hashBuf = (0, exports.magicHash)(message);
|
|
61
|
-
return ECDSA.sign(new BigNumber_js_1.default(hashBuf), privateKey, true);
|
|
62
|
-
};
|
|
63
|
-
exports.sign = sign;
|
|
64
|
-
/**
|
|
65
|
-
* Verifies a BSM signed message using the given public key.
|
|
66
|
-
* @deprecated Replaced by BRC-77 which provides privately-verifiable signatures and avoids key reuse.
|
|
67
|
-
* @param message The message to be verified as a number array.
|
|
68
|
-
* @param sig The signature object.
|
|
69
|
-
* @param pubKey The public key for verification.
|
|
70
|
-
* @returns True if the signature is valid, false otherwise.
|
|
71
|
-
*/
|
|
72
|
-
const verify = (message, sig, pubKey) => {
|
|
73
|
-
const hashBuf = (0, exports.magicHash)(message);
|
|
74
|
-
return ECDSA.verify(new BigNumber_js_1.default(hashBuf), sig, pubKey);
|
|
75
|
-
};
|
|
76
|
-
exports.verify = verify;
|
|
77
|
-
//# sourceMappingURL=BSM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BSM.js","sourceRoot":"","sources":["../../../../src/compat/BSM.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8EAAkD;AAClD,qDAAwD;AACxD,8DAA+C;AAC/C,4DAA6C;AAK7C,MAAM,MAAM,GAAG,2BAA2B,CAAA;AAE1C;;;;;GAKG;AACI,MAAM,SAAS,GAAG,CAAC,UAAoB,EAAY,EAAE;IAC1D,MAAM,EAAE,GAAG,IAAI,iBAAM,EAAE,CAAA;IACvB,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAChC,EAAE,CAAC,KAAK,CAAC,IAAA,kBAAO,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACpC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACpB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AATY,QAAA,SAAS,aASrB;AAED;;;;;;GAMG;AACI,MAAM,IAAI,GAAG,CAAC,OAAiB,EAAE,UAAsB,EAAa,EAAE;IAC3E,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAA;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,sBAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;AAC7D,CAAC,CAAA;AAHY,QAAA,IAAI,QAGhB;AAED;;;;;;;GAOG;AACI,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAE,GAAc,EAAE,MAAiB,EAAW,EAAE;IACtF,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAA;IAClC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,sBAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;AAC1D,CAAC,CAAA;AAHY,QAAA,MAAM,UAGlB"}
|
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
// import { AESWrappercbc } from './aescbc'
|
|
30
|
-
const Random_js_1 = __importDefault(require("../primitives/Random.js"));
|
|
31
|
-
const PrivateKey_js_1 = __importDefault(require("../primitives/PrivateKey.js"));
|
|
32
|
-
const PublicKey_js_1 = __importDefault(require("../primitives/PublicKey.js"));
|
|
33
|
-
const Point_js_1 = __importDefault(require("../primitives/Point.js"));
|
|
34
|
-
const Hash = __importStar(require("../primitives/Hash.js"));
|
|
35
|
-
const utils_js_1 = require("../primitives/utils.js");
|
|
36
|
-
function AES(key) {
|
|
37
|
-
if (!this._tables[0][0][0])
|
|
38
|
-
this._precompute();
|
|
39
|
-
let tmp, encKey, decKey;
|
|
40
|
-
const sbox = this._tables[0][4];
|
|
41
|
-
const decTable = this._tables[1];
|
|
42
|
-
const keyLen = key.length;
|
|
43
|
-
let rcon = 1;
|
|
44
|
-
if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {
|
|
45
|
-
throw new Error('invalid aes key size');
|
|
46
|
-
}
|
|
47
|
-
this._key = [encKey = key.slice(0), decKey = []];
|
|
48
|
-
// schedule encryption keys
|
|
49
|
-
for (var i = keyLen; i < 4 * keyLen + 28; i++) {
|
|
50
|
-
tmp = encKey[i - 1];
|
|
51
|
-
// apply sbox
|
|
52
|
-
if (i % keyLen === 0 || (keyLen === 8 && i % keyLen === 4)) {
|
|
53
|
-
tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255];
|
|
54
|
-
// shift rows and add rcon
|
|
55
|
-
if (i % keyLen === 0) {
|
|
56
|
-
tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24;
|
|
57
|
-
rcon = rcon << 1 ^ (rcon >> 7) * 283;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
encKey[i] = encKey[i - keyLen] ^ tmp;
|
|
61
|
-
}
|
|
62
|
-
// schedule decryption keys
|
|
63
|
-
for (let j = 0; i; j++, i--) {
|
|
64
|
-
tmp = encKey[j & 3 ? i : i - 4];
|
|
65
|
-
if (i <= 4 || j < 4) {
|
|
66
|
-
decKey[j] = tmp;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
decKey[j] = decTable[0][sbox[tmp >>> 24]] ^
|
|
70
|
-
decTable[1][sbox[tmp >> 16 & 255]] ^
|
|
71
|
-
decTable[2][sbox[tmp >> 8 & 255]] ^
|
|
72
|
-
decTable[3][sbox[tmp & 255]];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
AES.prototype = {
|
|
77
|
-
/**
|
|
78
|
-
* Encrypt an array of 4 big-endian words.
|
|
79
|
-
* @param {Array} data The plaintext.
|
|
80
|
-
* @return {Array} The ciphertext.
|
|
81
|
-
*/
|
|
82
|
-
encrypt: function (data) { return this._crypt(data, 0); },
|
|
83
|
-
/**
|
|
84
|
-
* Decrypt an array of 4 big-endian words.
|
|
85
|
-
* @param {Array} data The ciphertext.
|
|
86
|
-
* @return {Array} The plaintext.
|
|
87
|
-
*/
|
|
88
|
-
decrypt: function (data) { return this._crypt(data, 1); },
|
|
89
|
-
/**
|
|
90
|
-
* The expanded S-box and inverse S-box tables. These will be computed
|
|
91
|
-
* on the client so that we don't have to send them down the wire.
|
|
92
|
-
*
|
|
93
|
-
* There are two tables, _tables[0] is for encryption and
|
|
94
|
-
* _tables[1] is for decryption.
|
|
95
|
-
*
|
|
96
|
-
* The first 4 sub-tables are the expanded S-box with MixColumns. The
|
|
97
|
-
* last (_tables[01][4]) is the S-box itself.
|
|
98
|
-
*
|
|
99
|
-
* @private
|
|
100
|
-
*/
|
|
101
|
-
_tables: [
|
|
102
|
-
[new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)],
|
|
103
|
-
[new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)]
|
|
104
|
-
],
|
|
105
|
-
// Expand the S-box tables.
|
|
106
|
-
_precompute: function () {
|
|
107
|
-
const encTable = this._tables[0];
|
|
108
|
-
const decTable = this._tables[1];
|
|
109
|
-
const sbox = encTable[4];
|
|
110
|
-
const sboxInv = decTable[4];
|
|
111
|
-
let i;
|
|
112
|
-
let x;
|
|
113
|
-
let xInv;
|
|
114
|
-
const d = new Uint8Array(256);
|
|
115
|
-
const th = new Uint8Array(256);
|
|
116
|
-
let x2;
|
|
117
|
-
let x4;
|
|
118
|
-
let x8;
|
|
119
|
-
let s;
|
|
120
|
-
let tEnc;
|
|
121
|
-
let tDec;
|
|
122
|
-
// Compute double and third tables
|
|
123
|
-
for (i = 0; i < 256; i++) {
|
|
124
|
-
th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i;
|
|
125
|
-
}
|
|
126
|
-
for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {
|
|
127
|
-
// Compute sbox
|
|
128
|
-
s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;
|
|
129
|
-
s = s >> 8 ^ s & 255 ^ 99;
|
|
130
|
-
sbox[x] = s;
|
|
131
|
-
sboxInv[s] = x;
|
|
132
|
-
// Compute MixColumns
|
|
133
|
-
x8 = d[x4 = d[x2 = d[x]]];
|
|
134
|
-
tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;
|
|
135
|
-
tEnc = d[s] * 0x101 ^ s * 0x1010100;
|
|
136
|
-
for (i = 0; i < 4; i++) {
|
|
137
|
-
encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8;
|
|
138
|
-
decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
/**
|
|
143
|
-
* Encryption and decryption core.
|
|
144
|
-
* @param {Array} input Four words to be encrypted or decrypted.
|
|
145
|
-
* @param dir The direction, 0 for encrypt and 1 for decrypt.
|
|
146
|
-
* @return {Array} The four encrypted or decrypted words.
|
|
147
|
-
* @private
|
|
148
|
-
*/
|
|
149
|
-
_crypt: function (input, dir) {
|
|
150
|
-
if (input.length !== 4) {
|
|
151
|
-
throw new Error('invalid aes block size');
|
|
152
|
-
}
|
|
153
|
-
const key = this._key[dir];
|
|
154
|
-
// state variables a,b,c,d are loaded with pre-whitened data
|
|
155
|
-
let a = input[0] ^ key[0];
|
|
156
|
-
let b = input[dir ? 3 : 1] ^ key[1];
|
|
157
|
-
let c = input[2] ^ key[2];
|
|
158
|
-
let d = input[dir ? 1 : 3] ^ key[3];
|
|
159
|
-
let a2;
|
|
160
|
-
let b2;
|
|
161
|
-
let c2;
|
|
162
|
-
const nInnerRounds = key.length / 4 - 2;
|
|
163
|
-
let i;
|
|
164
|
-
let kIndex = 4;
|
|
165
|
-
const out = new Uint32Array(4);
|
|
166
|
-
const // <--- this is slower in Node.js, about the same in Chrome */
|
|
167
|
-
table = this._tables[dir];
|
|
168
|
-
// load up the tables
|
|
169
|
-
const t0 = table[0];
|
|
170
|
-
const t1 = table[1];
|
|
171
|
-
const t2 = table[2];
|
|
172
|
-
const t3 = table[3];
|
|
173
|
-
const sbox = table[4];
|
|
174
|
-
// Inner rounds. Cribbed from OpenSSL.
|
|
175
|
-
for (i = 0; i < nInnerRounds; i++) {
|
|
176
|
-
a2 = t0[a >>> 24] ^ t1[b >> 16 & 255] ^ t2[c >> 8 & 255] ^ t3[d & 255] ^ key[kIndex];
|
|
177
|
-
b2 = t0[b >>> 24] ^ t1[c >> 16 & 255] ^ t2[d >> 8 & 255] ^ t3[a & 255] ^ key[kIndex + 1];
|
|
178
|
-
c2 = t0[c >>> 24] ^ t1[d >> 16 & 255] ^ t2[a >> 8 & 255] ^ t3[b & 255] ^ key[kIndex + 2];
|
|
179
|
-
d = t0[d >>> 24] ^ t1[a >> 16 & 255] ^ t2[b >> 8 & 255] ^ t3[c & 255] ^ key[kIndex + 3];
|
|
180
|
-
kIndex += 4;
|
|
181
|
-
a = a2;
|
|
182
|
-
b = b2;
|
|
183
|
-
c = c2;
|
|
184
|
-
}
|
|
185
|
-
// Last round.
|
|
186
|
-
for (i = 0; i < 4; i++) {
|
|
187
|
-
out[dir ? 3 & -i : i] =
|
|
188
|
-
sbox[a >>> 24] << 24 ^
|
|
189
|
-
sbox[b >> 16 & 255] << 16 ^
|
|
190
|
-
sbox[c >> 8 & 255] << 8 ^
|
|
191
|
-
sbox[d & 255] ^
|
|
192
|
-
key[kIndex++];
|
|
193
|
-
a2 = a;
|
|
194
|
-
a = b;
|
|
195
|
-
b = c;
|
|
196
|
-
c = d;
|
|
197
|
-
d = a2;
|
|
198
|
-
}
|
|
199
|
-
return out;
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
class AESWrapper {
|
|
203
|
-
static encrypt(messageBuf, keyBuf) {
|
|
204
|
-
const key = AESWrapper.buf2Words((keyBuf));
|
|
205
|
-
const message = AESWrapper.buf2Words((messageBuf));
|
|
206
|
-
const a = new AES(key);
|
|
207
|
-
const enc = a.encrypt(message);
|
|
208
|
-
const encBuf = AESWrapper.words2Buf(enc);
|
|
209
|
-
return encBuf;
|
|
210
|
-
}
|
|
211
|
-
static decrypt(encBuf, keyBuf) {
|
|
212
|
-
const enc = AESWrapper.buf2Words((encBuf));
|
|
213
|
-
const key = AESWrapper.buf2Words((keyBuf));
|
|
214
|
-
const a = new AES(key);
|
|
215
|
-
const message = a.decrypt(enc);
|
|
216
|
-
const messageBuf = AESWrapper.words2Buf(message);
|
|
217
|
-
return messageBuf;
|
|
218
|
-
}
|
|
219
|
-
static buf2Words(buf) {
|
|
220
|
-
if (buf.length % 4) {
|
|
221
|
-
throw new Error('buf length must be a multiple of 4');
|
|
222
|
-
}
|
|
223
|
-
const words = [];
|
|
224
|
-
for (let i = 0; i < buf.length / 4; i++) {
|
|
225
|
-
const val = (buf[i * 4] * 0x1000000) + // Shift the first byte by 24 bits
|
|
226
|
-
((buf[i * 4 + 1] << 16) | // Shift the second byte by 16 bits
|
|
227
|
-
(buf[i * 4 + 2] << 8) | // Shift the third byte by 8 bits
|
|
228
|
-
buf[i * 4 + 3]); // The fourth byte
|
|
229
|
-
words.push(val);
|
|
230
|
-
}
|
|
231
|
-
return words;
|
|
232
|
-
}
|
|
233
|
-
static words2Buf(words) {
|
|
234
|
-
const buf = new Array(words.length * 4);
|
|
235
|
-
for (let i = 0; i < words.length; i++) {
|
|
236
|
-
const word = words[i];
|
|
237
|
-
buf[i * 4] = (word >>> 24) & 0xFF;
|
|
238
|
-
buf[i * 4 + 1] = (word >>> 16) & 0xFF;
|
|
239
|
-
buf[i * 4 + 2] = (word >>> 8) & 0xFF;
|
|
240
|
-
buf[i * 4 + 3] = word & 0xFF;
|
|
241
|
-
}
|
|
242
|
-
return buf;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
class CBC {
|
|
246
|
-
static buf2BlocksBuf(buf, blockSize) {
|
|
247
|
-
const bytesize = blockSize / 8;
|
|
248
|
-
const blockBufs = [];
|
|
249
|
-
for (let i = 0; i <= buf.length / bytesize; i++) {
|
|
250
|
-
let blockBuf = buf.slice(i * bytesize, i * bytesize + bytesize);
|
|
251
|
-
if (blockBuf.length < blockSize) {
|
|
252
|
-
blockBuf = CBC.pkcs7Pad(blockBuf, blockSize);
|
|
253
|
-
}
|
|
254
|
-
blockBufs.push(blockBuf);
|
|
255
|
-
}
|
|
256
|
-
return blockBufs;
|
|
257
|
-
}
|
|
258
|
-
static blockBufs2Buf(blockBufs) {
|
|
259
|
-
let last = blockBufs[blockBufs.length - 1];
|
|
260
|
-
last = CBC.pkcs7Unpad(last);
|
|
261
|
-
blockBufs[blockBufs.length - 1] = last;
|
|
262
|
-
const buf = blockBufs.flat();
|
|
263
|
-
return buf;
|
|
264
|
-
}
|
|
265
|
-
static encrypt(messageBuf, ivBuf, blockCipher /* TODO: type */, cipherKeyBuf) {
|
|
266
|
-
const blockSize = ivBuf.length * 8;
|
|
267
|
-
const blockBufs = CBC.buf2BlocksBuf(messageBuf, blockSize);
|
|
268
|
-
const encBufs = CBC.encryptBlocks(blockBufs, ivBuf, blockCipher, cipherKeyBuf);
|
|
269
|
-
const encBuf = encBufs.flat();
|
|
270
|
-
return encBuf;
|
|
271
|
-
}
|
|
272
|
-
static decrypt(encBuf, ivBuf, blockCipher /* TODO: type */, cipherKeyBuf) {
|
|
273
|
-
const bytesize = ivBuf.length;
|
|
274
|
-
const encBufs = [];
|
|
275
|
-
for (let i = 0; i < encBuf.length / bytesize; i++) {
|
|
276
|
-
encBufs.push(encBuf.slice(i * bytesize, i * bytesize + bytesize));
|
|
277
|
-
}
|
|
278
|
-
const blockBufs = CBC.decryptBlocks(encBufs, ivBuf, blockCipher, cipherKeyBuf);
|
|
279
|
-
const buf = CBC.blockBufs2Buf(blockBufs);
|
|
280
|
-
return buf;
|
|
281
|
-
}
|
|
282
|
-
static encryptBlock(blockBuf, ivBuf, blockCipher /* TODO: type */, cipherKeyBuf) {
|
|
283
|
-
const xorbuf = CBC.xorBufs(blockBuf, ivBuf);
|
|
284
|
-
const encBuf = blockCipher.encrypt(xorbuf, cipherKeyBuf);
|
|
285
|
-
return encBuf;
|
|
286
|
-
}
|
|
287
|
-
static decryptBlock(encBuf, ivBuf, blockCipher /* TODO: type */, cipherKeyBuf) {
|
|
288
|
-
const xorbuf = blockCipher.decrypt(encBuf, cipherKeyBuf);
|
|
289
|
-
const blockBuf = CBC.xorBufs(xorbuf, ivBuf);
|
|
290
|
-
return blockBuf;
|
|
291
|
-
}
|
|
292
|
-
static encryptBlocks(blockBufs, ivBuf, blockCipher /* TODO: type */, cipherKeyBuf) {
|
|
293
|
-
const encBufs = [];
|
|
294
|
-
for (let i = 0; i < blockBufs.length; i++) {
|
|
295
|
-
const blockBuf = blockBufs[i];
|
|
296
|
-
const encBuf = CBC.encryptBlock(blockBuf, ivBuf, blockCipher, cipherKeyBuf);
|
|
297
|
-
encBufs.push(encBuf);
|
|
298
|
-
ivBuf = encBuf;
|
|
299
|
-
}
|
|
300
|
-
return encBufs;
|
|
301
|
-
}
|
|
302
|
-
static decryptBlocks(encBufs, ivBuf, blockCipher /* TODO: type */, cipherKeyBuf) {
|
|
303
|
-
const blockBufs = [];
|
|
304
|
-
for (let i = 0; i < encBufs.length; i++) {
|
|
305
|
-
const encBuf = encBufs[i];
|
|
306
|
-
const blockBuf = CBC.decryptBlock(encBuf, ivBuf, blockCipher, cipherKeyBuf);
|
|
307
|
-
blockBufs.push(blockBuf);
|
|
308
|
-
ivBuf = encBuf;
|
|
309
|
-
}
|
|
310
|
-
return blockBufs;
|
|
311
|
-
}
|
|
312
|
-
static pkcs7Pad(buf, blockSize) {
|
|
313
|
-
const bytesize = blockSize / 8;
|
|
314
|
-
const padbytesize = bytesize - buf.length;
|
|
315
|
-
const pad = new Array(padbytesize);
|
|
316
|
-
pad.fill(padbytesize);
|
|
317
|
-
const paddedbuf = [...buf, ...pad];
|
|
318
|
-
return paddedbuf;
|
|
319
|
-
}
|
|
320
|
-
static pkcs7Unpad(paddedbuf) {
|
|
321
|
-
const padlength = paddedbuf[paddedbuf.length - 1];
|
|
322
|
-
const padbuf = paddedbuf.slice(paddedbuf.length - padlength, paddedbuf.length);
|
|
323
|
-
const padbuf2 = new Array(padlength);
|
|
324
|
-
padbuf2.fill(padlength);
|
|
325
|
-
if ((0, utils_js_1.toHex)(padbuf) !== (0, utils_js_1.toHex)(padbuf2)) {
|
|
326
|
-
throw new Error('invalid padding');
|
|
327
|
-
}
|
|
328
|
-
return paddedbuf.slice(0, paddedbuf.length - padlength);
|
|
329
|
-
}
|
|
330
|
-
static xorBufs(buf1, buf2) {
|
|
331
|
-
if (buf1.length !== buf2.length) {
|
|
332
|
-
throw new Error('bufs must have the same length');
|
|
333
|
-
}
|
|
334
|
-
const buf = new Array(buf1.length);
|
|
335
|
-
for (let i = 0; i < buf1.length; i++) {
|
|
336
|
-
buf[i] = buf1[i] ^ buf2[i];
|
|
337
|
-
}
|
|
338
|
-
return buf;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
class AESCBC {
|
|
342
|
-
static encrypt(messageBuf, cipherKeyBuf, ivBuf, concatIvBuf = true) {
|
|
343
|
-
ivBuf = ivBuf || new Array(128 / 8).fill(0) || (0, Random_js_1.default)(128 / 8);
|
|
344
|
-
const ctBuf = CBC.encrypt(messageBuf, ivBuf, AESWrapper, cipherKeyBuf);
|
|
345
|
-
if (concatIvBuf) {
|
|
346
|
-
return [...ivBuf, ...ctBuf];
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
return [...ctBuf];
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
static decrypt(encBuf, cipherKeyBuf, ivBuf) {
|
|
353
|
-
if (!ivBuf) {
|
|
354
|
-
ivBuf = encBuf.slice(0, 128 / 8);
|
|
355
|
-
const ctBuf = encBuf.slice(128 / 8);
|
|
356
|
-
return CBC.decrypt(ctBuf, ivBuf, AESWrapper, cipherKeyBuf);
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
const ctBuf = encBuf;
|
|
360
|
-
return CBC.decrypt(ctBuf, ivBuf, AESWrapper, cipherKeyBuf);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* @class ECIES
|
|
366
|
-
* Implements the Electrum ECIES protocol for encrypted communication.
|
|
367
|
-
*
|
|
368
|
-
* @prprecated This class is deprecated in favor of the BRC-78 standard for portable encrypted messages,
|
|
369
|
-
* which provides a more comprehensive and secure solution by integrating with BRC-42 and BRC-43 standards.
|
|
370
|
-
*/
|
|
371
|
-
class ECIES {
|
|
372
|
-
/**
|
|
373
|
-
* Generates the initialization vector (iv), encryption key (kE), and MAC key (kM)
|
|
374
|
-
* using the sender's private key and receiver's public key.
|
|
375
|
-
*
|
|
376
|
-
* @param {PrivateKey} privKey - The sender's private key.
|
|
377
|
-
* @param {PublicKey} pubKey - The receiver's public key.
|
|
378
|
-
* @returns {Object} An object containing the iv, kE, and kM as number arrays.
|
|
379
|
-
*/
|
|
380
|
-
static ivkEkM(privKey, pubKey) {
|
|
381
|
-
const r = privKey;
|
|
382
|
-
const KB = pubKey;
|
|
383
|
-
const P = KB.mul(r);
|
|
384
|
-
const S = new PublicKey_js_1.default(P.x, P.y);
|
|
385
|
-
const Sbuf = S.encode(true);
|
|
386
|
-
const hash = Hash.sha512(Sbuf);
|
|
387
|
-
return {
|
|
388
|
-
iv: hash.slice(0, 16),
|
|
389
|
-
kE: hash.slice(16, 32),
|
|
390
|
-
kM: hash.slice(32, 64)
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Encrypts a given message using the Electrum ECIES method.
|
|
395
|
-
*
|
|
396
|
-
* @param {number[]} messageBuf - The message to be encrypted, in number array format.
|
|
397
|
-
* @param {PublicKey} toPublicKey - The public key of the recipient.
|
|
398
|
-
* @param {PrivateKey} [fromPrivateKey] - The private key of the sender. If not provided, a random private key is used.
|
|
399
|
-
* @param {boolean} [noKey=false] - If true, does not include the sender's public key in the encrypted message.
|
|
400
|
-
* @returns {number[]} The encrypted message as a number array.
|
|
401
|
-
*/
|
|
402
|
-
static electrumEncrypt(messageBuf, toPublicKey, fromPrivateKey, noKey = false) {
|
|
403
|
-
let Rbuf;
|
|
404
|
-
if (fromPrivateKey === null) {
|
|
405
|
-
fromPrivateKey = PrivateKey_js_1.default.fromRandom();
|
|
406
|
-
}
|
|
407
|
-
if (!noKey) {
|
|
408
|
-
Rbuf = fromPrivateKey.toPublicKey().encode(true);
|
|
409
|
-
}
|
|
410
|
-
const { iv, kE, kM } = ECIES.ivkEkM(fromPrivateKey, toPublicKey);
|
|
411
|
-
const ciphertext = AESCBC.encrypt(messageBuf, kE, iv, false);
|
|
412
|
-
const BIE1 = (0, utils_js_1.toArray)('BIE1', 'utf8');
|
|
413
|
-
let encBuf;
|
|
414
|
-
if (Rbuf) {
|
|
415
|
-
encBuf = [...BIE1, ...Rbuf, ...ciphertext];
|
|
416
|
-
}
|
|
417
|
-
else {
|
|
418
|
-
encBuf = [...BIE1, ...ciphertext];
|
|
419
|
-
}
|
|
420
|
-
const hmac = Hash.sha256hmac(kM, encBuf);
|
|
421
|
-
return [...encBuf, ...hmac];
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Decrypts a message encrypted using the Electrum ECIES method.
|
|
425
|
-
*
|
|
426
|
-
* @param {number[]} encBuf - The encrypted message buffer.
|
|
427
|
-
* @param {PrivateKey} toPrivateKey - The private key of the recipient.
|
|
428
|
-
* @param {PublicKey} [fromPublicKey=null] - The public key of the sender. If not provided, it is extracted from the message.
|
|
429
|
-
* @returns {number[]} The decrypted message as a number array.
|
|
430
|
-
*/
|
|
431
|
-
static electrumDecrypt(encBuf, toPrivateKey, fromPublicKey = null) {
|
|
432
|
-
const tagLength = 32;
|
|
433
|
-
const magic = encBuf.slice(0, 4);
|
|
434
|
-
if ((0, utils_js_1.encode)(magic, 'utf8') !== 'BIE1') {
|
|
435
|
-
throw new Error('Invalid Magic');
|
|
436
|
-
}
|
|
437
|
-
let offset = 4;
|
|
438
|
-
if (fromPublicKey === null) {
|
|
439
|
-
// BIE1 use compressed public key, length is always 33.
|
|
440
|
-
const pub = encBuf.slice(4, 37);
|
|
441
|
-
fromPublicKey = PublicKey_js_1.default.fromString((0, utils_js_1.toHex)(pub));
|
|
442
|
-
offset = 37;
|
|
443
|
-
}
|
|
444
|
-
const { iv, kE, kM } = ECIES.ivkEkM(toPrivateKey, fromPublicKey);
|
|
445
|
-
const ciphertext = encBuf.slice(offset, encBuf.length - tagLength);
|
|
446
|
-
const hmac = encBuf.slice(encBuf.length - tagLength, encBuf.length);
|
|
447
|
-
const hmac2 = Hash.sha256hmac(kM, encBuf.slice(0, encBuf.length - tagLength));
|
|
448
|
-
if ((0, utils_js_1.toHex)(hmac) !== (0, utils_js_1.toHex)(hmac2)) {
|
|
449
|
-
throw new Error('Invalid checksum');
|
|
450
|
-
}
|
|
451
|
-
return AESCBC.decrypt(ciphertext, kE, iv);
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* Encrypts a given message using the Bitcore variant of ECIES.
|
|
455
|
-
*
|
|
456
|
-
* @param {number[]} messageBuf - The message to be encrypted, in number array format.
|
|
457
|
-
* @param {PublicKey} toPublicKey - The public key of the recipient.
|
|
458
|
-
* @param {PrivateKey} [fromPrivateKey] - The private key of the sender. If not provided, a random private key is used.
|
|
459
|
-
* @param {number[]} [ivBuf] - The initialization vector for encryption. If not provided, a random IV is used.
|
|
460
|
-
* @returns {number[]} The encrypted message as a number array.
|
|
461
|
-
*/
|
|
462
|
-
static bitcoreEncrypt(messageBuf, toPublicKey, fromPrivateKey, ivBuf) {
|
|
463
|
-
if (!fromPrivateKey) {
|
|
464
|
-
fromPrivateKey = PrivateKey_js_1.default.fromRandom();
|
|
465
|
-
}
|
|
466
|
-
const r = fromPrivateKey;
|
|
467
|
-
const RPublicKey = fromPrivateKey.toPublicKey();
|
|
468
|
-
const RBuf = RPublicKey.encode(true);
|
|
469
|
-
const KB = toPublicKey;
|
|
470
|
-
const P = KB.mul(r);
|
|
471
|
-
const S = P.getX();
|
|
472
|
-
const Sbuf = S.toArray('be', 32);
|
|
473
|
-
const kEkM = Hash.sha512(Sbuf);
|
|
474
|
-
const kE = kEkM.slice(0, 32);
|
|
475
|
-
const kM = kEkM.slice(32, 64);
|
|
476
|
-
const c = AESCBC.encrypt(messageBuf, kE, ivBuf);
|
|
477
|
-
const d = Hash.sha256hmac(kM, [...c]);
|
|
478
|
-
const encBuf = [...RBuf, ...c, ...d];
|
|
479
|
-
return encBuf;
|
|
480
|
-
}
|
|
481
|
-
/**
|
|
482
|
-
* Decrypts a message encrypted using the Bitcore variant of ECIES.
|
|
483
|
-
*
|
|
484
|
-
* @param {number[]} encBuf - The encrypted message buffer.
|
|
485
|
-
* @param {PrivateKey} toPrivateKey - The private key of the recipient.
|
|
486
|
-
* @returns {number[]} The decrypted message as a number array.
|
|
487
|
-
*/
|
|
488
|
-
static bitcoreDecrypt(encBuf, toPrivateKey) {
|
|
489
|
-
const kB = toPrivateKey;
|
|
490
|
-
const fromPublicKey = PublicKey_js_1.default.fromString((0, utils_js_1.toHex)(encBuf.slice(0, 33)));
|
|
491
|
-
const R = fromPublicKey;
|
|
492
|
-
const P = R.mul(kB);
|
|
493
|
-
if (P.eq(new Point_js_1.default(0, 0))) {
|
|
494
|
-
throw new Error('P equals 0');
|
|
495
|
-
}
|
|
496
|
-
const S = P.getX();
|
|
497
|
-
const Sbuf = S.toArray('be', 32);
|
|
498
|
-
const kEkM = Hash.sha512(Sbuf);
|
|
499
|
-
const kE = kEkM.slice(0, 32);
|
|
500
|
-
const kM = kEkM.slice(32, 64);
|
|
501
|
-
const c = encBuf.slice(33, encBuf.length - 32);
|
|
502
|
-
const d = encBuf.slice(encBuf.length - 32, encBuf.length);
|
|
503
|
-
const d2 = Hash.sha256hmac(kM, c);
|
|
504
|
-
if ((0, utils_js_1.toHex)(d) !== (0, utils_js_1.toHex)(d2)) {
|
|
505
|
-
throw new Error('Invalid checksum');
|
|
506
|
-
}
|
|
507
|
-
const messageBuf = AESCBC.decrypt(c, kE);
|
|
508
|
-
return [...messageBuf];
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
exports.default = ECIES;
|
|
512
|
-
//# sourceMappingURL=ECIES.js.map
|