hashsigs-ts工程实践:tsup+Vitest构建并开源TypeScript密码学库的完整流程 hashsigs-ts工程实践tsupVitest构建并开源TypeScript密码学库的完整流程【免费下载链接】hashsigs-tsHash-based signatures in typescript, WOTS项目地址: https://gitcode.com/gh_mirrors/ha/hashsigs-tshashsigs-ts 是一个用 TypeScript 实现的基于哈希的签名Hash-based signatures密码学库核心是 WOTSWinternitz One-Time Signature Plus一次性签名算法。如果你想在浏览器或 Node.js 环境中落地后量子密码post-quantum签名这篇工程实践指南会带你走完整条链路从 src/wotsplus.ts 的算法实现到用 tsup 一次产出 CJS ESM 类型声明再用 Vitest 测试向量把覆盖率钉在 80% 以上。 项目全貌一个极简但标准的密码学库整个仓库非常轻量核心就三个源文件文件职责src/index.ts库的入口仅导出WOTSPlus类与HashFunction类型src/wotsplus.tsWOTS 签名/验签算法主体实现src/wotsplus.test.tsVitest 单元测试与测试向量验证辅助配置文件各司其职package.json — 包元信息、脚本命令与依赖声明tsup.config.ts — 构建配置vitest.config.ts — 测试与覆盖率配置tsconfig.json — TypeScript 严格模式编译选项test/test_vectors/wotsplus_keccak256.json — Keccak-256 下的官方风格测试向量WOTS 属于后量子安全的哈希签名家族抗量子攻击的前提是不依赖大数分解或离散对数只依赖哈希函数的碰撞安全性因此特别适合存算分离的 Web 场景。WOTS 算法怎么落地读懂核心源码WOTSPlus 类 的设计有几个值得学习的点1. 构造期完成全部参数推导。传入哈希函数如 keccak_256后构造函数会自动算出消息分块数、校验和分块数、签名长度、公钥长度等派生参数并立刻做合法性校验——chainLen必须是 2 的幂且仅限 4 或 16对齐 XMSS / RFC 8391 约束。2. 领域分离Domain Separation。prf 方法 用前缀字节0x03 种子 2 字节索引构造伪随机函数输入防止不同用途的哈希输出互相混淆这是密码学实现里极易踩坑的细节。3. 跨平台兼容层。库内置了 BufferUtil 工具在没有 Node.jsBuffer的浏览器环境下自动回退到Uint8Array一套代码通吃两端。对外只暴露四个核心 APIgenerateKeyPair— 由私钥种子 公钥种子派生密钥对sign— 对消息哈希做 WOTS 签名verify— 验证签名有效性verifyWithRandomizationElements— 携带随机化元素的验证性能优化路径 小提醒WOTS 是一次性签名同一密钥只能签一条消息多次使用会泄露私钥种子。实际项目中请配合 XMSS/LMS 之类的树形结构做多消息使用。一键构建tsup 产出 CJS ESM 类型声明现代 TypeScript 库发布的关键难题是双模块格式 类型声明而 tsup.config.ts 只用五行配置就解决了entry— 入口锁定为 src/index.ts库结构干净format: [cjs, esm]— 同时产出 CommonJS 与 ESM兼容老项目与 ESM-only 新项目dts: true— 自动生成.d.ts类型声明消费方 IDE 体验完整clean: true— 构建前清空dist避免脏文件混入发布包配合 package.json 中的main/module/types三件套指向以及files: [dist]只发布构建产物npm install得到的包体干净且体积可控。日常开发只需两条命令npm run build— 一次性构建npm run dev— watch 模式改动即重编Vitest 测试体系80% 覆盖率门槛 测试向量密码学库没有测试向量test vectors等于没有安全底线。本项目在 src/wotsplus.test.ts 中做了三层防线行为测试— 密钥生成、正常签名/验签往返、空签名必须验签失败等边界用例测试向量对拍— 直接导入 wotsplus_keccak256.json与参考实现的输出逐字节比对确保实现与规范一致覆盖率硬门槛— 项目要求函数、分支、语句覆盖率均不低于 80%vitest.config.ts 的覆盖率配置也很典型选用 V8 provider同时输出text控制台、json、html本地报告中可查看与lcov供 CI/CD 集成四种格式并用exclude精确排除了dist、node_modules等干扰项。常用命令npm test— 运行全部测试npm run test:watch— 开发时热更新测试npm run coverage— 测试 覆盖率报告另外注意 tsconfig.json 开启了strict严格模式且排除了*.test.ts不参与产物编译——测试代码不会泄漏到发布包里。开源发布清单从本地代码到 npm 包对照 package.json 与 README.md一个可开源的密码学库通常要齐这几件事清单项本项目做法对应文件明确的许可证AGPL-3.0-or-later全文随仓库发布COPYING包名与版本quip.network/hashsigs语义化版本package.json检索关键词pqcrypto/post-quantum/signaturespackage.json使用文档安装、构建、测试、覆盖率说明齐全README.md贡献流程Fork → 分支 → 提 PR且要求测试与覆盖率达标README.md上手实操三步跑通 hashsigs-ts如果你想亲手把这套流程走一遍按下面顺序操作即可获取源码执行git clone https://gitcode.com/gh_mirrors/ha/hashsigs-ts安装依赖并构建npm install后执行npm run build检查dist/下是否同时生成了.jsCJS、.mjsESM与.d.ts验证质量npm test跑通全部用例再执行npm run coverage确认覆盖率报告达标写在最后hashsigs-ts 的价值不仅在于 WOTS 算法本身更在于它示范了TypeScript 密码学库的标准工程姿势tsup 五行为构建兜底、Vitest 测试向量 80% 覆盖率门槛守住正确性、strict 模式与 AGPL 许可保障代码质量与合规。把这套模板套到你自己的加密库上就能以很小的维护成本产出一个可信赖的开源 npm 包。 【免费下载链接】hashsigs-tsHash-based signatures in typescript, WOTS项目地址: https://gitcode.com/gh_mirrors/ha/hashsigs-ts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考