Files
Portfolio/scripts/sign-drive-trace.mjs

19 lines
999 B
JavaScript

#!/usr/bin/env node
import { createPrivateKey } from 'node:crypto';
import { readFile, writeFile } from 'node:fs/promises';
import { signReferenceCandidate } from './lib/reference-evidence.mjs';
const args = process.argv.slice(2);
if (args.length !== 6 || args[0] !== '--key-id' || args[2] !== '--private-key') {
throw new Error('Usage: sign-drive-trace --key-id ID --private-key PRIVATE_PEM INPUT_JSON OUTPUT_JSON');
}
const [, keyId, , privateKeyPath, inputPath, outputPath] = args;
const [candidate, privateKeyPem] = await Promise.all([
readFile(inputPath, 'utf8').then(JSON.parse),
readFile(privateKeyPath, 'utf8'),
]);
const privateKey = createPrivateKey(privateKeyPem);
if (privateKey.asymmetricKeyType !== 'ed25519') throw new Error('Reference results require an external Ed25519 private key.');
const signed = signReferenceCandidate(candidate, { keyId, privateKey });
await writeFile(outputPath, `${JSON.stringify(signed, null, 2)}\n`, { encoding: 'utf8', flag: 'wx', mode: 0o600 });