forked from coolaj86/eckles.js
		
	update README, correct PKCS8 comments
This commit is contained in:
		
							parent
							
								
									67bb76d19e
								
							
						
					
					
						commit
						d3357fdb23
					
				
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| @ -127,6 +127,27 @@ rMjgyCokrnjDft6Y/YnA4A50yZe7CnFsqeDcpnPbubP6cpYiVcnevNIYyg== | |||||||
| -----END PUBLIC KEY----- | -----END PUBLIC KEY----- | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | Testing | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  | All cases are tested in `test.sh`. | ||||||
|  | 
 | ||||||
|  | You can compare these keys to the ones that you get from OpenSSL, ssh-keygen, and WebCrypto: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | # Generate EC P-256 Keypair | ||||||
|  | openssl ecparam -genkey -name prime256v1 -noout -out ./privkey-ec-p256.sec1.pem | ||||||
|  | 
 | ||||||
|  | # Export Public-only EC Key (as SPKI) | ||||||
|  | openssl ec -in ./privkey-ec-p256.sec1.pem -pubout -out ./pub-ec-p256.spki.pem | ||||||
|  | 
 | ||||||
|  | # Convert SEC1 (traditional) EC Keypair to PKCS8 format | ||||||
|  | openssl pkcs8 -topk8 -nocrypt -in ./privkey-ec-p256.sec1.pem -out ./privkey-ec-p256.pkcs8.pem | ||||||
|  | 
 | ||||||
|  | # Convert EC public key to SSH format | ||||||
|  | ssh-keygen -f ./pub-ec-p256.spki.pem -i -mPKCS8 > ./pub-ec-p256.ssh.pub | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| Goals of this project | Goals of this project | ||||||
| ----- | ----- | ||||||
| 
 | 
 | ||||||
| @ -134,6 +155,7 @@ Goals of this project | |||||||
| * Focused support for P-256 and P-384, which are already universally supported. | * Focused support for P-256 and P-384, which are already universally supported. | ||||||
| * Convert both ways | * Convert both ways | ||||||
| * Browser support as well (TODO) | * Browser support as well (TODO) | ||||||
|  | * OpenSSL, ssh-keygen, and WebCrypto compatibility | ||||||
| 
 | 
 | ||||||
| Legal | Legal | ||||||
| ----- | ----- | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| -----BEGIN EC PRIVATE KEY----- | -----BEGIN PRIVATE KEY----- | ||||||
| MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiYydo27aNGO9DBUW | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiYydo27aNGO9DBUW | ||||||
| eGEPD8oNi1LZDqfxPmQlieLBjVShRANCAAQhPVJYvGxpw+ITlnXqOSikCfz/7zms | eGEPD8oNi1LZDqfxPmQlieLBjVShRANCAAQhPVJYvGxpw+ITlnXqOSikCfz/7zms | ||||||
| yODIKiSueMN+3pj9icDgDnTJl7sKcWyp4Nymc9u5s/pyliJVyd680hjK | yODIKiSueMN+3pj9icDgDnTJl7sKcWyp4Nymc9u5s/pyliJVyd680hjK | ||||||
| -----END EC PRIVATE KEY----- | -----END PRIVATE KEY----- | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| -----BEGIN EC PRIVATE KEY----- | -----BEGIN PRIVATE KEY----- | ||||||
| MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBeXK4IRZJNNLxTv078 | MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBeXK4IRZJNNLxTv078 | ||||||
| zPTnPXy+HiRvXSzO+7/ul1e4ZZXqV8TI8THJRhawDoDaR1WhZANiAATbMRTRsoJr | zPTnPXy+HiRvXSzO+7/ul1e4ZZXqV8TI8THJRhawDoDaR1WhZANiAATbMRTRsoJr | ||||||
| t6Mosgnyg8acuGqHHKK/j/DfwrZrRI8Lp2xJ33+CU0nyVyq/Sx9/kZtUPiOe7zdL | t6Mosgnyg8acuGqHHKK/j/DfwrZrRI8Lp2xJ33+CU0nyVyq/Sx9/kZtUPiOe7zdL | ||||||
| qxyfr9N4CPcRk5EQZs6zp3OhWlq6Cf5dAwzIL07hUtsMMUYFlMmUyxs= | qxyfr9N4CPcRk5EQZs6zp3OhWlq6Cf5dAwzIL07hUtsMMUYFlMmUyxs= | ||||||
| -----END EC PRIVATE KEY----- | -----END PRIVATE KEY----- | ||||||
|  | |||||||
| @ -367,7 +367,7 @@ EC.pack = function (opts) { | |||||||
|     if ('sec1' === format) { |     if ('sec1' === format) { | ||||||
|       return PEM.packBlock({ type: "EC PRIVATE KEY", bytes: EC.packSec1(jwk) }); |       return PEM.packBlock({ type: "EC PRIVATE KEY", bytes: EC.packSec1(jwk) }); | ||||||
|     } else if ('pkcs8' === format) { |     } else if ('pkcs8' === format) { | ||||||
|       return PEM.packBlock({ type: "EC PRIVATE KEY", bytes: EC.packPkcs8(jwk) }); |       return PEM.packBlock({ type: "PRIVATE KEY", bytes: EC.packPkcs8(jwk) }); | ||||||
|     } else if (-1 !== [ 'spki', 'pkix' ].indexOf(format)) { |     } else if (-1 !== [ 'spki', 'pkix' ].indexOf(format)) { | ||||||
|       return PEM.packBlock({ type: "PUBLIC KEY", bytes: EC.packSpki(jwk) }); |       return PEM.packBlock({ type: "PUBLIC KEY", bytes: EC.packSpki(jwk) }); | ||||||
|     } else if (-1 !== [ 'ssh', 'rfc4716' ].indexOf(format)) { |     } else if (-1 !== [ 'ssh', 'rfc4716' ].indexOf(format)) { | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "eckles", |   "name": "eckles", | ||||||
|   "version": "1.2.0", |   "version": "1.2.1", | ||||||
|   "description": "PEM-to-JWK and JWK-to-PEM (and SSH) for ECDSA keys in a lightweight, zero-dependency library focused on perfect universal compatibility.", |   "description": "PEM-to-JWK and JWK-to-PEM (and SSH) for ECDSA keys in a lightweight, zero-dependency library focused on perfect universal compatibility.", | ||||||
|   "homepage": "https://git.coolaj86.com/coolaj86/eckles.js", |   "homepage": "https://git.coolaj86.com/coolaj86/eckles.js", | ||||||
|   "main": "index.js", |   "main": "index.js", | ||||||
| @ -29,6 +29,8 @@ | |||||||
|     "PEM-to-JWK", |     "PEM-to-JWK", | ||||||
|     "ECDSA", |     "ECDSA", | ||||||
|     "EC", |     "EC", | ||||||
|  |     "SSH-to-JWK", | ||||||
|  |     "JWK-to-SSH", | ||||||
|     "p-256", |     "p-256", | ||||||
|     "prime256v1", |     "prime256v1", | ||||||
|     "secp256r1", |     "secp256r1", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user