# @atlasauth/pca-fndsa-wasm 中文文档

规范地址：https://npmcn.com/package/%40atlasauth/pca-fndsa-wasm/

版本：0\.4\.3
npm 元数据更新时间：2026-10-27T19:49:22.574Z
中文译文更新时间：2026-11-07T02:24:19.528Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40atlasauth/pca-fndsa-wasm
原文对照：https://npmcn.com/package/%40atlasauth/pca-fndsa-wasm/?lang=original
项目主页：https://github.com/Atlas-Authorization/pca#readme
源码仓库：https://github.com/Atlas-Authorization/pca

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：194 kB，11 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：0 个
- 首次发布：2026-10-09T01:40:18.036Z
- 最新版本发布：2026-10-27T19:49:22.406Z
- 近 30 天下载量：4847（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：7（近 12 个月 7 个）

## 中文简介

FN-DSA(Falcon,FIPS 206)为@atlasauth/pca的签名后端:FN-DSA-512 / FN-DSA-1024 keygen,由被审核的纯Rust fn-dsa 板条箱家族(Thomas Pornin)编译为WebAsembly. 核查是常设仲裁院核查人的公用钥匙

## 安装

```sh
npm install @atlasauth/pca-fndsa-wasm
```

也可以使用：`pnpm add @atlasauth/pca-fndsa-wasm`、`yarn add @atlasauth/pca-fndsa-wasm`、`bun add @atlasauth/pca-fndsa-wasm`

## README

# @atlasauth/pca-fndsa-wasm (英语)

这个 **FN-DSA (Falcon, FIPS 206) 签名后端** 页:1 `@atlasauth/pca`量子后套间 登记。 它提供密钥生成、签名和——常设仲裁院核查人实际执行的操作 —— 说 **签名验证**,用于两个标准化参数集:

| 变体 | 警卫 | 校验密钥 | 签名密钥 | 签名 |
| --- | --- | --- | --- | --- |
| `fn-dsa-512` | 猫 一 | 897 B类 | 1345 B类 | 666个B级 |
| `fn-dsa-1024` | 猫咪,5号 | 1793 B类 | 2369 B号 | 1280 B (韩语) |

## 安装

```sh
npm i @atlasauth/pca-fndsa-wasm
```

这是后端 `@atlasauth/pca` 用于FN-DSA套房;通常作为附属于 `@atlasauth/pca`。 。 。 .

节点20分 这个 `.wasm` 包内的文件船和已安装的文件船 `dist/` 目录; 不需要构建步骤或 Rust 工具链来使用它 .

## 经审查的边界( 无手卷加密)

每一次FN-DSA/猎鹰行动——ntrugen关键一代,猎鹰 `sign_dyn` 高斯取样器+ FFT 和 NTT 签名验证——通过纯Rust **`fn-dsa` 托马斯的箱子家庭 波宁语Name** ("猎鹰"作者),箱子.io `0.4.0`,汇编到WebAssembly (`crate/`) (中文(简体) ). 这是 [粗鲁塞克语Name](https://rustsec.org/)\- 被推荐的继任者 `pqcrypto-falcon`元数据a 箱子连接在一起 `fn-dsa-kgen` 编号 : `fn-dsa-sign` 编号 : `fn-dsa-vrfy` 编号 : `fn-dsa-comm`。 。 。 . **无** 会 议 日 程 和 议 程 梯形数学,FFT/NTT,离散-高斯采样器或密钥/签名编码是 此处被重新执行.

这个箱子只添加了非晶体胶:由SHAKE256种子决定的RNG(由SHAKE256所制造) `fn-dsa`自己的再出品SHAKE256,因此Keygen/signing可以再出作已知的答案测试)并 固定缓冲器 C-ABI 组装在 `crate/src/lib.rs`。 。 。 .

> `fn-dsa` 实值 `#![no_std]`, 用途 **无分配器** (所有工作状态都在内部的固定大小阵列中) 键/生成器结构——没有 `Vec`编号 :`Box` 并且没有外部 超过 `rand_core` + 键 `zeroize`,所以它的目标 `wasm32-unknown-unknown` 纯的玫瑰花,没有 经常预算: **无进口** (模块瞬间带有空导入对象). 与 `pqc_kyber`, (中文(简体) ), 没有 `[patch.crates-io]` 需要供应商副本。 这个 `#![no_std]` cdylib 必须保持 _定义_ 全球 分配器,因为板条箱图显示 `alloc` 符号(不可脱落/将胶水零化); 已运出的被转移定义为 **终止分配** 可证明从未援引的 在WebAssembly为两个参数集验证回转绿色.

## API 密码

```ts
import {
  keygen, sign, verify,            // FN-DSA keygen / sign / verify (per variant)
  sizes,                           // byte lengths for a variant's vk / sk / sig
  SEED_BYTES, MSG_CAP,             // 32; max message length
  type FnDsaVariant,               // 'fn-dsa-512' | 'fn-dsa-1024'
} from '@atlasauth/pca-fndsa-wasm';

const { verifyingKey, signingKey } = keygen('fn-dsa-512', seed /* 32 B */);
const sig = sign('fn-dsa-512', signingKey, message, sigSeed /* 32 B */);
const ok  = verify('fn-dsa-512', verifyingKey, message, sig); // -> boolean
```

瓦斯马是 `no_std`,运行时无分配器,即时 **空导入对象**,并且已经 通过线性内存中的固定静态缓冲器驱动(镜像) `@atlasauth/pca-mpc-wasm` 编号 : `@atlasauth/pca-mpc-lwe-ot-wasm`) (中文(简体) ). 信件和签名是原始的 FN-DSA 方案 `DOMAIN_NONE` 财务报告和审定财务报表 `HASH_ID_RAW` (没有呼叫员预发).

## 构建测试( T)

```sh
pnpm build:wasm   # cargo build --release --target wasm32-unknown-unknown + copy artifact + cargo clean
pnpm build        # tsc
pnpm test         # vitest: round-trips, cross-implementation vectors and negative cases through the wasm binding
```

FN-DSA计算器的原生回程和篡改测试 `crate/src/lib.rs` (单位:千美元)`cargo test`) (中文(简体) ).

## 标准状态(诚实)

FN -DSA是,我们是 **FIPS 206,最终待决**:NIST尚未发布最终标准文本. 这个 `fn-dsa` 箱子跟踪草稿并警告说 **密钥编码、 信件预隐藏和域 1.0发布前的分离可能改变**,所以这里产生的密钥和签名不是 保证与最终的FN-DSA标准互通. **跟踪标准并重置 fIPS 206着陆时的箱子.**

-   **签名/ 键源** 为: **最佳常时**: FN-DSA(Falcon) 签名是已知的硬项 由于其浮动点离散-高斯取样器, 继续 `wasm32` (没有本地的IEEE-754ABI担保) `fn-dsa` 使用便携式 FP 模拟,使 一次最努力的时间。 这是原始人的侧道边界,不是 破坏它的安全.
-   **核查** ——常设仲裁院核查员唯一使用这一后端的是 **公用钥匙操作**数字 : 它没有秘密,也没有浮点.

## 何等为证而何为非

**FN-DSA还没有正式的测试矢量.** 如2026-10-09日的检查,NIST ACVP-Server 寄存器没有FN-DSA/Falcon/FIPS 206测试文件(它有ML-DSA和SLH-DSA),FIPS 206仍然是一个 因此没有使用FN-DSA官方矢量。 本套装中的任何内容均不声称对 NIST FN-DSA载体.

什么官话 **猎鹰回合-3** 已知答案文件( Falcon 向 NIST PQC 提交的原始文件) 存档, 512和1024各有100个条目, 由 sha256 键入 `test-vectors/falcon-round3/`做掩护, 和他们所不能达到的

-   **键:在转码后可用.** 猎鹰和FN-DSA的原始草案 编码相同的关键材料 不同的( 组合系数的位序, 以系数形式表示的公钥相对于 NTT) 域名,FN-DSA签名密钥中额外的公钥散列). 每个正式的密钥对都是被转码的,a 签名是通过后端生成的,并且通过转码的原始公钥进行验证,用于 所有200个条目。 未译码的圆-3编码被否决.
-   **签署:不兼容.** 回合-3签名 hash 不同输入并使用可变长 集装箱,所以FN -DSA 验证拒绝它们。 检验表明这一点而不是假设.
-   **KAT种子的关键生成:未测试.**

测试内容包括:

-   **交叉执行,双向.** 联合国机构会议以外的会议 同名草稿( C 库) `pornin/c-fn-dsa` - 单独的代码基础和语言 红色 `fn-dsa` 装在垃圾桶里的箱子) 装在垃圾桶里的验证 垃圾桶生产的签名被接受 由C执行。 FN-DSA-512和FN-DSA-1024都带有空,短和1000字节的信息. 向量是生成的,不是官方的,在固定中被贴上这样的标签.
-   **负案.** 对于每个交叉执行签名,签名的每个单位翻转都是 拒绝, 以及修改后的信件, 不同的校验密钥, 错误的页眉字节, 非零 编码 和错误的校验密钥。 输入大小错误, 错误的字段和预期名称 尺寸.
-   **决取相取.** 密钥和签名从种子中复制 bit- for-bit.

限制 :

-   C执行部分与Rust板条箱分享其作者(和对草案的解读),因此同意 显示两个代码基础正确执行同一个草稿,而不是显示草稿是NIST将公布的.
-   原始- Falcon 库( 例如 liboqs 0.1.6. 0) 使用不同的密钥编码和信件 他们拒绝FN-DSA的秘密密钥, 他们不能 用于交叉核对签名.
-   种子密钥生成没有被草案指定; C 和 Rust 执行会获得不同的密钥 从同一个种子,所以按键通过互操作性来比较,而不是平等.
-   签名的常年行为和在相机上的密钥生成没有被测量.

## 使用时使用@ atlasauth/ pca

`@atlasauth/pca` 登记册 `fn-dsa-512` 财务报告和审定财务报表 `fn-dsa-1024` 作为签名套件,并加载此软件包作为其验证和签名后端。 如果后端无法加载, FN-DSA 验证失败被关闭 .

## 建立来源

运出 `wasm/pca_fndsa_wasm.wasm` 由 Rust 源创建于 `crate/` 联合国 `Cargo.lock`),且为位元可再生产.

|  |  |
| --- | --- |
| 文物 | `wasm/pca_fndsa_wasm.wasm` |
| 萨瓦256 | `95c1cd16fb135c4a524a5ff19548d5d1a5ce43fc1f00e19f4465b5111d8903ad` |
| 目标 | `wasm32-unknown-unknown`, (中文(简体) ), `--release --locked` 通过 `crate/build-wasm.sh` (路径调整;选择级别) `s`, LTO, , (英语), `panic = "abort"`,剥去) |
| 工具链 | b940084d7 2026-09-28),货物 1.99.0 |
| 锁定的箱子 | fn-dsa 0.4.0(及其被锁入的中转箱) |

校验 : `bash crate/build-wasm.sh && shasum -a 256 wasm/pca_fndsa_wasm.wasm` (需求数) `rustup target add wasm32-unknown-unknown`) (中文(简体) ). 脚本通过 `--remap-path-prefix` 货物登记簿和生锈烟囱,以及 `-Cdebuginfo=0`,因此构建是路径独立的:没有宿主路径被嵌入,同样的sha256来自任意的取出位置.

## 许可证

麻省理工 - 见LICENSE.

## 常见问题

### @atlasauth/pca-fndsa-wasm 是什么？

FN-DSA\(Falcon,FIPS 206\)为@atlasauth/pca的签名后端:FN-DSA-512 / FN-DSA-1024 keygen,由被审核的纯Rust fn-dsa 板条箱家族\(Thomas Pornin\)编译为WebAsembly\. 核查是常设仲裁院核查人的公用钥匙

### 如何安装 @atlasauth/pca-fndsa-wasm？

在项目目录运行 npm install @atlasauth/pca-fndsa-wasm，或使用 pnpm add / yarn add / bun add。

### @atlasauth/pca-fndsa-wasm 支持 TypeScript 吗？

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

### @atlasauth/pca-fndsa-wasm 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @atlasauth/pca-fndsa-wasm 需要什么版本的 Node\.js？

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

### @atlasauth/pca-fndsa-wasm 可以商用吗？

@atlasauth/pca-fndsa-wasm 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @atlasauth/pca-fndsa-wasm 的下载量有多少？

根据 npm 官方下载统计，@atlasauth/pca-fndsa-wasm 在 2026/10/07 – 2026/11/05 这 30 天内被下载 4,847 次，日均约 162 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @atlasauth/pca-fndsa-wasm 还在维护吗？

最新版本 0\.4\.3 发布于 2026/10/28（11 天前）；至今共发布 7 个版本，其中过去 12 个月发布了 7 个；首次发布于 2026/10/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

