@freedomofpress/crypto-browser

中文文档
0.3.0发布于 2026/10/31Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 11.6万

浏览器兼容加密工具 .

中文使用文档
文档目录16 节
  1. 特征
  2. ASN.1 解析和编码
  3. 编码公用事业
  4. 密码操作
  5. 额外水电费
  6. 安装
  7. 使用量
  8. 导入公钥并验证签名
  9. 分析 ASN.1 结构
  10. 编码/编码公用事业
  11. 依赖关系
  12. Ed25519 倒置和文摘核查
  13. 结构
  14. 发展
  15. 许可证
  16. 承认

密码浏览器

CI

用于Sigstore和TUF校验的可兼容浏览器加密工具.

用于 浏览器 财务报告和审定财务报表 浏览器。 。 。 .

[叹息] 该图书馆没有收到独立的安全审计。 维护工作由志愿者进行,该项目没有得到新闻自由基金会的正式支持或认可.

特征

ASN.1 解析和编码

  • ASN1Obj (英语): 解析和编码 DER- 编码 ASN.1 结构
  • ASN1 标签: 处理 ASN.1 标记和类型检查
  • 长度编码/解码: DER 长度格式支持
  • 类型解析器: 从 ASN取出整数、 OID 、 日期、 位字符串、 布尔等

编码公用事业

  • 基础64: 带有标准和URL安全变体的编码/解码
  • 十六进制: 编码/解码十六进制字符串
  • 总统: 在 PEM 格式和 DER 格式之间转换
  • UTF-8 导弹: 字符串到 Uint8 箭头转换
  • 字节数字 : concatBytes,并与 uint8ArrayEqual
  • 文摘数字 : sha256(bytes) 财务报告和审定财务报表 digest(algorithm, bytes) 返回字节
  • 默克勒树 (RFC 6962): (中文(简体) ) hashLeaf, (中文(简体) ), hashChildren, (中文(简体) ), rootHash, (中文(简体) ), verifyInclusionProof, (中文(简体) ), verifyConsistencyProof,对照透明化矢量进行测试

密码操作

  • 密钥导入支助ECDSA(P-256/P-384/P-521)、Ed25519和RSA密钥
  • 签字核查: 使用 Web Crypto API 验证签名
    • ECDSA与SHA-256/384/512
    • Ed25519 (英语)
    • RSA-PSS和RSASSA-PKCS1-v1 5 (中文(简体) )
  • 文摘核查: 选入时对预编摘要进行ECDSA签名核查 noble 条目
  • PKCS # 1 到 SPKI 转换: 为 Web Crypto 兼容性转换 RSA 密钥

额外水电费

  • 字节结构: 自动增长分配的高效字节缓冲器
  • 警衔JSON: OLPC Canonial JSON (TUF)和RFC 8785 JCS (Rekor, WEBCAT),都针对官方矢量进行了测试

安装

npm install @freedomofpress/crypto-browser

使用量

导入公钥并验证签名

import { importKey, verifySignature } from '@freedomofpress/crypto-browser';

const publicKey = await importKey('ECDSA', 'P-256', pemKey);
const isValid = await verifySignature(publicKey, message, signature, 'sha256');

分析 ASN.1 结构

import { ASN1Obj } from '@freedomofpress/crypto-browser';

const asn1 = ASN1Obj.parseBuffer(derBytes);
const oid = asn1.subs[0].toOID();
const integer = asn1.subs[1].toInteger();

编码/编码公用事业

import {
  base64ToUint8Array,
  uint8ArrayToHex,
  toDER,
  fromDER,
} from '@freedomofpress/crypto-browser';

const bytes = base64ToUint8Array('SGVsbG8=');
const hex = uint8ArrayToHex(bytes);
const der = toDER(pemString);
const pem = fromDER(derBytes, 'PUBLIC KEY');

依赖关系

  • @noble/curves: 仅通过 @freedomofpress/crypto-browser/noble,因此从未导入该条目的捆绑不会携带该条目

Ed25519 倒置和文摘核查

getSubtle() 返回平台的本地状态 SubtleCrypto。在 WebCrypto 中没有 Ed25519 的平台可以引导每个帮助者通过 @noble/curves 仅用于 Ed25519 键 :

import { installEd25519Fallback } from "@freedomofpress/crypto-browser/noble";

await installEd25519Fallback();

同样的入门出口 verifySignatureOverDigest(key, digest, signature) 当只有签名数据摘要时,为ECDSA签名.

结构

src/
  asn1/           # ASN.1 parsing and encoding
  encoding.ts     # Base64, hex, UTF-8 encoding
  pem.ts          # PEM format conversion
  stream.ts       # ByteStream utility
  crypto.ts       # Cryptographic operations
  canonicalize.ts # Canonical JSON

发展

# Install dependencies
npm install

# Build the project
npm run build

许可证

Apache-2.0 - 见 自由主义 详细文件.

承认

这个软件包提供了来自Sigstore和TUF生态系统的可与浏览器兼容的加密功能版本. 所有代码都根据Apache-2.0许可.

主要来源:

  • 缩写 ASN.1 解析、PEM编码和溪流公用事业
  • tu 财务报告和审定财务报表 缩写 - 强化JSON的实施

所有文件都保留了原来的版权标题.

版本与发布记录

@freedomofpress/crypto-browser 共发布 13 个版本,首次发布于 2025/11/27;过去 12 个月发布了 13 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.0latest2026/10/3115 天前
0.2.22026/10/3116 天前
0.2.12026/10/3016 天前
0.2.02026/10/3016 天前
0.1.82026/09/201 个月前
0.1.72026/02/149 个月前

关于 @freedomofpress/crypto-browser 的常见问题

@freedomofpress/crypto-browser 是什么?

浏览器兼容加密工具 .

如何安装 @freedomofpress/crypto-browser?

在项目目录运行 npm install @freedomofpress/crypto-browser,或使用 pnpm add / yarn add / bun add。

@freedomofpress/crypto-browser 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@freedomofpress/crypto-browser 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@freedomofpress/crypto-browser 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.19。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@freedomofpress/crypto-browser 可以商用吗?

@freedomofpress/crypto-browser 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@freedomofpress/crypto-browser 的下载量有多少?

根据 npm 官方下载统计,@freedomofpress/crypto-browser 在 2026/10/16 – 2026/11/14 这 30 天内被下载 115,686 次,日均约 3,856 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@freedomofpress/crypto-browser 还在维护吗?

最新版本 0.3.0 发布于 2026/10/31(15 天前);至今共发布 13 个版本,其中过去 12 个月发布了 13 个;首次发布于 2025/11/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。