Browse Source

integration: nonce is not shared

hk-custom-address
Daniel Cousens 10 years ago
parent
commit
b56bbce472
  1. 6
      README.md
  2. 11
      test/integration/crypto.js

6
README.md

@ -98,9 +98,9 @@ The below examples are implemented as integration tests, they should be very eas
- [Create a 2-of-3 multisig P2SH address](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/multisig.js#L8)
- [Spend from a 2-of-4 multisig P2SH address](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/multisig.js#L22)
- [Generate a single-key stealth address](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/crypto.js#L7)
- [Generate a dual-key stealth address](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/crypto.js#L51)
- [Recover a BIP32 parent private key from the parent public key and a derived non-hardened child private key](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/crypto.js#L53)
- [Recover a Private key from duplicate R values in a signature](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/crypto.js#L100)
- [Generate a dual-key stealth address](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/crypto.js#L52)
- [Recover a BIP32 parent private key from the parent public key and a derived non-hardened child private key](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/crypto.js#L54)
- [Recover a Private key from duplicate R values in a signature](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/crypto.js#L101)
## Projects utilizing BitcoinJS

11
test/integration/crypto.js

@ -12,8 +12,8 @@ describe('bitcoinjs-lib (crypto)', function () {
var G = bitcoin.ECPair.curve.G
var n = bitcoin.ECPair.curve.n
function stealthSend (Q, nonce) {
var noncePair = new bitcoin.ECPair(bigi.fromBuffer(nonce))
function stealthSend (Q) {
var noncePair = bitcoin.ECPair.makeRandom()
var e = noncePair.d
var eQ = Q.multiply(e)
var c = bigi.fromBuffer(bitcoin.crypto.sha256(eQ.getEncoded()))
@ -38,10 +38,11 @@ describe('bitcoinjs-lib (crypto)', function () {
// receiver private key
var receiver = bitcoin.ECPair.fromWIF('5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss')
var nonce = crypto.randomBytes(32)
var stealthS = stealthSend(receiver.Q, nonce)
var stealthR = stealthReceive(receiver.d, stealthS.nonceQ)
var stealthS = stealthSend(receiver.Q) // public, done by sender
// ... sender now reveals nonceQ to receiver
var stealthR = stealthReceive(receiver.d, stealthS.nonceQ) // private, done by receiver
// and check that we derived both sides correctly
assert.equal(stealthS.address, stealthR.keyPair.getAddress())

Loading…
Cancel
Save