Skip to content

An implementation of the OPAQUE key exchange protocol in WASM

License

Notifications You must be signed in to change notification settings

47ng/opaque-wasm

 
 

Repository files navigation

Build Status

opaque-wasm

An implementation of the OPAQUE key exchange protocol in WASM(WebAssembly). This implementation is based on the opaque-ke.

Installation

npm install --save opaque-wasm
yarn add opaque-wasm

JS simple example of usage

Check full implementation in this file

import { Registration, Login } from "opaque-wasm";

const password = "asdf123";
const email = "[email protected]";

try {
  const registration = new Registration();
  const firstMessage = registration.start(password);
  const secondMessage = await sendMessageToServer(firstMessage);
  const thirdMessage = registration.finish(password, secondMessage);
  const { status } = await sendMessageToServer(thirdMessage, { email });

  console.log(status); // 204 - Server Return ok, user account has been created

  const login = new Login();
  const firstLoginMessage = login.start(password);
  const secondLoginMessage = await sendMessageToServer(firstLoginMessage, email);
  const thirdLoginMessage = login.finish(password, secondLoginMessage);
  const sessionKey = login.getSessionKey();
  await sendMessageToServer(thirdLoginMessage);

  console.log(sessionKey); // eyhojo55....
} catch (e) {
  console.error(e);
}

Build ES6 package

wasm-pack build

Build for NodeJs

wasm-pack build --target nodejs

About

An implementation of the OPAQUE key exchange protocol in WASM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 85.4%
  • JavaScript 14.6%