@e280/authlocal
Version:
User-sovereign login system for everybody
32 lines (25 loc) • 646 B
text/typescript
import {signProof} from "./proof.js"
import {generateKeypair} from "../crypto/crypto.js"
import {GenerateSessionOptions, Proof, Session} from "./types.js"
export async function generateSession({
expiresAt,
identity,
appOrigin,
authorityOrigin,
}: GenerateSessionOptions): Promise<Session> {
const sessionKeypair = await generateKeypair()
const proof: Proof = {
sessionId: sessionKeypair.id,
nametag: {id: identity.id, label: identity.label},
}
return {
secret: sessionKeypair.secret,
proofToken: await signProof({
expiresAt,
proof,
appOrigin,
authorityOrigin,
identitySecret: identity.secret,
}),
}
}