2.0.0 • Published 12 months ago

bip66 v2.0.0

Weekly downloads
103,050
License
MIT
Repository
github
Last release
12 months ago

bip66

NPM Package Build Status

js-standard-style

Strict DER signature encoding/decoding.

See bip66.

  • This module works only with two's complement numbers.
  • BIP66 doesn't check that r or s are fully valid.
    • check/decode doesn't check that r or s great than 33 bytes or that this number represent valid point on elliptic curve.
    • encode doesn't check that r/s represent valid point on elliptic curve.

Example

import * as bip66 from"bip66"
const r = Buffer.from('1ea1fdff81b3a271659df4aad19bc4ef83def389131a36358fe64b245632e777', 'hex')
const s = Buffer.from('29e164658be9ce810921bf81d6b86694785a79ea1e52dbfa5105148d1f0bc1', 'hex')

// Buffer or UInt8Array can be passed in to the encode/decode functions
const signature = bip66.encode(r, s)
// Uint8Array(69) [
//    48,  67,   2,  32,  30, 161, 253, 255, 129, 179, 162,
//   113, 101, 157, 244, 170, 209, 155, 196, 239, 131, 222,
//   243, 137,  19,  26,  54,  53, 143, 230,  75,  36,  86,
//    50, 231, 119,   2,  31,  41, 225, 100, 101, 139, 233,
//   206, 129,   9,  33, 191, 129, 214, 184, 102, 148, 120,
//    90, 121, 234,  30,  82, 219, 250,  81,   5,  20, 141,
//    31,  11, 193
// ]

bip66.decode(signature)
// => {
//   r: Uint8Array(32) [
//      30, 161, 253, 255, 129, 179, 162,
//     113, 101, 157, 244, 170, 209, 155,
//     196, 239, 131, 222, 243, 137,  19,
//      26,  54,  53, 143, 230,  75,  36,
//      86,  50, 231, 119
//   ],
//   s: Uint8Array(31) [
//      41, 225, 100, 101, 139, 233, 206, 129,
//       9,  33, 191, 129, 214, 184, 102, 148,
//     120,  90, 121, 234,  30,  82, 219, 250,
//      81,   5,  20, 141,  31,  11, 193
//   ]
// }

A catch-all exception regex:

/Expected DER (integer|sequence)|(R|S) value (excessively padded|is negative)|(R|S|DER sequence) length is (zero|too short|too long|invalid)/

LICENSE MIT

aiot-jsswiftcashjs-libwocode-wallet-qitmeerwocode-wallet-ubsecux-connectreact-native-bitcoincashjs-libtrezor-utxo-libqtum-qnektbitgo-utxo-lib-pslbch-js-joey@rogerfelipe/digibyte-toolbox-jsliquidjs-lib-taprootubchain-jsuworld-js@everything-registry/sub-chunk-1237bch-js-testtapyrusjs-libxec-jssthjssthjs-wrapperswipechainjsvisio-js-libvisiocoin-js-libcustom-icon-sdk-js@crema-labs/ecdsa-p384-circom@cypherock/sdk-app-btc@developers.cash/libcash-js@defichain/jellyfish-crypto@xslo1x-test/icon-sdk-jsjavascript-dlckaan-bitcoinjs-libkafirchain-tetriskapujsreact-native-expo49-bitcoinjs-libuload-bitcoinjs-libtokenpayjs-libunchained-bitcoin@antchain/mychain@asoltys/bitcoinjs-lib@asoltys/liquidjs-lib@bcpros/bitcoincashjs-lib@bcpros/xpi-js@bitcoin-dot-com/bitcoincashjs2-lib@bithighlander/bitcoin-cash-js-lib@bithereum/bethjs-lib@blockpool/blockbird@btcd.io/bitcoinjs-lib@caravan/bitcoin@chris.troutner/bch-js@chris.troutner/bitbox-js@33cn/wallet-base@abcpros/xpi-js@abcpros/bch-js@coinspace/bitcoinjs-lib@coolwallets/core@coolwallets/coretest@coolwallets/sdk-core@coolwallet/coreyentenjs-libyouchainjs-txxrg-jsunihashjs-lib@sambo5000/xec-js@hexlant/bchjs@innoswap/core@infinitebrahmanuniverse/nolb-bip@kronoslive/bitcoincashjs-lib@localcryptos/bitcoinjs-lib@kiwanoswap/v2-core@litedexdev/litedex-core-swap@muirglacier/jellyfish-crypto@maooricio/react-native-expo-bitcoinjs-lib@exodus/bitcoinjs-lib-zcash@mblackmblack/bitcoinjs-lib@missmonacoin/bitcoincashjs-lib@missmonacoin/bitcoinjs-lib-zcash@missmonacoin/blackcoinjs-lib@igniswap/igni-swap-lib@odin/odinjs-lib@oipwg/bitcoinjs-lib@runonflux/utxo-lib@psf/bch-js@psf/bch-js-electron@psf/bitcoincashjs-lib@psf/bitcoincashjs-lib-electron@samrock5000/xecjs@samrock5000/bch-js@poondestroyer/sig@pastelnetwork/psl-utxo-lib@phungdaihiep/react-native-bitcoinjs@piggydoughnut/bitgo-komodo-cc-lib@plark/bitbox-sdk@obsidian/obsidianjs-lib@panaceacoin/panacea-js@parsh/react-native-bitcoinjs-lib@pefish/bch-bitcoinjs-lib@pefish/bitcoinjs-lib@secux/app-xrp@secux/app-btcmw-bitgo-utxo-lib
2.0.0

12 months ago

1.1.5

8 years ago

1.1.4

9 years ago

1.1.3

9 years ago

1.1.2

9 years ago

1.1.0

10 years ago

1.0.10

10 years ago

1.0.9

10 years ago

1.0.8

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago