node-http-server – Diff between revs 10 and 35

Subversion Repositories:
Rev:
Only display areas with differencesRegard whitespace
Rev 10 Rev 35
1 #!/usr/bin/env node 1 #!/usr/bin/env node
2   2  
3 /*************************************************************************/ 3 /*************************************************************************/
4 /* Copyright (C) 2017 Wizardry and Steamworks - License: GNU GPLv3 */ 4 /* Copyright (C) 2017 Wizardry and Steamworks - License: GNU GPLv3 */
5 /*************************************************************************/ 5 /*************************************************************************/
6   6  
7 const forge = require('node-forge'); 7 const forge = require('node-forge');
8 const moment = require('moment'); 8 const tz = require('moment-timezone');
9   9  
10 module.exports = { 10 module.exports = {
11 // Generate certificates on the fly using incremental serials. 11 // Generate certificates on the fly using incremental serials.
12 generate: (name, domain, keySize, callback) => { 12 generate: (name, domain, keySize, callback) => {
13 process.nextTick(() => { 13 process.nextTick(() => {
14 // Generate 1024-bit key-pair. 14 // Generate 1024-bit key-pair.
15 const keys = forge 15 const keys = forge
16 .pki 16 .pki
17 .rsa 17 .rsa
18 .generateKeyPair(keySize); 18 .generateKeyPair(keySize);
19 // Create self-signed certificate. 19 // Create self-signed certificate.
20 const cert = forge 20 const cert = forge
21 .pki 21 .pki
22 .createCertificate(); 22 .createCertificate();
23 cert.serialNumber = moment().format('x'); 23 cert.serialNumber = tz().tz('UTC').format('x');
24 cert.publicKey = keys.publicKey; 24 cert.publicKey = keys.publicKey;
25 cert 25 cert
26 .validity 26 .validity
27 .notBefore = moment().toDate(); 27 .notBefore = tz().tz('UTC').toDate();
28 cert 28 cert
29 .validity 29 .validity
30 .notAfter 30 .notAfter
31 .setFullYear( 31 .setFullYear(
32 cert 32 cert
33 .validity 33 .validity
34 .notBefore 34 .notBefore
35 .getFullYear() + 1 35 .getFullYear() + 1
36 ); 36 );
37 cert.setSubject([{ 37 cert.setSubject([{
38 name: 'commonName', 38 name: 'commonName',
39 value: domain 39 value: domain
40 }, { 40 }, {
41 name: 'organizationName', 41 name: 'organizationName',
42 value: name 42 value: name
43 }]); 43 }]);
44 cert.setIssuer([{ 44 cert.setIssuer([{
45 name: 'commonName', 45 name: 'commonName',
46 value: domain 46 value: domain
47 }, { 47 }, {
48 name: 'organizationName', 48 name: 'organizationName',
49 value: name 49 value: name
50 }]); 50 }]);
51   51  
52 // Self-sign certificate. 52 // Self-sign certificate.
53 cert.sign( 53 cert.sign(
54 keys.privateKey, 54 keys.privateKey,
55 forge 55 forge
56 .md 56 .md
57 .sha256 57 .sha256
58 .create() 58 .create()
59 ); 59 );
60   60  
61 // Summon the callback with the certificate block. 61 // Summon the callback with the certificate block.
62 callback({ 62 callback({
63 privateKey: forge 63 privateKey: forge
64 .pki 64 .pki
65 .privateKeyToPem( 65 .privateKeyToPem(
66 keys 66 keys
67 .privateKey 67 .privateKey
68 ), 68 ),
69 publicKey: forge 69 publicKey: forge
70 .pki 70 .pki
71 .publicKeyToPem( 71 .publicKeyToPem(
72 keys 72 keys
73 .publicKey 73 .publicKey
74 ), 74 ),
75 certificate: forge 75 certificate: forge
76 .pki 76 .pki
77 .certificateToPem(cert) 77 .certificateToPem(cert)
78 }); 78 });
79 }); 79 });
80 } 80 }
81 }; 81 };
82   82  
83   83  
84
Generated by GNU Enscript 1.6.5.90.
84
Generated by GNU Enscript 1.6.5.90.
85   85  
86   86  
87   87