UNPKG

@e280/authlocal

Version:

User-sovereign login system for everybody

25 lines 805 B
import { Hex } from "@e280/stz"; import * as ed from "@noble/ed25519"; export function unpackKey(key) { const bytes = Hex.bytes(key); if (bytes.length !== 32) throw new Error("invalid key"); return bytes; } export async function deriveId(secret) { const secretBytes = unpackKey(secret); const idBytes = await ed.getPublicKeyAsync(secretBytes); return Hex.string(idBytes); } export async function generateKeypair() { const secret = Hex.random(32); const id = await deriveId(secret); return { id, secret }; } export async function sign(message, secret) { return ed.signAsync(message, unpackKey(secret)); } export async function verify(message, signature, id) { return ed.verifyAsync(signature, message, unpackKey(id)); } //# sourceMappingURL=crypto.js.map