cryptographic operations for cobox
Kieran Gibb 0ee347eaf8
transform a string into secure buffer (encryptionKey)
2 years ago
test transform a string into secure buffer (encryptionKey) 2 years ago
.gitignore use awesome gitignore 2 years ago
LICENSE add LICENSE 2 years ago
README.md annotate README 2 years ago
index.js transform a string into secure buffer (encryptionKey) 2 years ago
package.json add bip39 dep 2 years ago
yarn.lock add bip39 dep 2 years ago

README.md

cobox-crypto

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

npm install cobox-crypto

Usage

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

const accessKey = crypto.accessKey()

API

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...
  })
})