Skip to content

fabric-ca · 架构 ​

顶层组件 ​

组件文件行号职责
Server structlib/server.go67-95主服务器对象;含 CA、mux(gorilla/mux)、dbMetrics、Metrics、Operations
CA structlib/ca.go73-104CA 实例;含 db(FabricCADB)、csp(BCCSP)、enrollSigner、issuer(Idemix)、registry、attrMgr
Client structlib/client.go46客户端 SDK
serverEndpoint structlib/serverendpoint.go19-30REST 端点:Path、Methods、Handler、successRC

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-564 的 registerHandlers() 中注册,调用 registerHandler()(lib/server.go:567-570),同时映射到 /{Path} 与 /api/v1/{Path} 两个路径。

端点完整列表见 05-core-flows 与 06-api。

数据库适配 ​

项文件行号
DB struct(包 sqlx.DB)lib/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用户身份:id、token、type、affiliation、attributes、state、max_enrollments、level、incorrect_password_attempts
certificates154证书:serial_number、authority_key_identifier、ca_label、status、reason、expiry、revoked_at、pem、level
affiliations146组织树:name(UNIQUE)、prekey、level
credentials162Idemix 凭证:revocation_handle(PK)、cred、ca_label、status、reason、expiry、revoked_at、level
revocation_authority_info170Idemix RA 信息:epoch(PK)、next_handle、lasthandle_in_pool、level
nonces178nonce:val(UNIQUE PK)、expiry、level
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 提供,本仓库源码不含算法实现。