cryptographic operations for cobox
Kieran Gibb 3bcf454f64
3 years ago
lib fiddle to try to get tests working 3 years ago
test correct async test issue 3 years ago
.gitignore use awesome gitignore 3 years ago
LICENSE add LICENSE 3 years ago add a README 3 years ago
index.js add underscore to internal method name 3 years ago
package.json update deps: remove zenroom + deps, swap istanbul for nyc 3 years ago
yarn.lock remove package-lock 3 years ago


The crypto primitives used in cobox, extracted into a separate module

npm install cobox-crypto


const Crypto = require('cobox-crypto')
const crypto = Crypto()

const accessKey = crypto.accessKey()


keyPair = crypto.keyPair()

Returns an ed25519 keypair that can used for tree signing.

const symKey = crypto.symmetricKey()

Returns an ed25519 symmetric key used for shared secret encryption

const accessKey = crypto.accessKey()

// OR

const accessKey = crypto.pack(pubKey, symKey)

Returns an access key, which consists of an ed25519 public key, packed together with an ed25519 symmetric key

const keys = crypto.unpack(key)

Returns an object containing a public key, and a shared secret if accessible. Public key alone is used for blind replication. The shared secret can then be used for decryption.

const valueEncoding = crypto.encoder(encryptionKey, {})

Returns a message encoder used for encrypting messages in hypercore. Can be passed to hypercore doing the following:

const accessKey = crypto.accessKey
const keys = crypto.unpack(accessKey)
var feed = hypercore(storage, keys.publicKey, {
  valueEncoding: crypto.encoder(keys.symmetricKey, { valueEncoding: 'utf-8' })

feed.ready(() => {
  feed.append("this is going to be encrypted", (err, seq) => {
    // do other stuff...