Skip to content

Latest commit

 

History

History

heyauthn

HeyAuthn

A library to allow developers to create and manage Semaphore identities using WebAuthn.

NPM License NPM Version NPM Downloads Documentation typedoc Linter eslint Code style prettier

This library allows developers to create and manage Semaphore identities using WebAuthn as a cross-device biometric authentication in a way that is more convenient, smoother and secure than localStorage, Chrome extensions, or password manager based solutions.

🛠 Install

npm or yarn

Install the @semaphore-extensions/heyauthn package with npm:

npm i @semaphore-extensions/heyauthn

or yarn:

yarn add @semaphore-extensions/heyauthn

📜 Usage

For more information on the functions provided by @semaphore-extensions/heyauthn, please refer to the TypeDoc documentation.

import { HeyAuthn } from "@semaphore-extensions/heyauthn"

// STEP 1: Configure WebAuthn options.

const options = {
    rpName: "my-app",
    rpID: window.location.hostname,
    userID: "my-id",
    userName: "my-name"
}

// STEP 2: Register a new WebAuthn credential and get its Semaphore identity.

const { identity } = await HeyAuthn.fromRegister(options)

// Now you could also save the identity commitment in your DB (pseudocode).
fetch("/api/register" /* Replace this with your endpoint */, {
    identity.commitment
    // ...
})

// STEP 3: Authenticate existing WebAuthn credential and signal.

const { identity } = await HeyAuthn.fromRegister(options)

// Get existing group and signal anonymously (pseudocode).
import { Group } from "@semaphore-protocol/group"
import { generateProof } from "@semaphore-protocol/proof"
import { utils } from "ethers"

const group = new Group()

group.addMembers(memberList)

const message = utils.formatBytes32String("Hey anon!")

generateProof(identity, group, message, group.root)

Authors