Skip to content
This repository was archived by the owner on Jun 3, 2020. It is now read-only.

Commit de914ff

Browse files
committed
tests/integration: move crypto-like tests to test/integration/crypto.js
1 parent a66773b commit de914ff

File tree

2 files changed

+35
-36
lines changed

2 files changed

+35
-36
lines changed

test/integration/advanced.js

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
var assert = require('assert')
2-
var bigi = require('bigi')
32
var bitcoin = require('../../')
43
var helloblock = require('helloblock-js')({
54
network: 'testnet'
@@ -22,41 +21,6 @@ describe('bitcoinjs-lib (advanced)', function() {
2221
assert(bitcoin.Message.verify(address, signature, message))
2322
})
2423

25-
it('can generate a single-key stealth address', function() {
26-
var receiver = bitcoin.ECKey.fromWIF('5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss')
27-
28-
// XXX: ephemeral, must be random (and secret to sender) to preserve privacy
29-
var sender = bitcoin.ECKey.fromWIF('Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct')
30-
31-
var G = bitcoin.ECKey.curve.G
32-
var d = receiver.d // secret (receiver only)
33-
var Q = receiver.pub.Q // shared
34-
35-
var e = sender.d // secret (sender only)
36-
var P = sender.pub.Q // shared
37-
38-
// derived shared secret
39-
var eQ = Q.multiply(e) // sender
40-
var dP = P.multiply(d) // receiver
41-
assert.deepEqual(eQ.getEncoded(), dP.getEncoded())
42-
43-
var c = bigi.fromBuffer(bitcoin.crypto.sha256(eQ.getEncoded()))
44-
var cG = G.multiply(c)
45-
46-
// derived public key
47-
var QprimeS = Q.add(cG)
48-
var QprimeR = G.multiply(d.add(c))
49-
assert.deepEqual(QprimeR.getEncoded(), QprimeS.getEncoded())
50-
51-
// derived shared-secret address
52-
var address = new bitcoin.ECPubKey(QprimeS).getAddress().toString()
53-
54-
assert.equal(address, '1EwCNJNZM5q58YPPTnjR1H5BvYRNeyZi47')
55-
})
56-
57-
// TODO
58-
it.skip('can generate a dual-key stealth address', function() {})
59-
6024
it('can create an OP_RETURN transaction', function(done) {
6125
this.timeout(20000)
6226

test/integration/crypto.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,41 @@ var bitcoin = require('../../')
44
var crypto = require('crypto')
55

66
describe('bitcoinjs-lib (crypto)', function() {
7+
it('can generate a single-key stealth address', function() {
8+
var receiver = bitcoin.ECKey.fromWIF('5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss')
9+
10+
// XXX: ephemeral, must be random (and secret to sender) to preserve privacy
11+
var sender = bitcoin.ECKey.fromWIF('Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct')
12+
13+
var G = bitcoin.ECKey.curve.G
14+
var d = receiver.d // secret (receiver only)
15+
var Q = receiver.pub.Q // shared
16+
17+
var e = sender.d // secret (sender only)
18+
var P = sender.pub.Q // shared
19+
20+
// derived shared secret
21+
var eQ = Q.multiply(e) // sender
22+
var dP = P.multiply(d) // receiver
23+
assert.deepEqual(eQ.getEncoded(), dP.getEncoded())
24+
25+
var c = bigi.fromBuffer(bitcoin.crypto.sha256(eQ.getEncoded()))
26+
var cG = G.multiply(c)
27+
28+
// derived public key
29+
var QprimeS = Q.add(cG)
30+
var QprimeR = G.multiply(d.add(c))
31+
assert.deepEqual(QprimeR.getEncoded(), QprimeS.getEncoded())
32+
33+
// derived shared-secret address
34+
var address = new bitcoin.ECPubKey(QprimeS).getAddress().toString()
35+
36+
assert.equal(address, '1EwCNJNZM5q58YPPTnjR1H5BvYRNeyZi47')
37+
})
38+
39+
// TODO
40+
it.skip('can generate a dual-key stealth address', function() {})
41+
742
it('can recover a parent private key from the parent\'s public key and a derived non-hardened child private key', function() {
843
function recoverParent(master, child) {
944
assert(!master.privKey, 'You already have the parent private key')

0 commit comments

Comments
 (0)