| 
									
										
										
										
											2018-11-18 22:50:08 -07:00
										 |  |  | eckles.js | 
					
						
							|  |  |  | ========= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ECDSA tools. Lightweight. Zero Dependencies. Universal compatibility. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | > I _just_ cleaned up the PEM-to-JWK functionality enough to publish.
 | 
					
						
							|  |  |  | > I also have the JWK-to-PEM functionality _mostly_ built, but not enough to publish.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * P-256 (prime256v1, secp256r1) | 
					
						
							|  |  |  | * P-384 (secp384r1) | 
					
						
							|  |  |  | * PKCS#8 | 
					
						
							|  |  |  | * SEC1/X9.62 | 
					
						
							|  |  |  | * PEM-to-JWK | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							| 
									
										
										
										
											2018-11-19 08:53:52 -07:00
										 |  |  | var eckles = require('eckles'); | 
					
						
							|  |  |  | var pem = require('fs').readFileSync('./fixtures/privkey-ec-p256.sec1.pem', 'ascii') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-18 22:50:08 -07:00
										 |  |  | eckles.import({ pem: pem }).then(function (jwk) { | 
					
						
							|  |  |  |   console.log(jwk); | 
					
						
							| 
									
										
										
										
											2018-11-19 08:53:52 -07:00
										 |  |  |   /* | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     "kty": "EC", | 
					
						
							|  |  |  |     "crv": "P-256", | 
					
						
							|  |  |  |     "d": "iYydo27aNGO9DBUWeGEPD8oNi1LZDqfxPmQlieLBjVQ", | 
					
						
							|  |  |  |     "x": "IT1SWLxsacPiE5Z16jkopAn8_-85rMjgyCokrnjDft4", | 
					
						
							|  |  |  |     "y": "mP2JwOAOdMmXuwpxbKng3KZz27mz-nKWIlXJ3rzSGMo" | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   */ | 
					
						
							| 
									
										
										
										
											2018-11-18 22:50:08 -07:00
										 |  |  | }); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <!--
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | eckles.export({ jwk: jwk }).then(function (pem) { | 
					
						
							|  |  |  |   // PEM in pkcs#8 format | 
					
						
							|  |  |  |   console.log(pem); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | eckles.exportSEC1(jwk).then(function (pem) { | 
					
						
							|  |  |  |   // PEM in sec1 (x9.62) format | 
					
						
							|  |  |  |   console.log(pem); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | --> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Goals | 
					
						
							|  |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-18 22:53:11 -07:00
										 |  |  | * Zero Dependencies | 
					
						
							| 
									
										
										
										
											2018-11-18 22:50:08 -07:00
										 |  |  | * Focused support for P-256 and P-384, which are already universally supported. | 
					
						
							|  |  |  | * Convert both ways | 
					
						
							|  |  |  | * Browser support as well |