node-http-server – Blame information for rev 8

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