x3dh
v1.0.1
Published
X3DH key agreement protocol based on libsodium
Downloads
1
Readme
X3DH
This package implements the X3DH key agreement protocol in TypeScript. The cryptographic operations are provided by libsodium entirely.
Installation
$ yarn add x3dh
or
$ npm i --save x3dh
Usage
Alice needs to retrieve some public keys from Bob that he has made public previously. She then calculates a shared secret and sends some information to Bob so that he can calculcate the shared secret on his side as well.
import {X3DH} from "./X3DH";
const prekeySigner = // ... Signing the key is not part of this library
const prekeySignatureVerifier = // ... and neither is verification
const bob = await X3DH.init();
const bobPrekeyBundle = await bob.createPrekeyBundle(100, false, prekeySigner);
const alice = await X3DH.init();
// [Alice fetches bob's prekey bundle]
const keyAgreementInitiation = await alice.initiateKeyAgreement(bobPrekeyBundle, prekeySignatureVerifier, "Example");
// [Alice sends identity key, ephemeral key and used one-time prekey to bob]
const sharedSecret = await bob.sharedSecretFromKeyAgreement("Example", identityKey, ephemeralKey, usedOneTimePrekey);