Skip to content

fabric-ca · 架构

顶层组件

组件文件行号职责
Server structlib/server.go67-95主服务器对象;含 CAmux(gorilla/mux)、dbMetricsMetricsOperations
CA structlib/ca.go73-104CA 实例;含 dbFabricCADB)、csp(BCCSP)、enrollSignerissuer(Idemix)、registryattrMgr
Client structlib/client.go46客户端 SDK
serverEndpoint structlib/serverendpoint.go19-30REST 端点:PathMethodsHandlersuccessRC

CA 启动

函数文件行号
newCA()lib/ca.go112-124
initCA()lib/ca.go127-148

initCA()lib/ca.go:141-146)会创建 Idemix issuer:idemix.NewIssuer() + issuer.Init(renew, db, levels)

端点注册

所有 REST 端点在 lib/server.go:549-564registerHandlers() 中注册,调用 registerHandler()lib/server.go:567-570),同时映射到 /{Path}/api/v1/{Path} 两个路径。

端点完整列表见 05-core-flows06-api

数据库适配

文件行号
DB struct(包 sqlx.DBlib/server/db/db.go77-83
DB 工厂 New(dbType, ...)lib/server/db/factory/factory.go29-47
SQLite 驱动lib/server/db/sqlite/
PostgreSQL 驱动lib/server/db/postgres/
MySQL 驱动lib/server/db/mysql/
迁移机制lib/server/db/migrator.go16-86

SQLite 注释中标注其不适合集群(lib/caconfig.go:58-61)。SQLite 固定单连接(lib/server/db/sqlite/sqlite.go:99)。PostgreSQL / MySQL 的连接池参数 [未核]。

表 schema(SQLite)

来源:lib/server/db/sqlite/sqlite.go:136-197

CREATE 行号用途
users138用户身份:idtokentypeaffiliationattributesstatemax_enrollmentslevelincorrect_password_attempts
certificates154证书:serial_numberauthority_key_identifierca_labelstatusreasonexpiryrevoked_atpemlevel
affiliations146组织树:name(UNIQUE)、prekeylevel
credentials162Idemix 凭证:revocation_handle(PK)、credca_labelstatusreasonexpiryrevoked_atlevel
revocation_authority_info170Idemix RA 信息:epoch(PK)、next_handlelasthandle_in_poollevel
nonces178nonce:val(UNIQUE PK)、expirylevel
properties186-190系统属性表(各对象的 level)

配置结构

配置定义文件行号
ServerConfiglib/serverconfig.go29-61
CAConfiglib/caconfig.go81-98
CAConfigDBlib/caconfig.go127-131
ClientConfiglib/clientconfig.go33-50

字段细节见 07-config

BCCSP

文件出处
CSP 实现util/csp.goREADME.md:63
PKCS#11 keyrequest 支持lib/keyrequest.go(build tag pkcs11)/ lib/keyrequestnopkcs11.go!pkcs11),均实现 GetKeyRequest(cfg *CAConfig)文件存在

TLS

文件行号
TLS 子目录lib/tls/目录存在
TLS 版本设置lib/server.go673-680(配置 TLS 1.2-1.3 与 stls.DefaultCipherSuites

具体加密套件清单 [未核]。

Idemix 子系统

lib/server/idemix/ 下文件:

  • idemixlib.go
  • issuer.go
  • config.go
  • cri.go
  • enroll.go
  • revocationkey.go
  • revocationauthority.go
  • issuercredential.go
  • creddbaccessor.go
  • nonce.go
  • idemix_roles.go

Idemix 加密协议细节由外部依赖 github.com/IBM/idemix 提供,本仓库源码不含算法实现。