forked from dchest/ed2curve-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
79 lines (65 loc) · 2.7 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
var test = require('tape');
var nacl = require('tweetnacl');
nacl.util = require('tweetnacl-util');
var ed2curve = require('../ed2curve');
test('ed2curve.convertKeyPair (seed)', function(t) {
var mySeed = new Uint8Array(32);
for (var i = 0; i < 32; i++) mySeed[i] = i;
var peerSeed = new Uint8Array(32);
for (var i = 0; i < 32; i++) peerSeed[i] = i+100;
signKeys = nacl.sign.keyPair.fromSeed(mySeed);
dhKeys = ed2curve.convertKeyPair(signKeys);
t.ok(dhKeys.publicKey, 'should convert public key');
dhPeerKeys = nacl.box.keyPair.fromSecretKey(peerSeed);
var s1 = nacl.box.before(dhKeys.publicKey, dhPeerKeys.secretKey);
var s2 = nacl.box.before(dhPeerKeys.publicKey, dhKeys.secretKey);
t.equal(nacl.util.encodeBase64(s2), nacl.util.encodeBase64(s1));
t.end();
});
test('ed2curve.convertKeyPair (random)', function(t) {
var signKeys = nacl.sign.keyPair();
var dhKeys = ed2curve.convertKeyPair(signKeys);
var dhPeerKeys = nacl.box.keyPair();
var message = 'I am converting keys!';
var m = nacl.util.decodeUTF8(message);
var n = nacl.randomBytes(24);
var box = nacl.box(m, n, dhKeys.publicKey, dhPeerKeys.secretKey);
var unbox = nacl.box.open(box, n, dhPeerKeys.publicKey, dhKeys.secretKey);
t.ok(unbox, 'should open box');
t.equal(nacl.util.encodeUTF8(unbox), message);
t.end();
});
test('ed2curve.convertSecretKey and ed2curve.convertPublicKey (random)', function(t) {
var mySignKeys = nacl.sign.keyPair();
var theirSignKeys = nacl.sign.keyPair();
var myDHPublicKey = ed2curve.convertPublicKey(mySignKeys.publicKey);
var theirDHPublicKey = ed2curve.convertPublicKey(theirSignKeys.publicKey);
t.equal(myDHPublicKey.length, 32);
t.equal(theirDHPublicKey.length, 32);
var myDHSecretKey = ed2curve.convertSecretKey(mySignKeys.secretKey);
var theirDHSecretKey = ed2curve.convertSecretKey(theirSignKeys.secretKey);
t.equal(myDHSecretKey.length, 32);
t.equal(theirDHSecretKey.length, 32);
var s1 = nacl.box.before(theirDHPublicKey, myDHSecretKey);
var s2 = nacl.box.before(myDHPublicKey, theirDHSecretKey);
t.equal(nacl.util.encodeBase64(s2), nacl.util.encodeBase64(s1));
t.end();
});
test('ed2curve.convertPublicKey (invalid key)', function(t) {
var invalidKey = new Uint8Array(32);
for (var i = 0; i < 31; i++) invalidKey[i] = 0xff;
var pk = ed2curve.convertPublicKey(invalidKey);
t.equal(pk, null);
t.end();
});
test('ed2curve.convertKeyPair (invalid key)', function(t) {
var invalidKey = new Uint8Array(32);
for (var i = 0; i < 31; i++) invalidKey[i] = 0xff;
var keyPair = {
publicKey: invalidKey,
privateKey: new Uint8Array(32) // doesn't matter
}
var convertedKeyPair = ed2curve.convertKeyPair(keyPair);
t.equal(convertedKeyPair, null);
t.end();
});