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 | ||||
| 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 | ||||
| -   [ ] 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 | ||||
| // generate a new keypair as jwk | ||||
| // (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.public); | ||||
| }); | ||||
| @ -49,7 +51,7 @@ Keypairs.generate().then(function(pair) { | ||||
| ```js | ||||
| // JWK to PEM | ||||
| // (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 | ||||
| ) { | ||||
| 	console.log(pem); | ||||
| @ -58,14 +60,14 @@ return Keypairs.export({ jwk: pair.private, format: 'pkcs8' }).then(function( | ||||
| 
 | ||||
| ```js | ||||
| // PEM to JWK | ||||
| return Keypairs.import({ pem: pem }).then(function(jwk) { | ||||
| return Keypairs.import({ pem: pem }).then(function (jwk) { | ||||
| 	console.log(jwk); | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| ```js | ||||
| // Thumbprint a JWK (SHA256) | ||||
| return Keypairs.thumbprint({ jwk: jwk }).then(function(thumb) { | ||||
| return Keypairs.thumbprint({ jwk: jwk }).then(function (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 | ||||
| _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 | ||||
| 
 | ||||
| -   generate (JWK) | ||||
| @ -124,7 +192,7 @@ Option Examples: | ||||
| Example: | ||||
| 
 | ||||
| ```js | ||||
| Keypairs.parse({ key: '...' }).catch(function(e) { | ||||
| Keypairs.parse({ key: '...' }).catch(function (e) { | ||||
| 	// could not be parsed or was a public key | ||||
| 	console.warn(e); | ||||
| 	return Keypairs.generate(); | ||||
| @ -145,7 +213,7 @@ Option Examples: | ||||
| Example: | ||||
| 
 | ||||
| ```js | ||||
| Keypairs.parseOrGenerate({ key: process.env['PRIVATE_KEY'] }).then(function( | ||||
| Keypairs.parseOrGenerate({ key: process.env['PRIVATE_KEY'] }).then(function ( | ||||
| 	pair | ||||
| ) { | ||||
| 	console.log(pair.public); | ||||
|  | ||||
| @ -9,5 +9,7 @@ sha2.sum = function (alg, str) { | ||||
| 		data = encoder.encode(str); | ||||
| 	} | ||||
| 	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", | ||||
| 	"version": "0.9.1", | ||||
| 	"version": "0.10.2", | ||||
| 	"lockfileVersion": 1, | ||||
| 	"requires": true, | ||||
| 	"dependencies": { | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
| 	"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", | ||||
| 	"main": "keypairs.js", | ||||
| 	"browser": { | ||||
| @ -20,7 +20,7 @@ | ||||
| 	], | ||||
| 	"repository": { | ||||
| 		"type": "git", | ||||
| 		"url": "https://git.rootprojects.org/root/csr.js.git" | ||||
| 		"url": "https://github.com/therootcompany/keypairs.js.git" | ||||
| 	}, | ||||
| 	"keywords": [ | ||||
| 		"ASN.1", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user