主题
fabric-ca · 核心流程
本章基于 lib/server.go:549-570 的端点注册与各 handler 文件的实证位置。请求体格式 / 内部逻辑分支详情 [未核],需要时直接读 handler 源码。
端点一览
registerHandler() 将每个端点同时映射到 /{Path} 与 /api/v1/{Path}(lib/server.go:567-570)。
端点清单(含 file:line)
| 端点 | 方法 | 注册 file:line | Handler file:line | 成功 RC |
|---|---|---|---|---|
cainfo | GET / POST / HEAD | lib/serverinfo.go:14-20 | lib/serverinfo.go:24 | 200 |
register | POST | lib/serverregister.go:23-31 | lib/serverregister.go:34 | 201 |
enroll | POST | lib/serverenroll.go:49-57 | lib/serverenroll.go:70 | 201 |
reenroll | POST | lib/serverenroll.go:59-67 | lib/serverenroll.go:87(reenrollHandler) | 201 |
idemix/credential | POST | lib/serveridemixenroll.go:16-24 | lib/serveridemixenroll.go:27 | 201 |
idemix/cri | POST | lib/serveridemixcri.go:13-21 | lib/serveridemixcri.go:24 | 201 |
revoke | POST | lib/serverrevoke.go:36-43 | lib/serverrevoke.go:60(revokeHandler) | 200 |
gencrl | POST | lib/servergencrl.go:36-43 | lib/servergencrl.go:46(genCRLHandler) | 200 |
identities | GET / POST | lib/serveridentities.go:35-43 | lib/serveridentities.go:45 | 200 |
identities/{id} | GET / DELETE / PUT | lib/serveridentities.go:25-33 | lib/serveridentities.go:68(identitiesHandler) | 200 |
affiliations | GET / POST | lib/serveraffiliations.go:36-44 | lib/serveraffiliations.go:75(affiliationsStreamingHandler) | 200 |
affiliations/{affiliation} | GET / DELETE / PUT | lib/serveraffiliations.go:26-34 | lib/serveraffiliations.go:46 | 200 |
certificates | GET / DELETE | lib/servercertificates.go:26-34 | lib/servercertificates.go:36 | 200 |
CA 启动
initCA 之后,CA 持有 db(FabricCADB)、csp(BCCSP)、enrollSigner、issuer、registry、attrMgr 等字段(lib/ca.go:73-104)。
请求中间件
registerHandlers() 通过 s.mux.Use(s.cors, s.middleware)(lib/server.go:550)挂载两个中间件:cors(lib/server.go:581-586,按 CORS.Enabled 决定)与 middleware(lib/server.go:572-579,用 httpsnoop 捕获指标后调 recordMetrics,lib/server.go:601-604 记录 API 计数与时延)。
DB 迁移
| 项 | 文件 | 行号 |
|---|---|---|
Migrator interface | lib/server/db/migrator.go | 16-86 |
| SQLite DDL | lib/server/db/sqlite/sqlite.go | 136-197 |
| SQLite 连接固定 1 | lib/server/db/sqlite/sqlite.go | 99 |
支持的对象的版本化迁移列在 migrator.go:16-86:users、certificates、affiliations、credentials、nonces、ra_info 等。
端点 → 数据流(高层)
更深的步骤(如 enroll 内部的 CSR 解析、属性 OID、签名 profile 选择)需要逐个读 handler 源码,本章不做断言。