feat: establish reproducible FreeCAD web compatibility baseline

This commit is contained in:
2026-08-10 16:11:38 -04:00
parent e5a5d74dbc
commit b962a5c3b5
733 changed files with 349081 additions and 647 deletions

View File

@@ -0,0 +1,5 @@
import { createHash, sign, verify } from 'node:crypto'
export const payloadDigest = (payload) => createHash('sha256').update(payload).digest('hex')
export const signManifest = (payload, privateKeyPem, keyId) => { if (!privateKeyPem || !keyId?.trim()) throw new Error('An Ed25519 private key and key id are required.'); const signature = sign(null, Buffer.from(payload), privateKeyPem).toString('base64'); return { status: 'signed', algorithm: 'Ed25519', keyId: keyId.trim(), payloadSha256: payloadDigest(payload), signature } }
export const verifyManifestSignature = (payload, signature, publicKeyPem) => { if (!signature || signature.status !== 'signed' || signature.algorithm !== 'Ed25519' || !/^[0-9a-f]{64}$/.test(signature.payloadSha256 || '') || payloadDigest(payload) !== signature.payloadSha256) return false; try { return verify(null, Buffer.from(payload), publicKeyPem, Buffer.from(signature.signature, 'base64')) } catch { return false } }