Skip to content

fabric-ca · 核心流程

本章基于 lib/server.go:549-570 的端点注册与各 handler 文件的实证位置。请求体格式 / 内部逻辑分支详情 [未核],需要时直接读 handler 源码。

端点一览

registerHandler() 将每个端点同时映射到 /{Path}/api/v1/{Path}lib/server.go:567-570)。

端点清单(含 file:line)

端点方法注册 file:lineHandler file:line成功 RC
cainfoGET / POST / HEADlib/serverinfo.go:14-20lib/serverinfo.go:24200
registerPOSTlib/serverregister.go:23-31lib/serverregister.go:34201
enrollPOSTlib/serverenroll.go:49-57lib/serverenroll.go:70201
reenrollPOSTlib/serverenroll.go:59-67lib/serverenroll.go:87reenrollHandler201
idemix/credentialPOSTlib/serveridemixenroll.go:16-24lib/serveridemixenroll.go:27201
idemix/criPOSTlib/serveridemixcri.go:13-21lib/serveridemixcri.go:24201
revokePOSTlib/serverrevoke.go:36-43lib/serverrevoke.go:60revokeHandler200
gencrlPOSTlib/servergencrl.go:36-43lib/servergencrl.go:46genCRLHandler200
identitiesGET / POSTlib/serveridentities.go:35-43lib/serveridentities.go:45200
identities/{id}GET / DELETE / PUTlib/serveridentities.go:25-33lib/serveridentities.go:68identitiesHandler200
affiliationsGET / POSTlib/serveraffiliations.go:36-44lib/serveraffiliations.go:75affiliationsStreamingHandler200
affiliations/{affiliation}GET / DELETE / PUTlib/serveraffiliations.go:26-34lib/serveraffiliations.go:46200
certificatesGET / DELETElib/servercertificates.go:26-34lib/servercertificates.go:36200

CA 启动

initCA 之后,CA 持有 dbFabricCADB)、csp(BCCSP)、enrollSignerissuerregistryattrMgr 等字段(lib/ca.go:73-104)。

请求中间件

registerHandlers() 通过 s.mux.Use(s.cors, s.middleware)lib/server.go:550)挂载两个中间件:corslib/server.go:581-586,按 CORS.Enabled 决定)与 middlewarelib/server.go:572-579,用 httpsnoop 捕获指标后调 recordMetricslib/server.go:601-604 记录 API 计数与时延)。

DB 迁移

文件行号
Migrator interfacelib/server/db/migrator.go16-86
SQLite DDLlib/server/db/sqlite/sqlite.go136-197
SQLite 连接固定 1lib/server/db/sqlite/sqlite.go99

支持的对象的版本化迁移列在 migrator.go:16-86:users、certificates、affiliations、credentials、nonces、ra_info 等。

端点 → 数据流(高层)

更深的步骤(如 enroll 内部的 CSR 解析、属性 OID、签名 profile 选择)需要逐个读 handler 源码,本章不做断言。