npm.io
0.1.16 • Published 2m ago

@auths-dev/verifier

Licence
MIT
Version
0.1.16
Deps
0
Size
40 kB
Vulns
0
Weekly
0
Stars
4

@auths-dev/verifier

TypeScript/JavaScript library for verifying Auths attestations using WASM.

Installation

npm install @auths-dev/verifier

Requirements: Node.js 18+

Quick start

import { init, verifyAttestation, verifyChain } from '@auths-dev/verifier';

// Initialize WASM module (required once)
await init();

// Verify a single attestation
const result = verifyAttestation(attestationJson, issuerPublicKeyHex);
if (result.valid) {
  console.log('Attestation is valid!');
} else {
  console.error('Verification failed:', result.error);
}

// Verify a chain of attestations
const report = verifyChain(attestationsArray, rootPublicKeyHex);
if (report.status.type === 'Valid') {
  console.log('Chain verified!');
}

API reference

Functions
Function Returns Description
init() Promise<void> Initialize WASM module (call once)
verifyAttestation(json, pkHex) VerificationResult Verify single attestation
verifyChain(attestations, rootPkHex) VerificationReport Verify attestation chain
verifyAttestationOrThrow(json, pkHex) void Verify or throw on failure
isInitialized() boolean Check WASM init state
isVerificationValid(report) boolean Helper for report status
Types
interface VerificationResult {
  valid: boolean;
  error?: string;
}

interface VerificationReport {
  status: VerificationStatus;
  chain: ChainLink[];
  warnings: string[];
}

type VerificationStatus =
  | { type: "Valid" }
  | { type: "Expired"; at: string }
  | { type: "Revoked"; at?: string }
  | { type: "InvalidSignature"; step: number }
  | { type: "BrokenChain"; missing_link: string };

Browser usage

<script type="module">
import init, { verifyAttestation } from './pkg/auths_verifier.js';

await init();
const result = verifyAttestation(json, pkHex);
</script>

Building from source

npm install
npm run build:wasm   # Requires Rust and wasm-pack
npm run build:ts
npm run build        # Build everything
npm test

License

MIT -- see LICENSE.

Keywords