@file-goblin/upload-goblin
Version:
Alchemy-powered file uploader for Cloudflare Workers with R2 and S3 support
22 lines (16 loc) • 505 B
text/typescript
import crypto from 'node:crypto';
/**
* Generates a signed upload token
*/
export function generateUploadSignature(
payload: { fileId: string; expiresAt: number; [key: string]: any },
secretKey: string
): string {
const payloadJson = JSON.stringify(payload);
const payloadBase64 = Buffer.from(payloadJson).toString('base64url');
const signature = crypto
.createHmac('sha256', secretKey)
.update(payloadBase64)
.digest('base64url');
return `${payloadBase64}.${signature}`;
}