vibe-cli-tool
Version:
VibeCLI v1.9 - 模板商店生态,智能部署生成,多语言支持,交互式学习系统,企业级Web全栈应用CLI工具
34 lines • 1.29 kB
JavaScript
import fs from 'fs-extra';
import crypto from 'crypto';
import nacl from 'tweetnacl';
import * as tweetnaclUtil from 'tweetnacl-util';
export async function computeSha256(filePath) {
const data = await fs.readFile(filePath);
const hash = crypto.createHash('sha256');
hash.update(data);
return hash.digest('hex');
}
export async function verifySha256(filePath, signatureFile) {
if (!(await fs.pathExists(signatureFile)))
return true; // 无签名则跳过校验
const expected = (await fs.readFile(signatureFile, 'utf-8')).trim();
const actual = await computeSha256(filePath);
return expected === actual;
}
// 默认模板商店公钥(Base64),可通过 env 覆盖 VIBECLI_TEMPLATE_PUBKEY
const DEFAULT_PUBKEY_B64 = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
export function getStorePublicKey() {
const b64 = process.env.VIBECLI_TEMPLATE_PUBKEY || DEFAULT_PUBKEY_B64;
return tweetnaclUtil.decodeBase64(b64);
}
export function verifyEd25519(data, signatureB64, pubKey) {
try {
const sig = tweetnaclUtil.decodeBase64(signatureB64);
const key = pubKey || getStorePublicKey();
return nacl.sign.detached.verify(data, sig, key);
}
catch {
return false;
}
}
//# sourceMappingURL=signature.js.map