forked from web-push-libs/web-push
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestHTTPECE.js
More file actions
82 lines (66 loc) · 2.76 KB
/
Copy pathtestHTTPECE.js
File metadata and controls
82 lines (66 loc) · 2.76 KB
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
80
81
82
'use strict';
const assert = require('assert');
const crypto = require('crypto');
const ece = require('http_ece');
const urlBase64 = require('urlsafe-base64');
const semver = require('semver');
suite('http_ece', function() {
if (!semver.satisfies(process.version, '5')) {
return;
}
test('aesgcm - padSize 2 - pad 0', function() {
const input = Buffer.from(urlBase64.encode('marco'));
const receiverCurve = crypto.createECDH('prime256v1');
receiverCurve.setPrivateKey('a4C8H+f9IWtbAbTTkL2AgQ7xo/tqXddWWw7R2CR5OME=', 'base64');
assert.equal(receiverCurve.getPublicKey()[0], 4, 'is an uncompressed point');
ece.saveKey('receiver', receiverCurve, 'P-256');
const senderCurve = crypto.createECDH('prime256v1');
senderCurve.setPrivateKey('Dt1CLgQlkiaA-tmCkATyKZeoF1-Gtw1-gdEP6pOCqj4', 'base64');
assert.equal(senderCurve.getPublicKey()[0], 4, 'is an uncompressed point');
ece.saveKey('sender', senderCurve, 'P-256');
const salt = '4CQCKEyyOT_LysC17rsMXQ';
const authSecret = 'r9kcFt8-4Q6MnMjJHqJoSQ';
const encrypted = ece.encrypt(input, {
keyid: 'sender',
dh: urlBase64.encode(receiverCurve.getPublicKey()),
salt: salt,
authSecret: authSecret
});
assert(encrypted.equals(Buffer.from('Np3XM0NFvnxothcJfFzrv8Vsprn_k9I', 'base64')));
const decrypted = ece.decrypt(encrypted, {
keyid: 'receiver',
dh: urlBase64.encode(senderCurve.getPublicKey()),
salt: salt,
authSecret: authSecret
});
assert(input.equals(decrypted));
});
test('aesgcm - padSize 2 - pad 1', function() {
const input = Buffer.from(urlBase64.encode('marco'));
const receiverCurve = crypto.createECDH('prime256v1');
receiverCurve.setPrivateKey('a4C8H+f9IWtbAbTTkL2AgQ7xo/tqXddWWw7R2CR5OME=', 'base64');
assert.equal(receiverCurve.getPublicKey()[0], 4, 'is an uncompressed point');
ece.saveKey('receiver', receiverCurve, 'P-256');
const senderCurve = crypto.createECDH('prime256v1');
senderCurve.setPrivateKey('Dt1CLgQlkiaA-tmCkATyKZeoF1-Gtw1-gdEP6pOCqj4', 'base64');
assert.equal(senderCurve.getPublicKey()[0], 4, 'is an uncompressed point');
ece.saveKey('sender', senderCurve, 'P-256');
const salt = '4CQCKEyyOT_LysC17rsMXQ';
const authSecret = 'r9kcFt8-4Q6MnMjJHqJoSQ';
const encrypted = ece.encrypt(input, {
keyid: 'sender',
dh: urlBase64.encode(receiverCurve.getPublicKey()),
salt: salt,
authSecret: authSecret,
pad: 1
});
assert(encrypted.equals(Buffer.from('Npy6P1BUsvRGMWEbwYq2JArF0l9YD38o', 'base64')));
const decrypted = ece.decrypt(encrypted, {
keyid: 'receiver',
dh: urlBase64.encode(senderCurve.getPublicKey()),
salt: salt,
authSecret: authSecret
});
assert(input.equals(decrypted));
});
});