Something went wrong. Try again.
A local-first event pipeline for independent agents, built on Jazz.
Something went wrong. Try again.
1.6 kB · 51 lines
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import { BodyBoundCapabilityVerifier, decodeBodyBoundCapability, signBodyBoundRequest, type BodyBoundRequestSignature, type BodyBoundRequestSignatureInput,} from "../web/body-capability.js";
export const REVIEW_TIMESTAMP_HEADER = "x-thoughtstream-review-timestamp";export const REVIEW_NONCE_HEADER = "x-thoughtstream-review-nonce";export const REVIEW_SIGNATURE_HEADER = "x-thoughtstream-review-signature";export const REVIEW_CSRF_HEADER = "x-thoughtstream-csrf";
export type ReviewRequestSignatureInput = BodyBoundRequestSignatureInput;export type ReviewRequestSignature = BodyBoundRequestSignature;
export function signReviewRequest(key: Buffer, input: ReviewRequestSignatureInput): ReviewRequestSignature { return signBodyBoundRequest(key, input, "Review");}
export class ReviewCapabilityVerifier { private readonly verifier: BodyBoundCapabilityVerifier;
constructor( key: Buffer, options: { now?: (() => number) | undefined; maxSkewMs?: number | undefined; maxNonces?: number | undefined; } = {}, ) { this.verifier = new BodyBoundCapabilityVerifier(key, "Review", options); }
verify( headers: Record<string, string | string[] | undefined>, method: string, path: string, body: Buffer, ): boolean { return this.verifier.verify(headers, { timestamp: REVIEW_TIMESTAMP_HEADER, nonce: REVIEW_NONCE_HEADER, signature: REVIEW_SIGNATURE_HEADER, }, method, path, body); }}
export function decodeReviewCapability(value: string | undefined): Buffer | undefined { return decodeBodyBoundCapability(value, "Review");}