node-http-server – Blame information for rev 35

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