A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at main 26 lines 786 B view raw
1import { env } from "lib/env"; 2import crypto from "node:crypto"; 3 4export function generateLastfmSignature( 5 params: Record<string, string>, 6): string { 7 const sortedKeys = Object.keys(params).sort(); 8 let signatureString = ""; 9 for (const key of sortedKeys) { 10 if (key !== "format" && key !== "callback") { 11 signatureString += key + params[key]; 12 } 13 } 14 signatureString += env.ROCKSKY_SHARED_SECRET; 15 return crypto.createHash("md5").update(signatureString, "utf8").digest("hex"); 16} 17 18export function validateLastfmSignature( 19 params: Record<string, string>, 20): boolean { 21 const providedSignature = params.api_sig; 22 if (!providedSignature) return false; 23 24 const expectedSignature = generateLastfmSignature(params); 25 return providedSignature === expectedSignature; 26}