密码浏览器
用于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许可.
主要来源:
所有文件都保留了原来的版权标题.