Compare commits
	
		
			7 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8211d9b6d8 | |||
| 361b0bf994 | |||
| c392b72120 | |||
| f2a9fc083a | |||
| f68f5f8d0f | |||
| bd8056ff87 | |||
| e138491328 | 
							
								
								
									
										25
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								README.md
									
									
									
									
									
								
							@ -1,17 +1,15 @@
 | 
				
			|||||||
RSA-CSR.js
 | 
					[RSA-CSR.js](https://git.coolaj86.com/coolaj86/rsa-csr.js)
 | 
				
			||||||
==========
 | 
					==========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sponsored by [Root](https://therootcompany.com),
 | 
					A [Root](https://therootcompany.com) Project.
 | 
				
			||||||
built for [ACME.js](https://git.coolaj86.com/coolaj86/acme.js)
 | 
					
 | 
				
			||||||
 | 
					Built for [ACME.js](https://git.coolaj86.com/coolaj86/acme.js)
 | 
				
			||||||
and [Greenlock.js](https://git.coolaj86.com/coolaj86/greenlock-express.js)
 | 
					and [Greenlock.js](https://git.coolaj86.com/coolaj86/greenlock-express.js)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A focused, **zero-dependency** library that can do exactly one thing really, really well:
 | 
					A focused, **zero-dependency** library that can do exactly one thing really, really well:
 | 
				
			||||||
 | 
					 | 
				
			||||||
  * Generate a Certificate Signing Requests (CSR), and sign it!
 | 
					  * Generate a Certificate Signing Requests (CSR), and sign it!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Need JWK-to-PEM? Try [Rasha.js](https://git.coolaj86.com/coolaj86/rasha.js)
 | 
					| < 300 lines of code | 1.7k gzipped | 4.7k minified | 8.5k with comments |
 | 
				
			||||||
 | 
					 | 
				
			||||||
Need to generate an EC CSR? Try [ECSDA-CSR.js](https://git.coolaj86.com/coolaj86/ecdsa-csr.js)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Features
 | 
					Features
 | 
				
			||||||
========
 | 
					========
 | 
				
			||||||
@ -31,6 +29,10 @@ Features
 | 
				
			|||||||
* [x] Vanilla Node.js
 | 
					* [x] Vanilla Node.js
 | 
				
			||||||
  * no school like the old school
 | 
					  * no school like the old school
 | 
				
			||||||
  * easy to read and understand
 | 
					  * easy to read and understand
 | 
				
			||||||
 | 
					* [ ] JWK-to-PEM
 | 
				
			||||||
 | 
					    * See [Rasha.js](https://git.coolaj86.com/coolaj86/rasha.js)
 | 
				
			||||||
 | 
					* [ ] EC CSR
 | 
				
			||||||
 | 
					    * See [ECSDA-CSR.js](https://git.coolaj86.com/coolaj86/ecdsa-csr.js)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Usage
 | 
					Usage
 | 
				
			||||||
-----
 | 
					-----
 | 
				
			||||||
@ -55,7 +57,7 @@ var key = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
var domains = [ 'example.com', 'www.example.com' ];
 | 
					var domains = [ 'example.com', 'www.example.com' ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
return rsacsr({ key: key, domains: domains }).then(function (csr) {
 | 
					return rsacsr({ jwk: key, domains: domains }).then(function (csr) {
 | 
				
			||||||
  console.log('CSR PEM:');
 | 
					  console.log('CSR PEM:');
 | 
				
			||||||
  console.log(csr);
 | 
					  console.log(csr);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
@ -63,7 +65,7 @@ return rsacsr({ key: key, domains: domains }).then(function (csr) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
The output will look something like this (but much longer):
 | 
					The output will look something like this (but much longer):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```js
 | 
					```
 | 
				
			||||||
-----BEGIN CERTIFICATE REQUEST-----
 | 
					-----BEGIN CERTIFICATE REQUEST-----
 | 
				
			||||||
MIIClTCCAX0CAQAwFjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3
 | 
					MIIClTCCAX0CAQAwFjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3
 | 
				
			||||||
DQEBAQUAA4IBDwAwggEKAoIBAQCba21UHE+VbDTpmYYFZUOV+OQ8AngOCdjROsPC
 | 
					DQEBAQUAA4IBDwAwggEKAoIBAQCba21UHE+VbDTpmYYFZUOV+OQ8AngOCdjROsPC
 | 
				
			||||||
@ -80,7 +82,7 @@ If you need to convert a PEM to JWK first, do so:
 | 
				
			|||||||
```js
 | 
					```js
 | 
				
			||||||
var Rasha = require('rasha');
 | 
					var Rasha = require('rasha');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Rasha.import({ pem: '-----BEGIN RSA PRIVATE KEY-----\nMIIEpAI..." }).then(function (jwk) {
 | 
					Rasha.import({ pem: "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAI..." }).then(function (jwk) {
 | 
				
			||||||
  console.log(jwk);
 | 
					  console.log(jwk);
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
@ -170,7 +172,7 @@ Rather than trying to make a generic implementation that works with everything u
 | 
				
			|||||||
this library is intentionally focused on around the use case of generating certificates for
 | 
					this library is intentionally focused on around the use case of generating certificates for
 | 
				
			||||||
ACME services (such as Let's Encrypt).
 | 
					ACME services (such as Let's Encrypt).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
That said, [please tell me](https://git.coolaj86.com/coolaj86/rsa-csr.js/issues) if it doesn't
 | 
					That said, [please tell me](https://git.coolaj86.com/coolaj86/rsa-csr.js/issues/new) if it doesn't
 | 
				
			||||||
do what you need, it may make sense to add it (or otherwise, perhaps to help you create a fork).
 | 
					do what you need, it may make sense to add it (or otherwise, perhaps to help you create a fork).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The primary goal of this project is for this code to do exactly (and all of)
 | 
					The primary goal of this project is for this code to do exactly (and all of)
 | 
				
			||||||
@ -207,6 +209,7 @@ Hence, all of these projects are MPL-2.0 licensed.
 | 
				
			|||||||
Legal
 | 
					Legal
 | 
				
			||||||
-----
 | 
					-----
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[RSA-CSR.js](https://git.coolaj86.com/coolaj86/rsa-csr.js) |
 | 
				
			||||||
MPL-2.0 |
 | 
					MPL-2.0 |
 | 
				
			||||||
[Terms of Use](https://therootcompany.com/legal/#terms) |
 | 
					[Terms of Use](https://therootcompany.com/legal/#terms) |
 | 
				
			||||||
[Privacy Policy](https://therootcompany.com/legal/#privacy)
 | 
					[Privacy Policy](https://therootcompany.com/legal/#privacy)
 | 
				
			||||||
 | 
				
			|||||||
@ -15,7 +15,7 @@ try {
 | 
				
			|||||||
  // ignore
 | 
					  // ignore
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rsacsr({ key: key, domains: domains }).then(function (csr) {
 | 
					rsacsr({ jwk: key, domains: domains }).then(function (csr) {
 | 
				
			||||||
  // Using error so that we can redirect stdout to file
 | 
					  // Using error so that we can redirect stdout to file
 | 
				
			||||||
  //console.error("CN=" + domains[0]);
 | 
					  //console.error("CN=" + domains[0]);
 | 
				
			||||||
  //console.error("subjectAltName=" + domains.join(','));
 | 
					  //console.error("subjectAltName=" + domains.join(','));
 | 
				
			||||||
 | 
				
			|||||||
@ -110,13 +110,13 @@ RSA.sign = function signRsa(keypem, ab) {
 | 
				
			|||||||
  return Promise.resolve().then(function () {
 | 
					  return Promise.resolve().then(function () {
 | 
				
			||||||
    // Signer is a stream
 | 
					    // Signer is a stream
 | 
				
			||||||
    var sign = crypto.createSign('SHA256');
 | 
					    var sign = crypto.createSign('SHA256');
 | 
				
			||||||
    sign.write(new Uint8Array(ab));
 | 
					    sign.write(ab);
 | 
				
			||||||
    sign.end();
 | 
					    sign.end();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // The signature is ASN1 encoded, as it turns out
 | 
					    // The signature is ASN1 encoded, as it turns out
 | 
				
			||||||
    var sig = sign.sign(keypem);
 | 
					    var sig = sign.sign(keypem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Convert to a JavaScript ArrayBuffer just because
 | 
					    // Convert to a JavaScript ArrayBuffer just because
 | 
				
			||||||
    return new Uint8Array(sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength));
 | 
					    return sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
'use strict';
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var Enc = require('./encoding.js')
 | 
					var Enc = require('./encoding.js');
 | 
				
			||||||
var PEM = module.exports;
 | 
					var PEM = module.exports;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PEM.packBlock = function (opts) {
 | 
					PEM.packBlock = function (opts) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,17 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "rsa-csr",
 | 
					  "name": "rsa-csr",
 | 
				
			||||||
  "version": "1.0.1",
 | 
					  "version": "1.0.6",
 | 
				
			||||||
  "description": "💯 A focused, zero-dependency library to generate a Certificate Signing Request (CSR) and sign it!",
 | 
					  "description": "💯 A focused, zero-dependency library to generate a Certificate Signing Request (CSR) and sign it!",
 | 
				
			||||||
 | 
					  "homepage": "https://git.coolaj86.com/coolaj86/rsa-csr.js",
 | 
				
			||||||
  "main": "index.js",
 | 
					  "main": "index.js",
 | 
				
			||||||
  "bin": {
 | 
					  "bin": {
 | 
				
			||||||
    "rsa-csr": "bin/rsa-csr.js"
 | 
					    "rsa-csr": "bin/rsa-csr.js"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  "files": [
 | 
				
			||||||
 | 
					    "bin",
 | 
				
			||||||
 | 
					    "fixtures",
 | 
				
			||||||
 | 
					    "lib"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
  "directories": {
 | 
					  "directories": {
 | 
				
			||||||
    "lib": "lib"
 | 
					    "lib": "lib"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user