@agentunion/fastaun 0.5.26 → 0.5.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -0
- package/_packed_docs/CHANGELOG.md +77 -0
- package/_packed_docs/INDEX.md +37 -14
- package/_packed_docs/KITE_DOCS_GUIDE.md +23 -15
- package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +16 -1
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +37 -9
- package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +20 -9
- package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +57 -12
- package/_packed_docs/sdk/0.5.22-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +2 -2
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +2 -2
- package/_packed_docs/sdk/09-/345/207/255/350/257/201/346/234/215/345/212/241RPC/346/211/213/345/206/214.md +187 -73
- package/_packed_docs/sdk/09-/347/273/204/347/273/207/346/234/215/345/212/241RPC/346/211/213/345/206/214.md +1 -1
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +13 -9
- package/_packed_docs/sdk/INDEX.md +23 -13
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +973 -266
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +950 -242
- package/dist/agent-md-changes.d.ts +42 -0
- package/dist/agent-md-changes.js +339 -0
- package/dist/agent-md-changes.js.map +1 -0
- package/dist/agent-md-schema.d.ts +1 -0
- package/dist/agent-md-schema.js +31 -14
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +11 -0
- package/dist/agent-md.js +91 -15
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +11 -0
- package/dist/aid-store.js +102 -21
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.js +3 -3
- package/dist/aid.js.map +1 -1
- package/dist/auth.d.ts +10 -0
- package/dist/auth.js +65 -23
- package/dist/auth.js.map +1 -1
- package/dist/cert-utils.d.ts +1 -1
- package/dist/cert-utils.js +4 -4
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/control-messages.d.ts +31 -0
- package/dist/client/control-messages.js +474 -0
- package/dist/client/control-messages.js.map +1 -0
- package/dist/client/delivery.js +10 -2
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/lifecycle.d.ts +1 -1
- package/dist/client/lifecycle.js +10 -0
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/rpc-pipeline.js +84 -14
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +3 -0
- package/dist/client/v2-e2ee.js +12 -0
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +38 -0
- package/dist/client.js +572 -36
- package/dist/client.js.map +1 -1
- package/dist/discovery.d.ts +3 -0
- package/dist/discovery.js +52 -2
- package/dist/discovery.js.map +1 -1
- package/dist/events.js +14 -1
- package/dist/events.js.map +1 -1
- package/dist/facades.d.ts +38 -0
- package/dist/facades.js +49 -5
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/org-protocol.d.ts +1 -0
- package/dist/org-protocol.js +39 -36
- package/dist/org-protocol.js.map +1 -1
- package/dist/ownership-v21.js +7 -7
- package/dist/ownership-v21.js.map +1 -1
- package/dist/register-flow.js +2 -2
- package/dist/register-flow.js.map +1 -1
- package/dist/risk-control.d.ts +68 -0
- package/dist/risk-control.js +344 -0
- package/dist/risk-control.js.map +1 -0
- package/dist/semantic-facade.d.ts +176 -0
- package/dist/semantic-facade.js +611 -0
- package/dist/semantic-facade.js.map +1 -0
- package/dist/semantic-protocol.d.ts +810 -0
- package/dist/semantic-protocol.js +894 -0
- package/dist/semantic-protocol.js.map +1 -0
- package/dist/storage/lowlevel.d.ts +1 -0
- package/dist/storage/lowlevel.js +2 -2
- package/dist/storage/lowlevel.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +11 -1
- package/dist/tools/cross-sdk-agent.js +388 -7
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +22 -1
- package/dist/transport.js +227 -22
- package/dist/transport.js.map +1 -1
- package/dist/v2/e2ee/decrypt.d.ts +5 -0
- package/dist/v2/e2ee/decrypt.js +22 -2
- package/dist/v2/e2ee/decrypt.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 1. 定位
|
|
4
4
|
|
|
5
|
-
AUN CLI 是 Python SDK 随包提供的命令行入口,用于在不编写业务代码的情况下完成身份管理、消息收发、群组操作、Storage / Group FS 文件操作、Collab
|
|
5
|
+
AUN CLI 是 Python SDK 随包提供的命令行入口,用于在不编写业务代码的情况下完成身份管理、消息收发、群组操作、Storage / Group FS 文件操作、Collab 协作层操作、凭证/语义凭证、agent.md 管理、诊断和压测。
|
|
6
6
|
|
|
7
7
|
当前实现位于:
|
|
8
8
|
|
|
@@ -32,6 +32,7 @@ aun CLI
|
|
|
32
32
|
├─ fs.py # storage VFS POSIX 风格 fs 命令
|
|
33
33
|
├─ storage.py # object storage 兼容命令
|
|
34
34
|
├─ collab.py # collab 与 collab tag
|
|
35
|
+
├─ credential.py # 凭证/语义凭证签验、管理、包/请求及证据
|
|
35
36
|
├─ agentmd.py # agent.md 上传、下载、检查
|
|
36
37
|
├─ keys.py # 本地密钥与 seed 迁移
|
|
37
38
|
├─ diag.py # status/ping/doctor/logs
|
|
@@ -97,13 +98,13 @@ output = "table"
|
|
|
97
98
|
color = true
|
|
98
99
|
timeout = 30
|
|
99
100
|
|
|
100
|
-
[profiles.default]
|
|
101
|
-
aid = "alice.agentid.pub"
|
|
102
|
-
aun_path = "~/.aun/profiles/default"
|
|
103
|
-
active_group = "10042.agentid.pub"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
`active_group` 保存当前群的目标态 `group_aid`。旧格式 `group.{issuer}/{base}` 可作为兼容输入解析,但新配置应写 `{base}.{issuer}`。
|
|
101
|
+
[profiles.default]
|
|
102
|
+
aid = "alice.agentid.pub"
|
|
103
|
+
aun_path = "~/.aun/profiles/default"
|
|
104
|
+
active_group = "10042.agentid.pub"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`active_group` 保存当前群的目标态 `group_aid`。旧格式 `group.{issuer}/{base}` 可作为兼容输入解析,但新配置应写 `{base}.{issuer}`。
|
|
107
108
|
|
|
108
109
|
有效 profile 解析顺序:
|
|
109
110
|
|
|
@@ -141,6 +142,8 @@ active_group = "10042.agentid.pub"
|
|
|
141
142
|
| `storage` | `commands.storage` | 对象存储兼容命令 |
|
|
142
143
|
| `fs` | `commands.fs` | Storage VFS / POSIX 风格命令 |
|
|
143
144
|
| `collab` | `commands.collab` | 版本化协作层 |
|
|
145
|
+
| `credential` | `commands.credential` | 平铺23个命令,调用统一SDK credential facade |
|
|
146
|
+
| `org` | `commands.org` | 组织生命周期、成员及受保护凭证查询,复用SDK编排 |
|
|
144
147
|
| `agentmd` | `commands.agentmd` | agent.md 管理 |
|
|
145
148
|
| `keys` | `commands.keys` | 本地密钥与 seed 管理 |
|
|
146
149
|
| `bench` | `commands.bench` | 消息发送压测 |
|
|
@@ -242,6 +245,14 @@ active_group = "10042.agentid.pub"
|
|
|
242
245
|
|
|
243
246
|
当前没有 `keys export/import`、`group listen`、`config init`、`profile delete` 这些命令;需要新增时应先更新实现和本文档。
|
|
244
247
|
|
|
248
|
+
### 7.9 凭证与语义凭证
|
|
249
|
+
|
|
250
|
+
`commands/credential.py`将普通CAP创建/完整Verify/本地current/撤销列表、六语义管理入口、usage协调、签验、构包/请求、决策输入及消息证据映射至`client.credential`。23个命令和参数见[CLI手册](CLI手册.md#凭证与语义凭证),流程图与TS示例见[CLI专题](凭证与组织服务CLI开发与使用指南.md),wire契约见[RPC手册](../sdk/09-凭证服务RPC手册.md)。
|
|
251
|
+
|
|
252
|
+
`--params`/`--context`严格解析JSON或UTF-8文件;签名从真实profile加载本地私钥,管理调用使用认证会话。`verify --kind structured`经认证会话逐层解析可信历史证书与强状态proof,以实际请求context调用普通完整Verify;JSON仅提供请求字段、proof_chain及credential_services,成员/Ownership/计数端口由应用集成。语义完整证书/可信根支持受策略约束的离线验真;online查询由当前CLI进程生成单调时间和独立查询绑定。输出保留结构化错误,`--output`拒绝覆盖,SignedJsonBytes按解码后的原字节保存;管理请求与业务请求分别固定幂等材料。
|
|
253
|
+
|
|
254
|
+
组级`credential --target`仅向语义管理方法传递权威服务AID。`commands/org.py`复用SDK的请求准备与实体编排,提供health/status、受保护凭证撤销列表,以及`--application`/`--invitation`原材料衔接;转让使用SDK持久换钥与finalize流程。
|
|
255
|
+
|
|
245
256
|
## 8. 错误处理与退出码
|
|
246
257
|
|
|
247
258
|
错误映射在 `adapter.handle_error()` 中:
|
|
@@ -257,7 +268,7 @@ active_group = "10042.agentid.pub"
|
|
|
257
268
|
| 6 | 权限不足 |
|
|
258
269
|
| 7 | 目标不存在 |
|
|
259
270
|
|
|
260
|
-
JSON 模式下错误仍通过统一错误输出函数输出,便于脚本判断。
|
|
271
|
+
JSON 模式下错误仍通过统一错误输出函数输出,便于脚本判断。credential命令另按`SEMANTIC_*`稳定码映射参数/绑定为2、签名/身份为3、权限为6、不存在为7、其他语义错误为1,并保留原RPC code、data和retryable,不解析message。
|
|
261
272
|
|
|
262
273
|
## 9. 当前实现边界
|
|
263
274
|
|
|
@@ -77,7 +77,7 @@ aun config list
|
|
|
77
77
|
|------|------|
|
|
78
78
|
| `aid` | 默认操作身份 |
|
|
79
79
|
| `aun_path` | 本地身份、密钥、日志等数据目录 |
|
|
80
|
-
| `active_group` | 默认群组;值使用目标态 `group_aid`,省略 `group_id` 兼容参数时使用 |
|
|
80
|
+
| `active_group` | 默认群组;值使用目标态 `group_aid`,省略 `group_id` 兼容参数时使用 |
|
|
81
81
|
| `debug` / `trace` / `timeout` | 调试、trace 和超时配置 |
|
|
82
82
|
|
|
83
83
|
有效 profile 选择顺序:
|
|
@@ -113,7 +113,7 @@ aun identity check alice.agentid.pub
|
|
|
113
113
|
| `aun send <target-aid> -` | 从 stdin 读取消息 |
|
|
114
114
|
| `aun pull [--from aid] [--limit N] [--after-seq N]` | 拉取离线消息 |
|
|
115
115
|
| `aun ack <sender-aid> --seq N` | 确认消息 seq |
|
|
116
|
-
| `aun listen [--from aid] [--group group_id]` | 实时监听 P2P 和群消息;`group_id` 是兼容参数名,值使用 `group_aid` |
|
|
116
|
+
| `aun listen [--from aid] [--group group_id]` | 实时监听 P2P 和群消息;`group_id` 是兼容参数名,值使用 `group_aid` |
|
|
117
117
|
|
|
118
118
|
示例:
|
|
119
119
|
|
|
@@ -282,12 +282,12 @@ aun agentmd check bob.agentid.pub --max-unsynced-days 1
|
|
|
282
282
|
密钥:
|
|
283
283
|
|
|
284
284
|
```powershell
|
|
285
|
-
aun keys list
|
|
286
|
-
aun keys rotate --type spk
|
|
287
|
-
aun keys change-seed --old-seed "current-seed" --new-seed "new-seed"
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
SDK 正常启动和密钥读取只使用显式传入的 seed,不会自动读取 `.seed` 或回退到 `.seed.migrated.*`。显式执行 `change-seed` 时,`--old-seed` 可以直接提供当前 seed_password;传入 `.seed` 则明确要求迁移 `{aun_path}/.seed`,仅在迁移成功后归档旧文件。
|
|
285
|
+
aun keys list
|
|
286
|
+
aun keys rotate --type spk
|
|
287
|
+
aun keys change-seed --old-seed "current-seed" --new-seed "new-seed"
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
SDK 正常启动和密钥读取只使用显式传入的 seed,不会自动读取 `.seed` 或回退到 `.seed.migrated.*`。显式执行 `change-seed` 时,`--old-seed` 可以直接提供当前 seed_password;传入 `.seed` 则明确要求迁移 `{aun_path}/.seed`,仅在迁移成功后归档旧文件。
|
|
291
291
|
|
|
292
292
|
诊断:
|
|
293
293
|
|
|
@@ -302,13 +302,58 @@ aun logs --follow
|
|
|
302
302
|
压测:
|
|
303
303
|
|
|
304
304
|
```powershell
|
|
305
|
-
aun bench send bob.agentid.pub --count 100 --concurrency 4
|
|
306
|
-
aun bench group-send 10042.agentid.pub --count 100 --concurrency 4
|
|
307
|
-
aun bench group send --count 100
|
|
308
|
-
```
|
|
305
|
+
aun bench send bob.agentid.pub --count 100 --concurrency 4
|
|
306
|
+
aun bench group-send 10042.agentid.pub --count 100 --concurrency 4
|
|
307
|
+
aun bench group send --count 100
|
|
308
|
+
```
|
|
309
309
|
|
|
310
310
|
`aun bench group_send` 是 `aun bench group-send` 的公开兼容别名。
|
|
311
311
|
|
|
312
|
+
## 凭证与语义凭证
|
|
313
|
+
|
|
314
|
+
当前工作区 `aun credential` 平铺以下 23 个命令。流程图与 TS 调用示例见[凭证与组织服务 CLI 专题](凭证与组织服务CLI开发与使用指南.md),字段见 [RPC 手册](../sdk/09-凭证服务RPC手册.md)、[SDK 集成指南 §3 结构化凭证](../sdk/凭证与组织服务SDK应用集成指南.md#3-结构化凭证接入)和 [§4 语义凭证](../sdk/凭证与组织服务SDK应用集成指南.md#4-语义凭证接入)。语义扩展是否已发布须核对使用的实际 SDK/服务版本。
|
|
315
|
+
|
|
316
|
+
| 命令 | 对应能力 |
|
|
317
|
+
| --- | --- |
|
|
318
|
+
| create、current | 普通 CAP 创建;读取当前 profile 本地管理记录及续期 successor |
|
|
319
|
+
| sign、metadata-sign、allocation-sign | 签署语义原件、确认元数据、额度分配 |
|
|
320
|
+
| usage-record-sign | 按指定域签署配套记录 |
|
|
321
|
+
| register、revise、get、status、revoke、revocations | 六个语义管理方法;register/status/revoke 也按 SDK 字段分流兼容普通凭证 |
|
|
322
|
+
| revocation-list | 普通撤销列表;语义输入按 SDK 字段分流 |
|
|
323
|
+
| usage-prepare、usage-commit、usage-abort | revise 的 usage 三分支,返回 transition |
|
|
324
|
+
| verify | structured 完整 Verify;其他 kind 的语义单项/凭证包验真 |
|
|
325
|
+
| package、request、request-verify、decision-input | 构包、构建固定业务请求、请求验真及决策输入 |
|
|
326
|
+
| evidence-export、evidence-verify | 创建 EvidenceRef、验证消息正文依据;后者对应 verify_message_body |
|
|
327
|
+
|
|
328
|
+
`--params` 接收严格 JSON 对象或 `@UTF-8文件`,可放在 credential 组或具体命令后。通用命令支持 `--context JSON/@文件`;上下文必须符合所调用方法的参数形状,不是任意附加参数。签名命令从当前 profile 加载真实身份及私钥;管理方法经已认证会话调用。
|
|
329
|
+
|
|
330
|
+
以下示例假定 cn profile 和输入材料已准备好,不创建身份或启动环境:
|
|
331
|
+
|
|
332
|
+
```powershell
|
|
333
|
+
aun --profile cn --json credential --help
|
|
334
|
+
aun --profile cn --json credential register --params @register.json
|
|
335
|
+
aun --profile cn --json credential verify --kind package --params @package.json --context @verify-context.json
|
|
336
|
+
aun --profile cn --json credential usage-record-sign --kind usage-checkpoint --params @checkpoint.json
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
verify 的 `--kind` 为 structured/original/metadata/receipt/status/package/allocation/allocation-status/usage-record;structured 经认证会话逐层取得可信历史证书和强状态 proof,再调用 SDK 完整 Verify。`--context` 提供实际请求的 audience/subject/root_issuer/ns/action/resource/method/target/params/request_id/nonce/request_binding,可附 proof_chain 和 credential_services;时间、resolve_* 与 check_rate_limit 由可信运行环境提供,成员/Ownership/计数端口由应用集成。只有 usage-record 另需 `--domain`。usage-record-sign 使用 `--kind` 指定签名域,允许 usage-allocation、allocation-status、semantic-crl、usage-transition、usage-checkpoint、usage-acceptance、ledger-abort。
|
|
340
|
+
|
|
341
|
+
`--output/-o` 只写新文件,拒绝覆盖。返回 SignedJsonBytes 时输出文件保存解码后的原 JSON 字节,终端 JSON 仍返回 bytes_base64 包装;其他结果保存 canonical JSON。再次提交签名原件须按 RPC 契约包装。语义管理默认使用 profile 身份域,可在具体命令前传 `credential --target credential.aid.com` 选择权威;普通 RPC 继续按其原绑定契约调用。
|
|
342
|
+
|
|
343
|
+
request 的输入不含 params_hash/request_binding。request-verify/decision-input 选择 online 时,CLI 以当前进程单调时钟生成查询上下文,并按可信 authority、audience、credential_services 刷新状态;不能从文件传入 query_started_monotonic/deadline_monotonic。有 certificates 与 trusted_roots 的完整离线验真上下文可避免网络查询,仍须满足 bounded 等所选策略,不代表业务授权已通过。
|
|
344
|
+
|
|
345
|
+
管理输入省略 request_binding,由 facade 自动补齐;普通 `aun-cap/1` 兼容路径仍按旧契约提供绑定。固定保存 request_id、nonce、原件和协调材料,重试沿原幂等操作,状态冲突先读取当前 head/transition。使用相同配置与持久状态从首败续跑,真实四 SDK/CLI 编排见[示例指南](../../examples/semantic-credential/示例使用指南.md)。
|
|
346
|
+
|
|
347
|
+
语义错误的结构化 JSON 保留 RPC code、data.error_code 和 retryable。FORMAT_INVALID/BINDING_INVALID 退出 2,SIGNATURE_INVALID/IDENTITY_INVALID 退出 3,PERMISSION_DENIED 退出 6,NOT_FOUND 退出 7,其他语义业务错误退出 1;STATE_UNAVAILABLE 的可重试标识仍在 data 中。
|
|
348
|
+
|
|
349
|
+
## 组织服务
|
|
350
|
+
|
|
351
|
+
`aun org` 覆盖 health/status、生命周期、申请/审批、邀请、成员状态及离职收尾、成员凭证状态/续期/撤销列表和审计。完整命令地图、流程图与 TS 示例见[CLI 专题 §8—§10](凭证与组织服务CLI开发与使用指南.md#8-组织命令地图与创建)。
|
|
352
|
+
|
|
353
|
+
`org --params JSON/@文件` 放在具体子命令前,传当前 credentials 或完整已准备请求。`join-approve --application` 接收原申请的 application 对象;`invite-accept`/`invite-reject --invitation` 接收本目标的单个原邀请条目。受保护读取包含 `members`、`member`、`credential info` 和 `credential revocation-list`,复用 SDK 请求准备与当前 binding/CAP。
|
|
354
|
+
|
|
355
|
+
`org credential revocation-list <org>` 支持 `--since-event-seq`/`--cursor`/`--limit`。创建、转让换钥与解散由 SDK 高层编排完成;`transfer-accept --proposal` 进入 rekey→finalize,保留持久 AIDStore 和原阶段材料用于恢复。
|
|
356
|
+
|
|
312
357
|
## 退出码
|
|
313
358
|
|
|
314
359
|
| 退出码 | 含义 |
|
|
@@ -91,7 +91,7 @@ NS 的 `ownership_pending` 与名片 CAS 一起持久化;pending 名片是当
|
|
|
91
91
|
- 按 authority/CID 保留最大 `event_seq`,推送与分页并发合并,不覆盖新记录。
|
|
92
92
|
- 异步验证/持久化前后核对身份和连接代次,丢弃旧结果;用于完整凭证和父证明链验证。
|
|
93
93
|
|
|
94
|
-
四端使用 tokenstore/keystore 的 `credential_revocations_v1` metadata(浏览器 IndexedDB),按 authority 保存 CID 序号、分页 checkpoint 和证明时间窗。它不是 JSONL 流水,缺少 CID 不证明有效;结构见 [撤销快照](凭证与组织服务SDK开发与移植指南.md#
|
|
94
|
+
四端使用 tokenstore/keystore 的 `credential_revocations_v1` metadata(浏览器 IndexedDB),按 authority 保存 CID 序号、分页 checkpoint 和证明时间窗。它不是 JSONL 流水,缺少 CID 不证明有效;结构见 [撤销快照](凭证与组织服务SDK开发与移植指南.md#64-撤销同步与持久快照0522)。
|
|
95
95
|
|
|
96
96
|
### 5.2 保持分页连续
|
|
97
97
|
|
|
@@ -114,7 +114,7 @@ NS 的 `ownership_pending` 与名片 CAS 一起持久化;pending 名片是当
|
|
|
114
114
|
- 转让换钥前复核证书/公钥代际,新公钥用规范 DER Base64;已有 checkpoint 恢复原请求。
|
|
115
115
|
- 原子保存新旧 owner 成员包与定向 `org.member.changed` 通知;失败通知保留待办并按组织轮转。SDK 仍验完整包,续期保存不依赖通知。
|
|
116
116
|
|
|
117
|
-
详见 [Credential RPC](09-凭证服务RPC手册.md#credentialrevoke)、[Org RPC](09-组织服务RPC手册.md#组织生命周期)及 [服务实现要求](凭证与组织服务SDK开发与移植指南.md#
|
|
117
|
+
详见 [Credential RPC](09-凭证服务RPC手册.md#credentialrevoke)、[Org RPC](09-组织服务RPC手册.md#组织生命周期)及 [服务实现要求](凭证与组织服务SDK开发与移植指南.md#8-服务端兼容实现要点)。
|
|
118
118
|
|
|
119
119
|
## 6. 默认读缓存、语言专项修复与版本
|
|
120
120
|
|
|
@@ -476,7 +476,7 @@ headers = client.get_protected_headers()
|
|
|
476
476
|
| 领域 | 当前入口 | 详细指南 |
|
|
477
477
|
|------|----------|----------|
|
|
478
478
|
| Ownership 2.1 | 七个关系业务Facade:`bindOwneraid`、`bindSubaid`、`releaseSubaid`、`transferSubaid`、`acceptOwnershipRequest`、`rejectOwnershipRequest`、`checkOwnershipConsensus`;无参数任务管理Facade `resetOwnershipTask()`(Python `reset_ownership_task()`、Go `ResetOwnershipTask(ctx)`),批量清理当前AID发起的未完成任务,返回`{reset_operation_ids:[],skipped_operation_ids:[]}`(其余为TS/JS命名) | [应用集成](Ownership2.1-SDK应用集成指南.md#4-七个-facade-的参数角色与结果)、[开发与移植](Ownership2.1-SDK开发与移植指南.md) |
|
|
479
|
-
| Credential/Org | Python/TS/JS:`client.credential`、`client.org`;Go:`client.Credential()`、`client.Org()
|
|
479
|
+
| Credential/Org | Python/TS/JS:`client.credential`、`client.org`;Go:`client.Credential()`、`client.Org()`;普通与语义凭证共用 credential 入口,无 semantic 子层;包含签验、包/请求、消息证据及额度协调工具 | [应用集成](凭证与组织服务SDK应用集成指南.md)、[开发与移植](凭证与组织服务SDK开发与移植指南.md) |
|
|
480
480
|
|
|
481
481
|
Ownership 2.1 关系须检查当前双文件共识;Group/Org 使用专属生命周期,通用关系操作返回 `not_applicable`。Credential/Org 的本地验签不代替当前状态和请求授权检查。
|
|
482
482
|
|
|
@@ -1062,7 +1062,7 @@ JavaScript 浏览器 SDK 的 Worker 是网络隔离增强:`new Worker()` 同
|
|
|
1062
1062
|
|------|------|----------|
|
|
1063
1063
|
| 消息 | [09-message-rpc-manual.md](09-message-rpc-manual.md) | `message.send` / `message.pull` / `message.history` / `message.ack` / `message.read` / `message.read_state` / `message.thought.*` |
|
|
1064
1064
|
| 群组 | [09-group-rpc-manual.md](09-group-rpc-manual.md) | `group.create` / `group.send` / `group.pull` / `group.history` / `group.read` / `group.read_state` / `group.v2.*` / `group.fs.*` |
|
|
1065
|
-
| 凭证 | [凭证服务 RPC 手册](09-凭证服务RPC手册.md) | `credential.register
|
|
1065
|
+
| 凭证 | [凭证服务 RPC 手册](09-凭证服务RPC手册.md) | 普通 `credential.register/revoke/status/revocationList`;语义 `credential.semantic.register/revise/get/status/revoke/revocationList`,本地工具与业务接入见专题 §10 |
|
|
1066
1066
|
| 组织 | [组织服务 RPC 手册](09-组织服务RPC手册.md) | `org.lifecycle.*` / `org.member.*` / `org.credential.*` / `org.audit.query` / `org.authz.check`;内部及未实现方法见手册 |
|
|
1067
1067
|
| 存储 | [09-storage-rpc-manual.md](09-storage-rpc-manual.md) | `storage.put_object` / `storage.fs.*` / `storage.volume.*` / ACL / token / share link |
|
|
1068
1068
|
| 协作 | [09-collab-rpc-manual.md](09-collab-rpc-manual.md) | `collab.ls-files` / `collab.show` / `collab.commit` / `collab.merge` / `collab.log` / `collab.diff` / `collab.clone` / `collab.prune` / `collab.gc` / `collab.reflog` / `collab.revert` / `collab.tag.*` / `collab.ls-remote` / `collab.unregister` |
|
|
@@ -1,73 +1,187 @@
|
|
|
1
|
-
# 凭证服务 RPC 手册
|
|
2
|
-
|
|
3
|
-
本文按 Credential Service 当前服务端 dispatcher 列出 RPC。`credential.health` 和不带凭证 CID 的 `credential.status`
|
|
4
|
-
|
|
5
|
-
## 方法索引
|
|
6
|
-
|
|
7
|
-
| 方法 | 用途 |
|
|
8
|
-
|------|------|
|
|
9
|
-
| [credential.health](#credentialhealth) | 服务健康诊断 |
|
|
10
|
-
| [credential.status](#credentialstatus) | 查询服务状态或凭证状态证明 |
|
|
11
|
-
| [credential.register](#credentialregister) | 登记完整已签名凭证并取得回执 |
|
|
12
|
-
| [credential.revoke](#credentialrevoke) | 吊销凭证 |
|
|
13
|
-
| [credential.revocationList](#credentialrevocationlist) | 查询签名吊销事件增量 |
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
##
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
1
|
+
# 凭证服务 RPC 手册
|
|
2
|
+
|
|
3
|
+
本文按 Credential Service 当前服务端 dispatcher 列出 RPC。`credential.health` 和不带凭证 CID 的 `credential.status` 用于控制面诊断;普通 `credential.register/revoke`、带 CID 的 `credential.status`、`credential.revocationList` 及六个 `credential.semantic.*` 均是业务 RPC,经已认证 Gateway service-plane 调用。本文对齐当前工作区实现,不据此声明发布包已具备扩展。
|
|
4
|
+
|
|
5
|
+
## 方法索引
|
|
6
|
+
|
|
7
|
+
| 方法 | 用途 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| [credential.health](#credentialhealth) | 服务健康诊断 |
|
|
10
|
+
| [credential.status](#credentialstatus) | 查询服务状态或凭证状态证明 |
|
|
11
|
+
| [credential.register](#credentialregister) | 登记完整已签名凭证并取得回执 |
|
|
12
|
+
| [credential.revoke](#credentialrevoke) | 吊销凭证 |
|
|
13
|
+
| [credential.revocationList](#credentialrevocationlist) | 查询签名吊销事件增量 |
|
|
14
|
+
| [credential.semantic.register](#credentialsemanticregister) | 登记语义原件、确认元数据及来源链 |
|
|
15
|
+
| [credential.semantic.revise](#credentialsemanticrevise) | 修订受众元数据,或准备/提交/终止额度切换 |
|
|
16
|
+
| [credential.semantic.get](#credentialsemanticget) | 读取当前/历史修订或协调恢复材料 |
|
|
17
|
+
| [credential.semantic.status](#credentialsemanticstatus) | 查询绑定修订的当前状态证明 |
|
|
18
|
+
| [credential.semantic.revoke](#credentialsemanticrevoke) | 撤销整个语义 CID |
|
|
19
|
+
| [credential.semantic.revocationList](#credentialsemanticrevocationlist) | 按受众 scope 读取签名撤销快照及增量 |
|
|
20
|
+
|
|
21
|
+
## 通用约定
|
|
22
|
+
|
|
23
|
+
下列普通凭证接口使用 `aun-cap/1` 签名对象,语义 `aun-cap/semantic-1` 使用后文独立方法和存储。服务端只接受完整已签名凭证,不提供 `credential.prepare` RPC。`credential.create`、`verifySignature`、`verify` 和 `verifyRegistrationReceipt` 是 SDK 本地 helper,不是服务端 RPC。
|
|
24
|
+
|
|
25
|
+
业务请求使用 `request_id`、一次性 `nonce` 和 `request_binding`。绑定需匹配完整方法名、Credential Service target、业务参数摘要和有效时间窗;单凭证请求还绑定非空 `credential_cid`。只有 `credential.revocationList` 没有单一凭证目标,其绑定中的 `credential_cid` 固定为空字符串。请求不得把 `_auth.aid` 当作可由调用方自行声明的授权身份。
|
|
26
|
+
|
|
27
|
+
## credential.health
|
|
28
|
+
|
|
29
|
+
无业务参数。返回 `status`(`healthy` 或 `degraded`)、`implementation` 和 `details`,包含服务 AID、数据库、Kernel/Gateway 连接、签名身份就绪状态及运行时间。该方法用于诊断,不表示某个凭证有效。
|
|
30
|
+
|
|
31
|
+
## credential.status
|
|
32
|
+
|
|
33
|
+
不带 `credential_cid` 时返回服务状态摘要,包含 `module`、`status`、服务 AID、数据库连接、签名身份和运行时间;该形式是诊断入口。
|
|
34
|
+
|
|
35
|
+
带 `credential_cid` 时执行凭证业务查询,必须提供 `request_id`、`nonce`、`request_binding`。可选 `include_chain: true` 返回父链状态。响应为 Credential Service 签名的 `aun-credential-status/1` proof,包含凭证 CID/hash、综合状态、叶凭证状态、issuer、subject、到期时间、事件序号、`asOf`、`proofExpiresAt`、responder、request ID、nonce、target 和签名;关联组织时还包含 `orgId`。
|
|
36
|
+
|
|
37
|
+
`proofExpiresAt` 是状态证明的截止时间,`expiresAt` 是凭证自身到期时间。未知状态、过期 proof 或未知父链不能用于授权放行。
|
|
38
|
+
|
|
39
|
+
## credential.register
|
|
40
|
+
|
|
41
|
+
登记完整已签名凭证。转交登记时,`registration_authorization` 必须由凭证 issuer 签署;转交服务不会成为 registrar。
|
|
42
|
+
|
|
43
|
+
| 参数 | 必需 | 说明 |
|
|
44
|
+
|------|:---:|------|
|
|
45
|
+
| `request_id`、`nonce` | 是 | 幂等请求标识和一次性随机数 |
|
|
46
|
+
| `registrar_aid` | 是 | 必须等于 `credential.iss` |
|
|
47
|
+
| `credential` | 是 | 完整 `aun-cap/1` 对象,含签名 |
|
|
48
|
+
| `request_binding` | 是 | 绑定方法、服务 target、参数摘要、时间窗和 CID |
|
|
49
|
+
| `registration_authorization` | 条件 | 认证调用者不是 issuer 时必需 |
|
|
50
|
+
| `proof_chain` | 条件 | 有父凭证时提供;若凭证内也携带,二者必须一致 |
|
|
51
|
+
|
|
52
|
+
成功返回 `credentialCid`、`status=active`、`registeredAt` 和 Credential Service 签名的 `registrationReceipt`。登记回执证明登记结果,不单独授予能力;Org 入组仍须由 Org Service 独立验凭证和回执并完成成员关系最终化。
|
|
53
|
+
|
|
54
|
+
## credential.revoke
|
|
55
|
+
|
|
56
|
+
吊销凭证;默认级联吊销子凭证。除参数绑定外,服务会核实调用身份是 issuer 或登记时记录的授权吊销主体。
|
|
57
|
+
|
|
58
|
+
| 参数 | 必需 | 说明 |
|
|
59
|
+
|------|:---:|------|
|
|
60
|
+
| `request_id`、`nonce`、`request_binding` | 是 | 本次吊销请求及其目标、摘要和时间窗绑定 |
|
|
61
|
+
| `registrar_aid`、`credential_cid`、`reason_code` | 是 | 吊销主体、目标 CID 和原因码 |
|
|
62
|
+
| `reason` | 否 | 脱敏原因说明 |
|
|
63
|
+
| `cascade` | 否 | 是否级联,默认 `true` |
|
|
64
|
+
| `org_id`、`registration_request_id` | 条件 | 受限吊销授权要求时绑定组织和原登记操作 |
|
|
65
|
+
| `registration_authorization` | 条件 | 补偿尚未登记的 CID 时提供原 issuer 授权 |
|
|
66
|
+
|
|
67
|
+
成功返回 `credentialCid`、`status=revoked`、`revokedAt`、`eventSeq` 和 `cascadeCount`。同一 method、request ID 和参数摘要重试从持久去重记录返回原结果,进程重启后仍有效;同一 request ID 更换摘要返回 `CREDENTIAL_IDEMPOTENCY_KEY_REUSE`。持久结果必须匹配原 CID 和 revoked 状态;记录损坏或状态不明返回 `CREDENTIAL_STATUS_UNKNOWN`,不能当作补偿已完成。
|
|
68
|
+
|
|
69
|
+
## credential.revocationList
|
|
70
|
+
|
|
71
|
+
查询吊销事件增量。请求可提供 `issuer_aid`、`since_event_seq` 或 `cursor`、`limit`,并必须提供 `request_id`、`nonce`、`request_binding`。`limit` 默认 1000,最大 1000。
|
|
72
|
+
|
|
73
|
+
响应包含 `events[]`、`next_cursor`、`as_of`、`expires_at`、`responder`、`request_id`、`nonce`、`target`、`issuer_aid` 和签名。每个事件包含 `event_seq`、`cid`、`reason_code`、`revoked_at`、`revoked_by_aid`,可选 `reason` 和 `cascade_root_cid`。客户端应验证服务签名与证明时间窗,并按序号续查。
|
|
74
|
+
|
|
75
|
+
SDK 0.5.22 将已验签的 `credential.revoked`/`credential.revocationList` 推送和列表页持久合并,单条事件不推进分页位置,旧分页不能覆盖新撤销证据。后台兜底拉取在连接后一小时首次执行,此后每小时一次;这是 SDK 调度策略,不是 RPC 的限频或服务端分页契约。存储、身份隔离和 proof 要求见 [SDK 移植指南](凭证与组织服务SDK开发与移植指南.md#64-撤销同步与持久快照0522)。
|
|
76
|
+
|
|
77
|
+
## 错误
|
|
78
|
+
|
|
79
|
+
业务错误码位于 JSON-RPC `error.data.error_code`,包括 `CREDENTIAL_INVALID`、`CREDENTIAL_SIGNATURE_INVALID`、`CREDENTIAL_CHAIN_INVALID`、`CREDENTIAL_EXPIRED`、`CREDENTIAL_REVOKED`、`CREDENTIAL_REQUEST_BINDING_INVALID`、`CREDENTIAL_AUTHENTICATION_INVALID`、`CREDENTIAL_IDEMPOTENCY_KEY_REUSE`、`CREDENTIAL_NOT_FOUND` 和 `CREDENTIAL_STATUS_UNKNOWN`。状态未知或服务/数据库不可用不能按有效处理。未注册的方法返回 JSON-RPC `Method not found`。
|
|
80
|
+
|
|
81
|
+
## 语义凭证公共约定
|
|
82
|
+
|
|
83
|
+
本节六方法的字段以[正式规范](../../../extensions/services/docs/org/0.8/语义凭证扩展规范.md)和[详细设计 §3](../../../extensions/services/docs/org/0.8/working/语义凭证扩展详细设计.md#3-凭证服务接口)为准。JSON-RPC 使用 `{jsonrpc,id,method,params}`,成功数据直接位于 result,不额外嵌套 data。未知字段、分支外字段和未显式允许的 null 拒绝;标识为非空字符串,时间/序号/epoch 为安全整数,集合按规范排序去重。
|
|
84
|
+
|
|
85
|
+
| 六方法公共参数 | 约定 |
|
|
86
|
+
| --- | --- |
|
|
87
|
+
| request_id、nonce | 固定管理操作标识和至少 128 位的安全随机 nonce;重试保留原操作材料 |
|
|
88
|
+
| credential_cid | 单凭证操作非空;只有 semantic.revocationList 固定为空字符串 |
|
|
89
|
+
| request_binding | 八字段:request_id、nonce、target、method、params_hash、iat、exp、credential_cid |
|
|
90
|
+
| authority | `{policy,evidence}`;policy 为固定版本/hash 的 PolicyRef,evidence 为权限依据数组,服务按可信策略和真实认证 actor 核对 |
|
|
91
|
+
|
|
92
|
+
绑定的 target 为真实 `credential.{issuer}`,method 为完整 `credential.semantic.*`,ID/nonce/CID 与顶层一致。params_hash 使用扩展 canonical,排除根 request_binding 及服务注入认证字段,覆盖其余完整参数和所有嵌套签名。调用方不得提交 `_auth` 等服务认证上下文。声明期限满足 `0 < exp-iat <= 300`;首次验收窗口为 `iat-300 <= now <= exp+300`,含边界。nonce、幂等及既成结果的恢复仍按服务持久记录核对,不能靠回拨 iat 延长新操作期限。
|
|
93
|
+
|
|
94
|
+
`SignedJsonBytes` 仅含 `bytes_base64`:带 padding 的标准 Base64,解码为严格 UTF-8 JSON 原字节。服务保留字节,在副本上计算完整 canonical 摘要;EvidenceRef 的 `data_base64` 不可替代此包装。metadata 签名省略 `confirmation.signature.signature`,其他扩展对象省略自身 `signature.signature`,均保留其余封套和嵌套签名。
|
|
95
|
+
|
|
96
|
+
SDK facade 统一为 `client.credential`/Go `client.Credential()`,输入省略 request_binding,由 facade 按实际目标和当前 Unix 秒生成;low-level 必须提供完整绑定。Python 使用 `target=`;TS/JS 使用第二参数 `{serviceAid}`;Go 用 `NewCredentialFacade(client, serviceAID)` 指定跨域权威。旧同名方法按字段严格分流,见[移植指南 §4](凭证与组织服务SDK开发与移植指南.md#4-语义凭证移植契约)。
|
|
97
|
+
|
|
98
|
+
## credential.semantic.register
|
|
99
|
+
|
|
100
|
+
| 业务参数 | 说明 |
|
|
101
|
+
| --- | --- |
|
|
102
|
+
| original | 已签 `aun-cap/semantic-1` 原件的 SignedJsonBytes,CID 等于 credential_cid |
|
|
103
|
+
| metadata | 非空 SignedJsonBytes 数组;original_hash 一致,各份 aud 不重叠,候选合起来覆盖完整初始受众 |
|
|
104
|
+
| lineage_evidence | root→直接 parent 的完整来源链材料;根凭证为空数组 |
|
|
105
|
+
|
|
106
|
+
返回 `{cid,original_hash,audiences}`;每项 audience 记录含 `{audience,revision,state_seq,registration_receipt}`,初始 state_seq=1。revision 绑定 CID、原件摘要及 metadata 版本/摘要;回执是服务签名的登记见证,不是业务授权。
|
|
107
|
+
|
|
108
|
+
服务核对原件签署身份、K 的确认权、显式原件上限、全部来源链和登记权限,并在自身边界强查父状态。相同管理幂等键恢复原结果;已存在 CID 上的另一登记操作返回 REVISION_CONFLICT,不覆盖原件。
|
|
109
|
+
|
|
110
|
+
## credential.semantic.revise
|
|
111
|
+
|
|
112
|
+
kind 决定唯一分支,另含公共参数:
|
|
113
|
+
|
|
114
|
+
| kind | 分支参数 | 行为及返回 |
|
|
115
|
+
| --- | --- | --- |
|
|
116
|
+
| metadata | change:expected、metadata;可选 expected_absent、withdraw、expected_withdrawn | 按受众 CAS 发布/撤下;返回 `{kind,cid,original_hash,audiences,withdrawn}` |
|
|
117
|
+
| usage_prepare | transition_id、from_usage、to_usage、change、previous_abort_acks | 持久准备候选;返回 `{kind,transition}`,服务分配 fence 和 candidate_hash |
|
|
118
|
+
| usage_commit | transition_id、fence、checkpoints、allocation_closures、acceptances | 核对全部权威材料,同事务发布新 UsageRef 与所有候选 aud;返回 `{kind,transition}` |
|
|
119
|
+
| usage_abort | transition_id、fence、from_usage | 持久终止原转换;返回 `{kind,transition}` |
|
|
120
|
+
|
|
121
|
+
metadata 变更的当前 aud 列入 expected,首次新增列入 expected_absent,撤下后的重加列入 expected_withdrawn;三者互斥。metadata/withdraw 至少一项非空,至少保留一个当前 aud;全终止用 revoke。变更共享确认字段必须列齐相关 aud;CID 内 metadata_version 不可换内容复用,state_seq 随受众变更递增。结果只含本次发布/撤下项,其他当前项通过 get 读取。
|
|
122
|
+
|
|
123
|
+
usage_prepare 的 change 覆盖全部当前 aud 和完整候选元数据,to_usage.epoch=from_usage.epoch+1,hash 绑定完整候选契约。每 CID 至多一个 prepared,准备不发布候选。前次 aborted 时收齐原权威 LedgerAbortAck,否则 previous_abort_acks 可为空;客户端不得自造 fence/candidate_hash。
|
|
124
|
+
|
|
125
|
+
commit 的 checkpoints/acceptances 非空,allocation_closures 包含检查点引用的全部 closed 分配证明。缺失、不连续或 fence 不符返回冲突。结果未知先 get 原 transition;普通 abort 的恢复资格与 CID 撤销导致的终止分别记录,不能自行解冻。SDK prepareUsage/commitUsage/abortUsage 是本方法快捷入口,只返回 transition,不是三个新增 RPC。
|
|
126
|
+
|
|
127
|
+
## credential.semantic.get
|
|
128
|
+
|
|
129
|
+
业务参数 audience 必填;metadata_version 与 transition_id 至多一个,均不传表示读取该 aud 当前修订。
|
|
130
|
+
|
|
131
|
+
| 结果 kind | 返回字段 |
|
|
132
|
+
| --- | --- |
|
|
133
|
+
| revision | `{kind,original,metadata,revision,registration_receipt,head}` |
|
|
134
|
+
| transition | `{kind,original,transition,change}` |
|
|
135
|
+
|
|
136
|
+
original/metadata 保持 SignedJsonBytes。head 为 current(revision、state_seq)或 withdrawn(last_revision、state_seq),均绑定 audience。当前 aud 已撤下时不返回可当当前使用的历史修订;历史材料仍受读取 ACL 限制。transition 是已持久签名的协调记录,供原阶段恢复。
|
|
137
|
+
|
|
138
|
+
## credential.semantic.status
|
|
139
|
+
|
|
140
|
+
业务参数为 audience、expected_revision、policy;online 另含 query。
|
|
141
|
+
|
|
142
|
+
| policy | 查询与时效 |
|
|
143
|
+
| --- | --- |
|
|
144
|
+
| `{mode:"online"}` | query 为 `{request_hash,nonce}`,绑定稳定业务摘要和独立查询随机数;本地单调时钟计时到验收小于 30 秒 |
|
|
145
|
+
| `{mode:"bounded",max_staleness_seconds}` | max_staleness_seconds 为 1—300;不得提交 query,验真同时核对绝对窗口与本地首次观察后的 TTL |
|
|
146
|
+
|
|
147
|
+
返回服务签名的 CredentialStatusProof,绑定 CID/原件 hash、aud、metadata 版本/hash、state_seq、状态、服务身份和证明时间;online 回显对应查询绑定。当前修订与 expected_revision 不一致、aud 已撤下时返回 REVISION_CONFLICT,不能拿历史回执代替当前状态。刷新同一修订的 status 不改变固定业务 request_hash。
|
|
148
|
+
|
|
149
|
+
## credential.semantic.revoke
|
|
150
|
+
|
|
151
|
+
业务参数 reason_code 必填、reason 可选。服务核对撤销权限后撤销整个 CID;成功返回 `{cid,original_hash,revoked_at,event_seq,affected}`,必要时含 transition。affected 绑定受影响受众的修订和序号。
|
|
152
|
+
|
|
153
|
+
CID 重复撤销不新增撤销事件;相同管理幂等键返回原结果。prepared 转换在同一事务终止并记录不允许恢复的状态。未知结果不得按已撤销处理,先读取原操作结果。
|
|
154
|
+
|
|
155
|
+
## credential.semantic.revocationList
|
|
156
|
+
|
|
157
|
+
| 业务参数 | 说明 |
|
|
158
|
+
| --- | --- |
|
|
159
|
+
| scope | `{audiences:[...]}`,非空且为策略允许读取的完整受众集合 |
|
|
160
|
+
| after_event_seq | 本 scope 已完整合并的上界;首次为 0,不能超过服务当前上界 |
|
|
161
|
+
| cursor | 首页为 null,续页使用上次 next_cursor;不透明服务认证值 |
|
|
162
|
+
| limit | 1—1000 安全整数,按匹配事件条数计 |
|
|
163
|
+
|
|
164
|
+
返回 SemanticRevocationPage,含签名、service_aid、scope、query、upper_event_seq、cursor、事件、next_cursor、as_of/valid_until。query.params_hash 匹配本次管理绑定,query.nonce 匹配管理 nonce。
|
|
165
|
+
|
|
166
|
+
首请求固定快照 upper_event_seq。续页保持 actor、服务、scope、after_event_seq、limit,使用新的管理 ID/nonce 和绑定;cursor 固定上述范围及扫描位置,不可自造。next_cursor=null(包括空页)才表示本快照结束;页签名及查询绑定验证成功后原子合并事件和进度,完成才推进增量上界。下一轮 cursor=null、after 为该上界;分页期间新增撤销由下一轮取得。
|
|
167
|
+
|
|
168
|
+
scope 改变从 0 建独立进度,不能复用其他 scope 的 cursor 或上界。页时间过期用新管理请求取得同页;重放原管理幂等键仍得到原签名页。cursor 在 CRL 留存期内可用,没有另设隐含短 TTL。
|
|
169
|
+
|
|
170
|
+
## 语义凭证错误
|
|
171
|
+
|
|
172
|
+
六方法业务错误的 JSON-RPC `code=-32000`,程序分支使用 `error.data.error_code`,并保留 data/retryable;message 仅供人阅读。标准解析、认证、请求和方法错误保持原有错误码。
|
|
173
|
+
|
|
174
|
+
| error.data.error_code | 处理 |
|
|
175
|
+
| --- | --- |
|
|
176
|
+
| SEMANTIC_FORMAT_INVALID | 核对版本、字段、类型、原字节、数值、集合及声明期限 |
|
|
177
|
+
| SEMANTIC_SIGNATURE_INVALID | 取得原件/确认/证明的有效签名及正确签名域 |
|
|
178
|
+
| SEMANTIC_IDENTITY_INVALID | 核对证书可信链、AID 及签署角色绑定 |
|
|
179
|
+
| SEMANTIC_PERMISSION_DENIED | 核对认证 actor 和登记/确认/修订/撤销/读取权限 |
|
|
180
|
+
| SEMANTIC_NOT_FOUND | 核对获准读取的 CID、metadata_version 或 transition_id |
|
|
181
|
+
| SEMANTIC_REVISION_CONFLICT | 读取 current head,重新确认 CAS 前置条件与候选材料 |
|
|
182
|
+
| SEMANTIC_TRANSITION_CONFLICT | 读取 transition/current_usage,核对 fence、阶段和完整连续材料 |
|
|
183
|
+
| SEMANTIC_BINDING_INVALID | 核对实际目标、方法、CID、摘要、nonce、时间及 cursor 范围 |
|
|
184
|
+
| SEMANTIC_IDEMPOTENCY_CONFLICT | 同 actor/method/request_id 已关联另一摘要;保持原操作,变更另建标识 |
|
|
185
|
+
| SEMANTIC_STATE_UNAVAILABLE | 依赖/数据库/签名/可信策略暂不可用,保留原材料并退避重试 |
|
|
186
|
+
|
|
187
|
+
仅 STATE_UNAVAILABLE 默认 retryable=true,其余为 false。data 可按原因和读取权限含 current、current_usage、transition、required 或 binding(server_time/clock_skew_seconds=300);不要用空数组或 null 代替缺省。冲突不能靠更换材料反复重试原幂等键。应用流程见[SDK 集成指南 §4](凭证与组织服务SDK应用集成指南.md#4-语义凭证接入),脚本入口见 [CLI 手册](../cli/CLI手册.md#凭证与语义凭证)。
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
|
|
49
49
|
## 成员关系
|
|
50
50
|
|
|
51
|
-
0.5.22 配套服务修复组织创建补偿与转让恢复:创建补偿遇到 `CREDENTIAL_IDEMPOTENCY_KEY_REUSE` 时保存冲突并停止自动补偿;转让开始换钥前复核当前证书/公钥代际,以规范 DER 公钥的 Base64 调用 CA,并将新旧 owner 的成员替换、完整成员包定向通知一起持久化。通知失败保留待办并按组织轮转;应用保留原任务、原请求及原密钥,不用更换 request ID 消除不确定结果。完整恢复要求见 [应用指南](凭证与组织服务SDK应用集成指南.md#
|
|
51
|
+
0.5.22 配套服务修复组织创建补偿与转让恢复:创建补偿遇到 `CREDENTIAL_IDEMPOTENCY_KEY_REUSE` 时保存冲突并停止自动补偿;转让开始换钥前复核当前证书/公钥代际,以规范 DER 公钥的 Base64 调用 CA,并将新旧 owner 的成员替换、完整成员包定向通知一起持久化。通知失败保留待办并按组织轮转;应用保留原任务、原请求及原密钥,不用更换 request ID 消除不确定结果。完整恢复要求见 [应用指南](凭证与组织服务SDK应用集成指南.md#7-所有权转让与实体材料)。
|
|
52
52
|
|
|
53
53
|
| 方法 | 主要业务参数 | 作用与结果 |
|
|
54
54
|
|------|------|------|
|
|
@@ -41,7 +41,7 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
41
41
|
- Group RPC:成员 block/status、暂停群权限、两阶段群主转让、`group_aid` / `group_id` 兼容、`group.index` 签名索引与 CAS(见 `09-group-rpc-manual.md`、`06-API手册.md`)
|
|
42
42
|
- 群文件系统:`group.fs.*`、`client.group.fs.*`、`aun group fs`、`cp/mv` 上传下载、群自有区角色 ACL 与 `group_aid` 签名、`parents`、JS string 差异和 memberdata 服务端映射(见 `09-group-rpc-manual.md`)
|
|
43
43
|
- 协作(collab):`collab.*` 版本化文档、乐观锁 CAS commit、三方合并、标签、GC、reflog、revert(见 `09-collab-rpc-manual.md`)
|
|
44
|
-
- Credential/Org
|
|
44
|
+
- Credential/Org:普通及六语义RPC、受保护请求、CAS/额度协调、签名CRL和错误;语义接入/四SDK移植见两专题§3—§4,CN场景及验收边界见 `../../examples/semantic-credential/示例使用指南.md`
|
|
45
45
|
- Service Proxy:`ServiceProxyClient`、`proxy.register_services`、proxy-server `register_services`
|
|
46
46
|
- agent.md:Schema/frontmatter、Store.sign/verify 通用多签、显式 file/inPlace、multi-v1 表示协商、4 KiB/总尾区2048 字节限制、`AIDStore.register()` 默认自动上传、上传前完整校验、`agent_md_validation_v1`、`uploader_aid` / `uploaderAid`、`AIDStore.upload_agent_md()` / `download_agent_md()` / `check_agent_md()`、Gateway `_meta.agent_md_etags` 被动观察、`requester` / `peer` / `group` 角色
|
|
47
47
|
- agent.md / group.index 的 ETag 权威来源、被动观察、下载触发、显式 pull 与 CAS → [ETag 观察与同步机制](agent.md与group.index的ETag观察与同步机制.md)
|
|
@@ -61,7 +61,7 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
61
61
|
| - | [0.5.22 SDK 开发与移植指南](0.5.22-SDK开发与移植指南.md) | 同步、Stage/CAS、撤销续期、缓存、服务依赖及 Rust 清单 |
|
|
62
62
|
| - | [0.5.24 SDK 应用集成指南](0.5.24-SDK应用集成指南.md) | 当前消息接线、无任务 Ownership、两个 local 编排、缓存和凭证组织 |
|
|
63
63
|
| - | [0.5.24 SDK 开发与移植指南](0.5.24-SDK开发与移植指南.md) | 消息提交、NS 事实和远端 CAS、local 身份隔离、缓存新鲜度与语言差异 |
|
|
64
|
-
| - | 0.5.
|
|
64
|
+
| - | [0.5.28 应用指南](0.5.28-SDK应用集成指南.md)、[开发与移植指南](0.5.28-SDK开发与移植指南.md);[0.5.27 应用指南](0.5.27-SDK应用集成指南.md)、[开发与移植指南](0.5.27-SDK开发与移植指南.md) | 0.5.28 agent.md 上传/下载校验、共识 fresh、分类控制消息、Owner 通知与风控;四端实现和验证范围见 [parity](../../python/CHANGES_FOR_PARITY.md#v0528--校验控制消息与风控未发布) |
|
|
65
65
|
| - | [agent.md 与 group.index 的 ETag 观察与同步机制](agent.md与group.index的ETag观察与同步机制.md) | 服务端 ETag 来源、四 SDK 被动观察、agent.md 下载触发、group.index 显式 pull 与 CAS |
|
|
66
66
|
| - | [CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) | **0.5.6 版本更新日志**:首次签名者回源、下载提交前验签、消息窗口、显式 change-seed 与语言能力边界 |
|
|
67
67
|
| 01 | [快速开始](01-快速开始.md) | 安装、三主体模型、最小示例 |
|
|
@@ -76,9 +76,11 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
76
76
|
| - | [Ownership SDK集成指南(legacy)](Ownership-SDK集成指南.md) | TypeScript 快速接入、应用审批、状态查询及 SDK 编排流程图 |
|
|
77
77
|
| - | [Ownership SDK实现指南(legacy)](Ownership-SDK实现指南.md) | SDK 移植入口、消息拦截、proof/escrow、metadata 和恢复验收 |
|
|
78
78
|
| - | [Ownership协议定义(legacy)](../protocol/Ownership协议定义.md) | P2P/proof/agent.md schema、escrow、owner 授权头与现有 RPC |
|
|
79
|
-
| - | [凭证与组织服务 SDK 应用集成指南](凭证与组织服务SDK应用集成指南.md) |
|
|
80
|
-
| - | [凭证与组织服务 SDK 开发与移植指南](凭证与组织服务SDK开发与移植指南.md) |
|
|
81
|
-
| - | [
|
|
79
|
+
| - | [凭证与组织服务 SDK 应用集成指南](凭证与组织服务SDK应用集成指南.md) | 结构化§3 L21-304;语义§4 L305-763;组织§5—§7 L764-954 |
|
|
80
|
+
| - | [凭证与组织服务 SDK 开发与移植指南](凭证与组织服务SDK开发与移植指南.md) | 结构化§3 L51-209;语义§4 L210-525;普通proof/CRL L651-894 |
|
|
81
|
+
| - | [凭证与组织服务 CLI 开发与使用指南](../cli/凭证与组织服务CLI开发与使用指南.md) | TS运行器/23命令L5-121;凭证L122-591;组织L592-798;开发/错误/E2E L799-869 |
|
|
82
|
+
| - | [凭证服务 RPC 手册](09-凭证服务RPC手册.md) | 旧版RPC及语义公共约定、六方法/CRL与十错误码L81-187 |
|
|
83
|
+
| - | [语义凭证示例与验证](../../examples/semantic-credential/示例使用指南.md) | E01—E36、CN/本地aid.com、浏览器/普通凭证冷恢复及证据边界L3-94 |
|
|
82
84
|
| - | [组织服务 RPC 手册](09-组织服务RPC手册.md) | Org Service 生命周期/成员 RPC、内部接口和未实现方法 |
|
|
83
85
|
| 05 | [E2EE加密通信](05-E2EE加密通信.md) | E2EE V2、ProtectedHeaders、need_render、agent.md 版本提示、旧 SPK 保留 |
|
|
84
86
|
| - | [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) | `protected_headers` 四端 API、实例级/单次调用、E2EE V2 HMAC 完整性和接收信任边界 |
|
|
@@ -101,7 +103,7 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
101
103
|
| 实现、移植或审查 0.5.22 SDK,查看 Stage/CAS、配套服务修复、读缓存及 Rust 验收清单 | [0.5.22 SDK 开发与移植指南](0.5.22-SDK开发与移植指南.md) |
|
|
102
104
|
| 接入或升级 0.5.24,查看当前消息、无任务 Ownership、两个 local 场景、缓存及凭证组织 | [0.5.24 SDK 应用集成指南](0.5.24-SDK应用集成指南.md) |
|
|
103
105
|
| 实现、移植或审查 0.5.24,核对提交/ACK、NS 事实、远端 CAS、local 身份隔离和缓存新鲜度 | [0.5.24 SDK 开发与移植指南](0.5.24-SDK开发与移植指南.md) |
|
|
104
|
-
| 核查 0.5.
|
|
106
|
+
| 核查 0.5.28 的 schema、共识、控制消息、Owner 通知与风控;回看 0.5.27 的历史增量 | [0.5.28 应用指南](0.5.28-SDK应用集成指南.md):接入与消息 §1—§3 L5-95、凭证/组织 §4—§5 L96-137、Storage/Ownership §6—§7 L138-186、通知 §8 L187-201、风控/升级 §9—§10 L202-228;[开发与移植指南](0.5.28-SDK开发与移植指南.md):校验 §1 L7-36、共识 §2 L37-62、wire §3 L63-108、outbox §4 L109-121、风控 §5 L122-134、移植 §6 L135-146。 [parity 当前章节](../../python/CHANGES_FOR_PARITY.md#v0528--校验控制消息与风控未发布) L15-99;历史 0.5.27 指南及 parity 保留原基线 |
|
|
105
107
|
| 0.5.24 应用按主题读:身份、消息、resolve、Ownership、文件缓存、凭证组织和升级 | `0.5.24-SDK应用集成指南.md` §2 L21-75、§3 L76-132、§4 L133-168、§5 L169-298、§6 L299-321、§7 L322-366、§9 L386-401;local bind L227-245、local transfer L246-267 |
|
|
106
108
|
| 0.5.24 移植按主题读:消息提交、名片、观察、Ownership、缓存、PKI、凭证组织及语言差异 | `0.5.24-SDK开发与移植指南.md` §3 L32-84、§4 L85-92、§5 L93-122、§6 L123-217、§7 L218-245、§8 L246-261、§9 L262-297、§10 L298-325;Rust §11 L326-339、验收 §12 L340-354 |
|
|
107
109
|
| 首次使用 SDK | [01-快速开始](01-快速开始.md) |
|
|
@@ -113,9 +115,11 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
113
115
|
| Ownership 2.1 移植:NS 验收、条件发布、通用消息交付、本地编排和文件 CAS | [开发与移植指南](Ownership2.1-SDK开发与移植指南.md) |
|
|
114
116
|
| Ownership 2.1 历史格式、reset、任务恢复及验证记录 | [审查报告第二十二节](../audit/Ownership2.1代码审查报告.md#二十二2026-10-18-恢复发布格式与历史兼容更正)、[旧编排第 8 节](Ownership-SDK编排指南2.1.md#8-崩溃与响应丢失后的恢复);当前无任务/WAL,以两份现行指南为准 |
|
|
115
117
|
| 当前双文件关系、release/清理/重绑版本、Header 投影及 Group/Org 名片 wire | [协议 2.1](../protocol/Ownership协议定义2.1.md) §3/§4.2/§6、§1.3/§2.5;旧 SDK RPC 隔离兼容见开篇/§3.2,旧 escrow/授权头 wire 查 legacy 协议 |
|
|
116
|
-
| Credential/Org
|
|
117
|
-
| Credential/Org
|
|
118
|
-
| 查 Credential Service RPC | [凭证服务 RPC 手册](09-凭证服务RPC手册.md) |
|
|
118
|
+
| Credential/Org 应用:结构化完整链路与语义原件、包/请求和业务验收 | [应用集成指南](凭证与组织服务SDK应用集成指南.md);结构化§3 L21-304/语义§4 L305-763/组织§5—§7 L764-954 |
|
|
119
|
+
| Credential/Org 移植:结构化链/可信proof/CRL与语义四SDK契约 | [开发与移植指南](凭证与组织服务SDK开发与移植指南.md);结构化§3 L51-209/语义§4 L210-525/普通proof与CRL §6.5—§6.6 L651-894 |
|
|
120
|
+
| 查 Credential Service RPC:旧版及六语义方法/错误 | [凭证服务 RPC 手册](09-凭证服务RPC手册.md);语义L81-187 |
|
|
121
|
+
| 查语义凭证CN运行、E01—E36及真实验证边界/CLI | [示例指南](../../examples/semantic-credential/示例使用指南.md) L3-94;[CLI手册](../cli/CLI手册.md#凭证与语义凭证) L312-355 |
|
|
122
|
+
| 凭证/组织CLI流程图、TS代码与SDK胶水开发 | [CLI专题](../cli/凭证与组织服务CLI开发与使用指南.md) §1—§3 L5-121;§4—§7 L122-591;§8—§10 L592-798;§11 L799-869 |
|
|
119
123
|
| 查 Org Service RPC | [组织服务 RPC 手册](09-组织服务RPC手册.md) |
|
|
120
124
|
| 自行发起 HTTP 数据面请求并获取当前 access token | [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[Storage RPC 手册:数据面 HTTP 下载流程](09-storage-rpc-manual.md#数据面-http-下载流程) |
|
|
121
125
|
| 发布、下载、检查或排查 agent.md(含 Schema/签名/大小限制)及远端 ETag | [当前协议 2.1](../protocol/Ownership协议定义2.1.md)、[04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[../agent.md/远程agent.md缓存与etag透传方案.md](../agent.md/远程agent.md缓存与etag透传方案.md) |
|