163 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| [Eckles CLI](https://git.coolaj86.com/coolaj86/eckles-cli.js)
 | |
| =========
 | |
| 
 | |
| Sponsored by [Root](https://therootcompany.com).
 | |
| Built for [ACME.js](https://git.coolaj86.com/coolaj86/acme.js)
 | |
| and [Greenlock.js](https://git.coolaj86.com/coolaj86/greenlock.js)
 | |
| 
 | |
| ECDSA (elliptic curve) tools.
 | |
| 
 | |
| ## Install
 | |
| 
 | |
| ```bash
 | |
| npm install -g eckles
 | |
| ```
 | |
| 
 | |
| Table of Contents
 | |
| =================
 | |
| 
 | |
| * [x] Generate EC Keys
 | |
| * [x] PEM to JWK
 | |
| * [x] JWK to PEM
 | |
| * [x] SSH "pub" format
 | |
| * [ ] RSA
 | |
|   * **Need RSA tools?** Check out [Rasha.js](https://git.coolaj86.com/coolaj86/rasha.js)
 | |
| 
 | |
| ## Generate EC (ECDSA/ECDH) Keypair
 | |
| 
 | |
| ```
 | |
| eckles [format] [curve|encoding]
 | |
| ```
 | |
| 
 | |
| #### Generate ECDSA JWK
 | |
| 
 | |
| ```
 | |
| eckles [jwk] [P-256|P-384]
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| # Default P-256 (prime256v1, secp256r1)
 | |
| eckles jwk
 | |
| 
 | |
| # Use P-384 (secp384r1)
 | |
| eckles jwk P-384
 | |
| ```
 | |
| 
 | |
| #### Generate ECDSA PEM
 | |
| 
 | |
| ```
 | |
| eckles [sec1|pkcs8|ssh] [P-256|P-384]
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles sec1
 | |
| 
 | |
| eckles pkcs8 P-256
 | |
| 
 | |
| eckles ssh P-384
 | |
| ```
 | |
| 
 | |
| #### Generate ECDSA DER
 | |
| 
 | |
| ```
 | |
| eckles [sec1|pkcs8] [der]
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles sec1 der > privkey.ec.sec1.der 2> pub.ec.spki.der
 | |
| 
 | |
| eckles pkcs8 der > privkey.ec.pkcs8.der 2> pub.ec.spki.der
 | |
| ```
 | |
| 
 | |
| ## Convert ECDSA PEM to JWK
 | |
| 
 | |
| ```
 | |
| eckles [pemfile] [public]
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles privkey.pem > privkey.jwk.json
 | |
| 
 | |
| eckles pub.pem > pub.jwk.json
 | |
| 
 | |
| eckles privkey.pem public > pub.jwk.json
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles id_rsa > privkey.jwk.json
 | |
| 
 | |
| eckles id_rsa public > pub.jwk.json
 | |
| 
 | |
| eckles id_rsa.pub > pub.jwk.json
 | |
| ```
 | |
| 
 | |
| ## Convert ECDSA JWK to PEM
 | |
| 
 | |
| ```
 | |
| eckles [jwk-keyfile] [format]
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles privkey.jwk.json sec1 > privkey.pem
 | |
| 
 | |
| eckles privkey.jwk.json pkcs8 > privkey.pem
 | |
| 
 | |
| eckles privkey.jwk.json spki > pub.pem
 | |
| 
 | |
| eckles privkey.jwk.json ssh > id_rsa.pub
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles pub.jwk.json spki > id_rsa.pub
 | |
| 
 | |
| eckles pub.jwk.json ssh > id_rsa.pub
 | |
| ```
 | |
| 
 | |
| ## Convert ECDSA PEM to SSH
 | |
| 
 | |
| This is a two-step process, at the moment.
 | |
| 
 | |
| Only public keys are necessary, but private keys may be used.
 | |
| 
 | |
| ```bash
 | |
| eckles privkey.pem > privkey.jwk.json
 | |
| 
 | |
| eckles privkey.jwk.json pkcs8 > id_rsa
 | |
| 
 | |
| eckles privkey.jwk.json ssh > id_rsa.pub
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles pub.pem > pub.jwk.json
 | |
| 
 | |
| eckles pub.jwk.json ssh > id_rsa.pub
 | |
| ```
 | |
| 
 | |
| #### Convert ECDSA SSH to PEM
 | |
| 
 | |
| This is a two-step process, at the moment.
 | |
| 
 | |
| Only public keys are necessary, but private keys may be used.
 | |
| 
 | |
| ```bash
 | |
| eckles id_rsa > privkey.jwk.json
 | |
| 
 | |
| eckles privkey.jwk.json sec1 > privkey.pem
 | |
| 
 | |
| eckles privkey.jwk.json pkcs8 > privkey.pem
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| eckles id_rsa.pub > pub.jwk.json
 | |
| 
 | |
| eckles privkey.jwk.json spki > pub.pem
 | |
| ```
 | |
| 
 | |
| Legal
 | |
| -----
 | |
| 
 | |
| [Eckles CLI](https://git.coolaj86.com/coolaj86/eckles-cli.js) |
 | |
| MPL-2.0 |
 | |
| [Terms of Use](https://therootcompany.com/legal/#terms) |
 | |
| [Privacy Policy](https://therootcompany.com/legal/#privacy)
 |