From 550bcc484abd242d0aa800d6f0cbe3d878a8c8f6 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 15 Dec 2015 20:41:17 -0800 Subject: [PATCH] it is ready! --- README.md | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index aeede0c..96bfccb 100644 --- a/README.md +++ b/README.md @@ -197,21 +197,28 @@ var certStore = { The Goodies ```javascript - { newRegUrl: '...' // no defaults, specify LeCore.nproductionServerUrl - // Accounts LeCore.registerNewAccount(options, cb) // returns (err, acmeUrls={newReg,newAuthz,newCert,revokeCert}) - { newRegUrl: '...' // no defaults, specify LeCore.newAuthz - , email: '...' // valid email (server checks MX records) - , agreeToTerms: fn (tosUrl, cb) {} // callback to allow user interaction for tosUrl - // cb(err=null, agree=tosUrl) // must specify agree=tosUrl to continue (or falsey to end) - } + { newRegUrl: '' // no defaults, specify acmeUrls.newAuthz + , email: '' // valid email (server checks MX records) + , accountPrivateKeyPem: '' // callback to allow user interaction for tosUrl + , agreeToTerms: fn (tosUrl, cb) {} // must specify agree=tosUrl to continue (or falsey to end) + } // Registration -LeCore.getCertificate(options, cb) +LeCore.getCertificate(options, cb) // returns (err, pems={ key, cert, ca }) - { newAuthzUrl: '...' // no defaults, specify acmeUrls.newAuthz + { newAuthzUrl: '' // specify acmeUrls.newAuthz + , newCertUrl: '' // specify acmeUrls.newCert + + , domainPrivateKeyPem: '' + , accountPrivateKeyPem: '' + , domains: ['example.com'] + + , setChallenge: fn (hostname, key, val, cb) + , removeChallenge: fn (hostname, key, cb) + } ``` Helpers & Stuff @@ -229,10 +236,10 @@ LeCore.knownEndpoints // new-authz, new-cert, new-reg, revok // HTTP Client Helpers LeCore.Acme // Signs requests with JWK - acme = new Acme(lePrivateKey) // privateKey format is abstract - acme.post(url, body, cb) // POST with signature - acme.parseLinks(link) // (internal) parses 'link' header - acme.getNonce(url, cb) // (internal) HEAD request to get 'replay-nonce' strings + acme = new Acme(lePrivateKey) // privateKey format is abstract + acme.post(url, body, cb) // POST with signature + acme.parseLinks(link) // (internal) parses 'link' header + acme.getNonce(url, cb) // (internal) HEAD request to get 'replay-nonce' strings // Note: some of these are not async, // but they will be soon. Don't rely @@ -240,12 +247,12 @@ LeCore.Acme // Signs requests with JWK // Crypto Helpers LeCore.leCrypto - generateRsaKeypair(bitLen, exponent, cb); // returns { privateKeyPem, privateKeyJwk, publicKeyPem, publicKeyMd5 } - thumbprint(lePubKey) // generates public key thumbprint - generateSignature(lePrivKey, bodyBuf, nonce) // generates a signature - privateJwkToPems(jwk) // { n: '...', e: '...', iq: '...', ... } to PEMs - privatePemToJwk // PEM to JWK (see line above) - importPemPrivateKey(privateKeyPem) // (internal) returns abstract private key + generateRsaKeypair(bitLen, exponent, cb); // returns { privateKeyPem, privateKeyJwk, publicKeyPem, publicKeyMd5 } + thumbprint(lePubKey) // generates public key thumbprint + generateSignature(lePrivKey, bodyBuf, nonce) // generates a signature + privateJwkToPems(jwk) // { n: '...', e: '...', iq: '...', ... } to PEMs + privatePemToJwk // PEM to JWK (see line above) + importPemPrivateKey(privateKeyPem) // (internal) returns abstract private key ``` For testing and development, you can also inject the dependencies you want to use: