# @canton-network/core-signing-securosys 中文文档

规范地址：https://npmcn.com/package/%40canton-network/core-signing-securosys/

版本：0\.5\.4
npm 元数据更新时间：2026-11-05T21:20:41.304Z
中文译文更新时间：2026-11-09T18:14:08.064Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40canton-network/core-signing-securosys
原文对照：https://npmcn.com/package/%40canton-network/core-signing-securosys/?lang=original
项目主页：https://github.com/canton-network/wallet/tree/main/core/signing-securosys#readme
源码仓库：https://github.com/canton-network/wallet

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

- 包体积（解压后）：215 kB，11 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2026-08-10T10:18:46.007Z
- 最新版本发布：2026-11-05T21:20:41.072Z
- 近 30 天下载量：1991（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

Secrosys TSB 钱包网关签名驱动程序

## 安装

```sh
npm install @canton-network/core-signing-securosys
```

也可以使用：`pnpm add @canton-network/core-signing-securosys`、`yarn add @canton-network/core-signing-securosys`、`bun add @canton-network/core-signing-securosys`

## README

# @canton-network/core-signing-securosys (英语)

签署将Canton钱包网关与Secrososys TSB合并的驱动程序.

## 特征

-   `createKey` 创建带有硬码空策略的 TSB SKA 密钥, 然后 重命名为来自公钥的标签 .
-   `getKeys` 列出 TSB 密钥并返回与钱包网关兼容的公众 键.
-   `signTransaction` 创建 TSB 签名请求并将 TSB 请求ID 返回为 提供者 `txId`。见 [关键标识符](https://npmcn.com/package/%40canton-network/core-signing-securosys/#readme-key-identifiers) 怎么样 签名密钥解决.
-   `getTransaction` 将 TSB 请求状态/结果映射到钱包网关 交易状态/签名字段.
-   `getTransactions` 由提供者交易ID获取 。 仅公用钥匙 从此驱动程序内存储交易缓存支持过滤 .
-   运行时配置可以通过检查和更改 `getConfiguration` 编号 : `setConfiguration`。 。 。 .

## 使用量

```typescript
import SecurosysSigningDriver from '@canton-network/core-signing-securosys'

const driver = new SecurosysSigningDriver({
    baseUrl: 'http://localhost:8080',
    keyManagementApiKey: process.env.TSB_KEY_MANAGEMENT_API_KEY,
    keyOperationApiKey: process.env.TSB_KEY_OPERATION_API_KEY,
    mtlsP12Path: process.env.TSB_MTLS_P12_PATH,
    mtlsP12Password: process.env.TSB_MTLS_P12_PASSWORD,
})
```

驱动程序使用的TSB端点是:

-   `GET /v1/key`
-   `POST /v1/key`
-   `POST /v1/key/attributes`
-   `PATCH /v1/key/changeAttributes`
-   `POST /v1/sign`
-   `GET /v1/request/{id}`
-   `POST /v1/filteredRequests`
-   `DELETE /v1/request/{id}`

## 配置

| 财产 | 说明 |
| :-- | :-- |
| `baseUrl` | TSB服务的基础 URL. |
| `keyManagementApiKey` | `X-API-KEY` 价值 `/v1/key` 结束点. |
| `keyOperationApiKey` | `X-API-KEY` 用于签名/请求-状态终点的值. |
| `bearerToken` | 可选的无记名访问符 . |
| `mtlsP12Path` | 当TSB需要mTLS时使用的PKCS#12/P12客户端证书的可选路径. |
| `mtlsP12Password` | PKCS#12/P12客户端证书的可选密码. |
| `keyPassword` | 用于密钥属性和签名的可选 TSB 密钥密码 . |
| `signatureAlgorithm` | TSB 签名算法. 默认为 `EDDSA`; 目前的钱包网关/州签署预期Ed25519兼容签名. |

当通过钱包网关配置 RPC 更改这些值时,使用 现有的PascalCase公约: `MtlsP12Path` 财务报告和审定财务报表 `MtlsP12Password`。 。 。 . `MtlsP12Password` 隐蔽在 `getConfiguration`。 。 。 .

### 钱包网关配置

| 网关配置字段 | 司机财产 |
| :-- | :-- |
| `signingProviders.securosys.baseUrl` | `baseUrl` |
| `signingProviders.securosys.mtlsP12Path` | `mtlsP12Path` |
| `signingProviders.securosys.signatureAlgorithm` | `signatureAlgorithm` |
| `signingProviders.securosys.keyManagementApiKeyEnv` | `keyManagementApiKey` |
| `signingProviders.securosys.keyOperationApiKeyEnv` | `keyOperationApiKey` |
| `signingProviders.securosys.bearerTokenEnv` | `bearerToken` |
| `signingProviders.securosys.mtlsP12PasswordEnv` | `mtlsP12Password` |
| `signingProviders.securosys.keyPasswordEnv` | `keyPassword` |

这个 `*Env` 字段只存储环境变量 **名称**中保留秘密值 环境。 默认匹配下面的可变名称 .

### 钱包网关环境变量

| 环境变量 | 司机财产 | 使用量 |
| :-- | :-- | :-- |
| `SECUROSYS_TSB_BASE_URL` | `baseUrl` | 仅发现遗产; 当 `signingProviders` 已配置 |
| `SECUROSYS_TSB_KEY_MANAGEMENT_API_KEY` | `keyManagementApiKey` | 密钥管理 API 密钥的默认名称; 覆盖到 `keyManagementApiKeyEnv` |
| `SECUROSYS_TSB_KEY_OPERATION_API_KEY` | `keyOperationApiKey` | 密钥操作 API 密钥的默认名称; 覆盖到 `keyOperationApiKeyEnv` |
| `SECUROSYS_TSB_BEARER_TOKEN` | `bearerToken` | 无记名符号的默认名称; 覆盖到 `bearerTokenEnv` |
| `SECUROSYS_TSB_MTLS_P12_PATH` | `mtlsP12Path` | 仅发现遗产; 当 `signingProviders` 已配置 |
| `SECUROSYS_TSB_MTLS_P12_PASSWORD` | `mtlsP12Password` | PKCS# 12/ P12 密码的默认名称; 覆盖到 `mtlsP12PasswordEnv` |
| `SECUROSYS_TSB_KEY_PASSWORD` | `keyPassword` | TSB 密钥密码的默认名称; 覆盖到 `keyPasswordEnv` |
| `SECUROSYS_TSB_SIGNATURE_ALGORITHM` | `signatureAlgorithm` | 仅发现遗产; 当 `signingProviders` 已配置 |

此驱动程序创建的每个密钥都会先被发送到 TSB 并附带一个临时 `wallet-{uuid}` 标签。 TSB 返回公钥后,驱动程序重命名为 键入 `PATCH /v1/key/changeAttributes` 改为决定性标签 从公用钥匙。 标签使用 Base64url 形式,所以安全 TSB 密钥名处理并避免重复使用的用户或网络相撞 同样的聚会暗示.

### 关键标识符

`signTransaction` 接受标准签名 `keyIdentifier`数字 :

-   何时 `keyIdentifier.id` 提供,它作为TSB键使用不变 标签.
-   仅当 `keyIdentifier.publicKey` 提供,驱动程序获得标签 与 `keyLabelFromPublicKey` 在标签上查看钥匙 这是 组成钱包网关发送,并与创建的密钥的标签匹配 这个司机.

在这两种情况下,均提供 `publicKey` 保存, 如果 TSB 密钥签名失败 为标签找到的公钥不同 。 因此,一个直接的司机 只使用公用密钥的呼叫查看所生成的标签, 不扫描所有 TSB 键。 此驱动程序没有创建的密钥, 所以不要携带 衍生的标签,必须用明示的 `id`。 。 。 .

每个密钥都是用相同的空 SKA 策略创建的 :

```json
{
    "ruleUse": null,
    "ruleBlock": null,
    "ruleUnblock": null,
    "ruleModify": null,
    "keyStatus": {
        "blocked": false
    }
}
```

对于 EdDSA 签名, 驱动程序验证并返回钱包 网关兼容格式: Base64-encoded 生于64字节 Ed25519 签名字节. TSB请求的有效载荷类型被硬编码为: `UNSPECIFIED`,签名类型 硬代码为 `RAW`,而 TSB Ed25519 DER/SPKI 公钥总是被转换 到钱包签名 API 所需的 32 字节原始密钥 。 简单 ASN.1 OCTET 装入/装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装入装 `R,S` 序列仍被转换为 a 返回签名前的相容性守护 .

## 本地钱包部署

从钱包寄存器根中运行钱包单列波命令 :

```bash
cd /path/to/wallet
```

见 [`docs/CONTRIBUTING.md`](https://npmcn.com/package/docs/CONTRIBUTING.md) 用于建立发展环境.

下载钱包浏览器测试所需的 Playwright 浏览器 :

```bash
pnpm playwright:install
```

下载本地 devnet 设置所用的 Canton 二进制 :

```bash
pnpm script:fetch:canton
```

在 devnet 配置上启动本地 Canton :

```bash
pnpm start:canton --network=devnet
```

等Canton的靴子完成再说 命令可以中断 与 `Ctrl+C`; Canton进程在PM2下持续运行.

配置 `signingProviders.securosys` 内 `wallet-gateway/test/config.json`,用于 示例:

```json
{
    "signingProviders": {
        "securosys": {
            "baseUrl": "https://integration-test.cloudshsm.com/",
            "mtlsP12Path": "./etc/client_mtls_tsb.p12"
        }
    }
}
```

然后用剩下的 mTLS 密钥启动完整的钱包堆栈 :

```bash
SECUROSYS_TSB_MTLS_P12_PASSWORD=pass \
pnpm start:all
```

对于无记名证书, 设置 `signingProviders.securosys.baseUrl` 页:1 适当的终点,然后从符号开始:

```bash
SECUROSYS_TSB_BEARER_TOKEN="<JWT Token>" \
pnpm start:all
```

打开钱包网关 :

```bash
open http://localhost:3030
```

检查网关的健康和准备情况:

```bash
curl -i http://localhost:3030/healthz
curl -i http://localhost:3030/readyz
```

## 流程管理

列出所有 PM2 管理的钱包进程 :

```bash
pnpm pm2 list
```

查看远程钱包网关日志 :

```bash
pnpm pm2 logs remote
```

请检查date=中的日期值 (帮助)

```bash
pnpm pm2 logs canton
```

只重新启动远程钱包网关后端 :

```bash
pnpm pm2 restart remote
```

停止所有 PM2- 管理的钱包进程 :

```bash
pnpm stop:all
```

完全杀死 PM2 守护进程和所有管理的进程 :

```bash
pnpm pm2 kill
```

## 构建和测试

只构建此签名驱动程序 :

```bash
pnpm workspace @canton-network/core-signing-securosys build
```

只运行此签名驱动测试 :

```bash
pnpm nx test @canton-network/core-signing-securosys
```

运行此签名驱动测试 覆盖:

```bash
pnpm nx test @canton-network/core-signing-securosys -c coverage
```

构建远程钱包网关 :

```bash
pnpm workspace @canton-network/wallet-gateway-remote build
```

运行远程钱包网关交易签名测试 :

```bash
pnpm nx test @canton-network/wallet-gateway-remote -- src/ledger/transaction-service.test.ts
```

运行钱包分配测试 :

```bash
pnpm nx test @canton-network/wallet-gateway-remote -- src/ledger/wallet-allocation/wallet-allocation-service.test.ts
```

运行共享签名- 图书馆测试 :

```bash
pnpm nx test @canton-network/core-signing-lib
```

连续构建完整钱包 :

```bash
pnpm build:all:serial
```

运行完整的钱包单列波测试套件 :

```bash
pnpm test:all
```

## 参考资料

-   上游签名接口 : [https://github.com/canton-network/wallet/tree/main/core/signing-lib 页面存档备份,存于互联网档案馆](https://github.com/canton-network/wallet/tree/main/core/signing-lib)
-   用于执行的 Blockdaemon 签名驱动程序 : [https://github.com/canton-network/wallet/tree/main/core/signing-blockdaemon 页面存档备份,存于互联网档案馆 (简体中文)](https://github.com/canton-network/wallet/tree/main/core/signing-blockdaemon)

## 常见问题

### @canton-network/core-signing-securosys 是什么？

Secrosys TSB 钱包网关签名驱动程序

### 如何安装 @canton-network/core-signing-securosys？

在项目目录运行 npm install @canton-network/core-signing-securosys，或使用 pnpm add / yarn add / bun add。

### @canton-network/core-signing-securosys 支持 TypeScript 吗？

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

### @canton-network/core-signing-securosys 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @canton-network/core-signing-securosys 可以商用吗？

@canton-network/core-signing-securosys 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @canton-network/core-signing-securosys 的下载量有多少？

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

### @canton-network/core-signing-securosys 还在维护吗？

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

