Skip to content

Latest commit

 

History

History
 
 

heyauthn

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.commmitment
    // ...
})

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

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

// Get existing group and signal anonymously (pseudocode).
import { Group } from "@cryptkeeperzk/semaphore-group"
import { generateProof } from "@cryptkeeperzk/semaphore-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