2.7 KiB
Daplie is Taking Back the Internet!
Stop serving the empire and join the rebel alliance!
- Invest in Daplie on Wefunder
- Pre-order Cloud, The World's First Home Server for Everyone
le-store-SPEC
The reference implementation, specification, template, and tests for creating an le-store- strategy.
The reference implementation is completely in-memory.
See Help Wanted: Database Plugins (for saving certs)
How to create a custom strategy
READ THIS README:
Believe it or not, most of your answers are either right here
or in the comments in the sample code in index.js.
Now, let's say there's some new database AwesomeDB that we want to make a plugin for, here's how we'd start:
# First create you repo on github or wherever
# Then clone it
git clone git@github.com:AwesomeDB/le-store-awesome.git
pushd le-store-awesome
# IMPORTANT: we pull in the 'template' branch, which has the skeleton code
git pull https://github.com/Daplie/le-store-SPEC.git template
git push
Or, if you already have some code and just need to merge in the tests:
git pull https://github.com/Daplie/le-store-SPEC.git tests
Next, Just run the tests
node tests/basic.js
Note: you should not modify the tests that come from the tests branch, but rather create separate files for your own tests.
API
* getOptions()
* accounts.
* checkKeypair(opts, cb)
* setKeypair(opts, keypair, cb)
* check(opts, cb)
* set(opts, reg, cb)
* certificates.
* checkKeypair(opts, cb)
* setKeypair(opts, keypair, cb)
* check(opts, cb)
* set(opts, certs, cb)
Keypairs
For convenience, the keypair object will always contain both PEM and JWK
versions of the private and/or public keys when being passed to the *Keypair functions.
set
setKeypair will always be called with email and all three forms of the keypair:
privateKeyPem, publicKeyPem, and privateKeyJwk. It's easy to generate publicKeyJwk
from privateKeyJwk because it is just a copy of the public fields e and n.
// keypair looks like this
{ privateKeyPem: '...'
, publicKeyPem: '...'
, privateKeyJwk: { ... }
}
check
checkKeypair may be called with any of email, accountId, and keypair - which will
contain only publicKeyPem and publicKeyJwk.
// opts looks like this
{
email: '...@...'
, accountId: '...'
, keypair: {
publicKeyPem: '...'
, publicKeyJwk: { ... }
}
}
