document csr generation

This commit is contained in:
AJ ONeal 2016-08-01 05:44:46 -04:00
parent c24a7ab922
commit d84d8ce94c
3 changed files with 27 additions and 3 deletions

View File

@ -5,6 +5,8 @@ JavaScript RSA utils that work on Windows, Mac, and Linux with or without C comp
In order to provide a module that "just works" everywhere, we mix and match methods In order to provide a module that "just works" everywhere, we mix and match methods
from `node.js` core, `ursa`, `forge`, and others. from `node.js` core, `ursa`, `forge`, and others.
This is useful for **certbot** and **letsencrypt**.
(in the future we'd like to provide the same API to the browser) (in the future we'd like to provide the same API to the browser)
Examples Examples
@ -68,6 +70,8 @@ API
* `RSA.exportPrivateJwk(keypair)` * `RSA.exportPrivateJwk(keypair)`
* `RSA.exportPublicJwk(keypair)` * `RSA.exportPublicJwk(keypair)`
* `RSA.signJws(keypair, payload, nonce)` * `RSA.signJws(keypair, payload, nonce)`
* `RSA.generateCsrPem(keypair, names)`
* `RSA.generateCsrDerWeb64(keypair, names)`
`keypair` can be any object with any of these keys `publicKeyPem, privateKeyPem, publicKeyJwk, privateKeyJwk` `keypair` can be any object with any of these keys `publicKeyPem, privateKeyPem, publicKeyJwk, privateKeyJwk`
@ -118,7 +122,7 @@ console.log(keypair);
### RSA.signJws(keypair, payload, nonce) ### RSA.signJws(keypair, payload, nonce)
Generates a signature in JWS format. Generates a signature in JWS format (necessary for **certbot**/**letsencrypt**).
```javascript ```javascript
var message = "Hello, World!" var message = "Hello, World!"
@ -144,3 +148,23 @@ The result looks like this:
"signature": "Wb2al5SDyh5gjmkV79MK9m3sfNBBPjntSKor-34BBoGwr6n8qEnBmqB1Y4zbo-5rmvsoPmJsnRlP_hRiUY86zSAQyfbisTGrGBl0IQ7ditpkfYVm0rBWJ8WnYNqYNp8K3qcD7NW72tsy-XoWEjNlz4lWJeRdEG2Nt4CJgnREH4Y" "signature": "Wb2al5SDyh5gjmkV79MK9m3sfNBBPjntSKor-34BBoGwr6n8qEnBmqB1Y4zbo-5rmvsoPmJsnRlP_hRiUY86zSAQyfbisTGrGBl0IQ7ditpkfYVm0rBWJ8WnYNqYNp8K3qcD7NW72tsy-XoWEjNlz4lWJeRdEG2Nt4CJgnREH4Y"
} }
``` ```
### RSA.generateCsr*(keypair, names)
You can generate the CSR in human-readable or binary / base64 formats:
`RSA.generateCsrPem(keypair, names)`:
```javascript
var pem = RSA.generateCsrPem(keypair, [ 'example.com', 'www.example.com' ]);
console.log(pem);
```
web-safe base64 for **certbot**/**letsencrypt**:
`RSA.generateCsrDerWeb64(keypair, names)`:
```javascript
var web64 = RSA.generateCsrDerWeb64(keypair, [ 'example.com', 'www.example.com' ]);
console.log(web64);
```

View File

@ -208,7 +208,7 @@ function create(deps) {
return RSA.utils._forgeBytesToBuf(der); return RSA.utils._forgeBytesToBuf(der);
}; };
RSA.generateCsrWeb64 = function (keypair, names) { RSA.generateCsrDerWeb64 =RSA.generateCsrWeb64 = function (keypair, names) {
var buf = RSA.generateCsrDer(keypair, names); var buf = RSA.generateCsrDer(keypair, names);
var b64 = buf.toString('base64'); var b64 = buf.toString('base64');
var web64 = RSA.utils.toWebsafeBase64(b64); var web64 = RSA.utils.toWebsafeBase64(b64);

View File

@ -17,7 +17,7 @@ var keypair = {
}; };
var csrPem = RSA.generateCsrPem(keypair, ['example.com', 'www.example.com']); var csrPem = RSA.generateCsrPem(keypair, ['example.com', 'www.example.com']);
var csr64 = RSA.generateCsrWeb64(keypair, ['example.com', 'www.example.com']); var csr64 = RSA.generateCsrDerWeb64(keypair, ['example.com', 'www.example.com']);
console.log(''); console.log('');
console.log('DEBUG csrPem'); console.log('DEBUG csrPem');
console.log(csrPem); console.log(csrPem);