| var forge = require('../js/forge'); |
| |
| console.log('Generating 1024-bit key-pair...'); |
| var keys = forge.pki.rsa.generateKeyPair(1024); |
| console.log('Key-pair created.'); |
| |
| console.log('Creating certification request (CSR) ...'); |
| var csr = forge.pki.createCertificationRequest(); |
| csr.publicKey = keys.publicKey; |
| csr.setSubject([{ |
| name: 'commonName', |
| value: 'example.org' |
| }, { |
| name: 'countryName', |
| value: 'US' |
| }, { |
| shortName: 'ST', |
| value: 'Virginia' |
| }, { |
| name: 'localityName', |
| value: 'Blacksburg' |
| }, { |
| name: 'organizationName', |
| value: 'Test' |
| }, { |
| shortName: 'OU', |
| value: 'Test' |
| }]); |
| // add optional attributes |
| csr.setAttributes([{ |
| name: 'challengePassword', |
| value: 'password' |
| }, { |
| name: 'unstructuredName', |
| value: 'My company' |
| }]); |
| |
| // sign certification request |
| csr.sign(keys.privateKey/*, forge.md.sha256.create()*/); |
| console.log('Certification request (CSR) created.'); |
| |
| // PEM-format keys and csr |
| var pem = { |
| privateKey: forge.pki.privateKeyToPem(keys.privateKey), |
| publicKey: forge.pki.publicKeyToPem(keys.publicKey), |
| csr: forge.pki.certificationRequestToPem(csr) |
| }; |
| |
| console.log('\nKey-Pair:'); |
| console.log(pem.privateKey); |
| console.log(pem.publicKey); |
| |
| console.log('\nCertification Request (CSR):'); |
| console.log(pem.csr); |
| |
| // verify certification request |
| try { |
| if(csr.verify()) { |
| console.log('Certification request (CSR) verified.'); |
| } else { |
| throw new Error('Signature not verified.'); |
| } |
| } catch(err) { |
| console.log('Certification request (CSR) verification failure: ' + |
| JSON.stringify(err, null, 2)); |
| } |