Files
semaphore/packages/heyauthn
cedoor ac830458fa chore: v4.0.0-beta.2
Former-commit-id: 43f555e229
2024-03-04 15:46:23 +00:00
..
2024-02-10 15:26:06 +00:00
2024-03-04 15:46:23 +00:00
2024-02-28 15:29:21 +00:00

HeyAuthn

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

NPM license NPM version 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-protocol/heyauthn package with npm:

npm i @semaphore-protocol/heyauthn

or yarn:

yarn add @semaphore-protocol/heyauthn

📜 Usage

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

import { HeyAuthn } from "@semaphore-protocol/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