mirror of
				https://github.com/therootcompany/keypairs.js.git
				synced 2024-11-16 17:29:03 +00:00 
			
		
		
		
	Compare commits
	
		
			9 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| eab6cf919a | |||
| 97cb6c04b9 | |||
| ac1ff1ad4d | |||
| 2e74219361 | |||
| 11965ca603 | |||
| b696c1dade | |||
| b2fc0ebf35 | |||
| af7ee5426f | |||
| c66e9267aa | 
							
								
								
									
										6
									
								
								.jshintrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.jshintrc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | { | ||||||
|  | 	"esversion": 11, | ||||||
|  | 	"node": true, | ||||||
|  | 	"unused": true, | ||||||
|  | 	"curly": true | ||||||
|  | } | ||||||
							
								
								
									
										82
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										82
									
								
								README.md
									
									
									
									
									
								
							| @ -1,4 +1,4 @@ | |||||||
| # @root/keypairs | # [@root/keypairs](https://git.rootprojects.org/root/keypairs.js) | ||||||
| 
 | 
 | ||||||
| Lightweight JavaScript RSA and ECDSA utils that work on Windows, Mac, and Linux | Lightweight JavaScript RSA and ECDSA utils that work on Windows, Mac, and Linux | ||||||
| using modern node.js APIs (no need for C compiler). | using modern node.js APIs (no need for C compiler). | ||||||
| @ -20,6 +20,8 @@ and [Rasha.js (RSA)](https://git.coolaj86.com/coolaj86/rasha.js/). | |||||||
|     -   [ ] Auth0 |     -   [ ] Auth0 | ||||||
| -   [ ] CLI | -   [ ] CLI | ||||||
|     -   See [keypairs-cli](https://npmjs.com/packages/keypairs-cli/) |     -   See [keypairs-cli](https://npmjs.com/packages/keypairs-cli/) | ||||||
|  | -   [x] Node | ||||||
|  | -   [x] Browsers (Webpack >=5) | ||||||
| 
 | 
 | ||||||
| <!-- | <!-- | ||||||
| 
 | 
 | ||||||
| @ -40,7 +42,7 @@ A brief introduction to the APIs: | |||||||
| ```js | ```js | ||||||
| // generate a new keypair as jwk | // generate a new keypair as jwk | ||||||
| // (defaults to EC P-256 when no options are specified) | // (defaults to EC P-256 when no options are specified) | ||||||
| Keypairs.generate().then(function(pair) { | Keypairs.generate().then(function (pair) { | ||||||
| 	console.log(pair.private); | 	console.log(pair.private); | ||||||
| 	console.log(pair.public); | 	console.log(pair.public); | ||||||
| }); | }); | ||||||
| @ -49,7 +51,7 @@ Keypairs.generate().then(function(pair) { | |||||||
| ```js | ```js | ||||||
| // JWK to PEM | // JWK to PEM | ||||||
| // (supports various 'format' and 'encoding' options) | // (supports various 'format' and 'encoding' options) | ||||||
| return Keypairs.export({ jwk: pair.private, format: 'pkcs8' }).then(function( | return Keypairs.export({ jwk: pair.private, format: 'pkcs8' }).then(function ( | ||||||
| 	pem | 	pem | ||||||
| ) { | ) { | ||||||
| 	console.log(pem); | 	console.log(pem); | ||||||
| @ -58,14 +60,14 @@ return Keypairs.export({ jwk: pair.private, format: 'pkcs8' }).then(function( | |||||||
| 
 | 
 | ||||||
| ```js | ```js | ||||||
| // PEM to JWK | // PEM to JWK | ||||||
| return Keypairs.import({ pem: pem }).then(function(jwk) { | return Keypairs.import({ pem: pem }).then(function (jwk) { | ||||||
| 	console.log(jwk); | 	console.log(jwk); | ||||||
| }); | }); | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ```js | ```js | ||||||
| // Thumbprint a JWK (SHA256) | // Thumbprint a JWK (SHA256) | ||||||
| return Keypairs.thumbprint({ jwk: jwk }).then(function(thumb) { | return Keypairs.thumbprint({ jwk: jwk }).then(function (thumb) { | ||||||
| 	console.log(thumb); | 	console.log(thumb); | ||||||
| }); | }); | ||||||
| ``` | ``` | ||||||
| @ -86,6 +88,72 @@ return Keypairs.signJwt({ | |||||||
| By default ECDSA keys will be used since they've had native support in node | By default ECDSA keys will be used since they've had native support in node | ||||||
| _much_ longer than RSA has, and they're smaller, and faster to generate. | _much_ longer than RSA has, and they're smaller, and faster to generate. | ||||||
| 
 | 
 | ||||||
|  | ## Webpack 5+ (for Browsers) | ||||||
|  | 
 | ||||||
|  | This package includes native browser versions of all special functions. | ||||||
|  | 
 | ||||||
|  | Since Webpack 5 now fully supports vanilla JavaScript and exclusive browser builds out-of-the-box, | ||||||
|  | it's pretty easy to create a minimal config to use Keypairs in your browser projects: | ||||||
|  | 
 | ||||||
|  | `webpack.config.js`: | ||||||
|  | 
 | ||||||
|  | ```js | ||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | var path = require('path'); | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  | 	entry: './main.js', | ||||||
|  | 	mode: 'development', | ||||||
|  | 	devServer: { | ||||||
|  | 		contentBase: path.join(__dirname, 'dist'), | ||||||
|  | 		port: 3001 | ||||||
|  | 	}, | ||||||
|  | 	output: { | ||||||
|  | 		publicPath: 'http://localhost:3001/' | ||||||
|  | 	}, | ||||||
|  | 	module: { | ||||||
|  | 		rules: [{}] | ||||||
|  | 	}, | ||||||
|  | 	plugins: [] | ||||||
|  | }; | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | `main.js`: | ||||||
|  | 
 | ||||||
|  | ```js | ||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | var Keypairs = require('./keypairs.js'); | ||||||
|  | 
 | ||||||
|  | Keypairs.generate().then(function (pair) { | ||||||
|  | 	console.log(pair.private); | ||||||
|  | 	console.log(pair.public); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | `index.html`: | ||||||
|  | 
 | ||||||
|  | ```html | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html> | ||||||
|  | 	<body> | ||||||
|  | 		<script src="./dist/main.js"></script> | ||||||
|  | 	</body> | ||||||
|  | </html> | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | npm install --save-dev webpack@5 | ||||||
|  | # Or, if webpack 5 is still in beta: npm install --save-dev webpack@next | ||||||
|  | 
 | ||||||
|  | npm install --save-dev webpack-cli | ||||||
|  | 
 | ||||||
|  | npx webpack --mode=production | ||||||
|  | 
 | ||||||
|  | ls dist/main.js | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ## API Overview | ## API Overview | ||||||
| 
 | 
 | ||||||
| -   generate (JWK) | -   generate (JWK) | ||||||
| @ -124,7 +192,7 @@ Option Examples: | |||||||
| Example: | Example: | ||||||
| 
 | 
 | ||||||
| ```js | ```js | ||||||
| Keypairs.parse({ key: '...' }).catch(function(e) { | Keypairs.parse({ key: '...' }).catch(function (e) { | ||||||
| 	// could not be parsed or was a public key | 	// could not be parsed or was a public key | ||||||
| 	console.warn(e); | 	console.warn(e); | ||||||
| 	return Keypairs.generate(); | 	return Keypairs.generate(); | ||||||
| @ -145,7 +213,7 @@ Option Examples: | |||||||
| Example: | Example: | ||||||
| 
 | 
 | ||||||
| ```js | ```js | ||||||
| Keypairs.parseOrGenerate({ key: process.env['PRIVATE_KEY'] }).then(function( | Keypairs.parseOrGenerate({ key: process.env['PRIVATE_KEY'] }).then(function ( | ||||||
| 	pair | 	pair | ||||||
| ) { | ) { | ||||||
| 	console.log(pair.public); | 	console.log(pair.public); | ||||||
|  | |||||||
| @ -9,5 +9,7 @@ sha2.sum = function (alg, str) { | |||||||
| 		data = encoder.encode(str); | 		data = encoder.encode(str); | ||||||
| 	} | 	} | ||||||
| 	var sha = 'SHA-' + String(alg).replace(/^sha-?/i, ''); | 	var sha = 'SHA-' + String(alg).replace(/^sha-?/i, ''); | ||||||
| 	return window.crypto.subtle.digest(sha, data); | 	return window.crypto.subtle.digest(sha, data).then(function (buf) { | ||||||
|  | 		return new Uint8Array(buf); | ||||||
|  | 	}); | ||||||
| }; | }; | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
| 	"name": "@root/keypairs", | 	"name": "@root/keypairs", | ||||||
| 	"version": "0.9.1", | 	"version": "0.10.2", | ||||||
| 	"lockfileVersion": 1, | 	"lockfileVersion": 1, | ||||||
| 	"requires": true, | 	"requires": true, | ||||||
| 	"dependencies": { | 	"dependencies": { | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
| 	"name": "@root/keypairs", | 	"name": "@root/keypairs", | ||||||
| 	"version": "0.9.1", | 	"version": "0.10.2", | ||||||
| 	"description": "Lightweight, Zero-Dependency RSA and EC/ECDSA crypto for Node.js and Browsers", | 	"description": "Lightweight, Zero-Dependency RSA and EC/ECDSA crypto for Node.js and Browsers", | ||||||
| 	"main": "keypairs.js", | 	"main": "keypairs.js", | ||||||
| 	"browser": { | 	"browser": { | ||||||
| @ -20,7 +20,7 @@ | |||||||
| 	], | 	], | ||||||
| 	"repository": { | 	"repository": { | ||||||
| 		"type": "git", | 		"type": "git", | ||||||
| 		"url": "https://git.rootprojects.org/root/csr.js.git" | 		"url": "https://github.com/therootcompany/keypairs.js.git" | ||||||
| 	}, | 	}, | ||||||
| 	"keywords": [ | 	"keywords": [ | ||||||
| 		"ASN.1", | 		"ASN.1", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user