Files
semaphore/packages/heyauthn
vplasencia 1ab15c1c05 chore: v3.15.2
Former-commit-id: 514f309583
2024-01-08 13:11:50 +01:00
..
2024-01-08 13:11:50 +01:00
2024-01-03 10:26:09 +01:00

HeyAuthn

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

Github 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

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("42")

group.addMembers(memberList)

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

generateProof(identity, group, group.id, "42", {
    zkeyFilePath: "./semaphore.zkey",
    wasmFilePath: "./semaphore.wasm"
})

Authors