msp

package
v0.0.0-...-e3e94bd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 4, 2024 License: Apache-2.0 Imports: 23 Imported by: 0

README

成员服务提供商 (Membership Service Provider, MSP)

1. MSP 的作用

联盟链是一种许可链,参与者需要一种方式向区块链中的其他参与者证明自己的身份,

Documentation

Index

Constants

View Source
const (
	MSPv1_0 = iota
	MSPv1_1
	MSPv1_3
	MSPv1_4_3
)

Variables

This section is empty.

Functions

func GetLocalMSPConfig

func GetLocalMSPConfig(dir string, ID string) (*pbmsp.MSPConfig, error)

func GetLocalMSPConfigWithType

func GetLocalMSPConfigWithType(dir string, ID string, mspType string) (*pbmsp.MSPConfig, error)

Types

type Configuration

type Configuration struct {
	OrganizationalUnitIdentifiers []*OrganizationalUnitIdentifiersConfiguration `yaml:"OrganizationalUnitIdentifiers,omitempty"`
	NodeOUs                       *NodeOUs                                      `yaml:"NodeOUs,omitempty"`
}

type Identity

type Identity interface {
	// ExpiresAt 返回个人信息的过期时间。
	ExpiresAt() time.Time

	// GetIdentifier 返回身份标识符。
	GetIdentifier() *IdentityIdentifier

	// GetMSPIdentifier 返回 MSP 的身份标识符。
	GetMSPIdentifier() string

	// Validate 验证身份证书是否被撤销。
	Validate() error

	// GetOrganizationalUnits 返回与此身份关联的零个或多个组织单位。
	GetOrganizationalUnits() []*OUIdentifier

	// Anonymous 返回此身份是否是匿名身份。
	Anonymous() bool

	// Verify 使用此身份验证某个消息上的签名。
	Verify(msg []byte, sig []byte) error

	// Serialize 将身份信息序列化成字节。
	Serialize() ([]byte, error)

	// SatisfiesPrincipal 检查该实例是否与 MSPPrincipal 中提供的描述相匹配。
	// 检查可能涉及逐字节比较(如果 principal 被序列化的身份标识),也可能需要 MSP 验证。
	SatisfiesPrincipal(principal *pbmsp.MSPPrincipal) error
}

type IdentityDeserializer

type IdentityDeserializer interface {
	// DeserializeIdentity 返序列化身份信息,提取身份信息中的证书信息,然后基于证书信息构建 Identity,并将
	// 构建的 Identity 返回出来。
	DeserializeIdentity(serializedIdentity []byte) (Identity, error)

	// IsWellFormed 检查身份信息的证书部分内容,证书部分内容是以 ASN.1 DER PEM 格式组织的,首先就是检查利用
	// pem.Decode() 方法得到的 pem.Block 是否正常,并且 rest 部分应当是空的,其次就是解析 pem.Block.Bytes
	// 能否被顺利解析成 x509.Certificate,能得话,提供的 pbmsp.SerializedIdentity 的格式就是正确的。
	IsWellFormed(identity *pbmsp.SerializedIdentity) error
}

type IdentityIdentifier

type IdentityIdentifier struct {
	// 成员服务提供商的身份标识符。
	Mspid string

	// x509.Certificate.Raw 的哈希值,并对哈希值计算 16 进制,得到的字符串。
	Id string
}

type MSP

type MSP interface {
	IdentityDeserializer

	// Setup 配置 MSP。
	Setup(config *pbmsp.MSPConfig) error

	GetIdentifier() string

	GetDefaultSigningIdentity() (SigningIdentity, error)

	GetTLSRootCerts() [][]byte

	GetTLSIntermediateCerts() [][]byte

	Validate(id Identity) error

	SatisfiesPrincipal(id Identity, principal *pbmsp.MSPPrincipal) error
}

func New

func New(csp bccsp.BCCSP) MSP

type MSPManager

type MSPManager interface {
	IdentityDeserializer
	Setup(msps []MSP) error
	GetMSPs() map[string]MSP
}

func NewMSPManager

func NewMSPManager() MSPManager

type MSPVersion

type MSPVersion int

type NodeOUs

type NodeOUs struct {
	Enable bool `yaml:"Enable,omitempty"`
	// ClientOUIdentifier 规定了如何通过 OU 识别 clients。
	ClientOUIdentifier *OrganizationalUnitIdentifiersConfiguration `yaml:"ClientOUIdentifier,omitempty"`
	// PeerOUIdentifier 规定了如何通过 OU 识别 peers。
	PeerOUIdentifier *OrganizationalUnitIdentifiersConfiguration `yaml:"PeerOUIdentifier,omitempty"`
	// AdminOUIdentifier 规定了如何通过 OU 识别 admins。
	AdminOUIdentifier *OrganizationalUnitIdentifiersConfiguration `yaml:"AdminOUIdentifier,omitempty"`
	// OrdererOUIdentifier 规定了如何通过 OU 识别 orderers。
	OrdererOUIdentifier *OrganizationalUnitIdentifiersConfiguration `yaml:"OrdererOUIdentifier,omitempty"`
}

NodeOUs:

  • ClientOUIdentifier 规定了如何通过 OU 识别 clients;
  • PeerOUIdentifier 规定了如何通过 OU 识别 peers;
  • AdminOUIdentifier 规定了如何通过 OU 识别 admins;
  • OrdererOUIdentifier 规定了如何通过 OU 识别 orderers。

type OUIdentifier

type OUIdentifier struct {
	// CertifiersIdentifier 与该组织单位关联的证书信任链的哈希值。
	CertifiersIdentifier []byte

	// OrganizationalUnitIdentifier 定义了用 MSPIdentifier 标识的 MSP 下的组织单位。
	OrganizationalUnitIdentifier string
}

type OrganizationalUnitIdentifiersConfiguration

type OrganizationalUnitIdentifiersConfiguration struct {
	// Certificate 指向根证书或者中间证书的存放路径。
	Certificate string `yaml:"Certificate,omitempty"`
	// OrganizationalUnitIdentifier 是 OU 的名字,这没什么可说的。
	OrganizationalUnitIdentifier string `yaml:"OrganizationalUnitIdentifier,omitempty"`
}

OrganizationalUnitIdentifiersConfiguration 用来代表一个 OU,OrganizationalUnitIdentifiersConfiguration 结构体内 有两个配置变量:Certificate 指向了存储根证书或者中间证书的路径;OrganizationalUnitIdentifier 代表 OU 的名字。

type SigningIdentity

type SigningIdentity interface {
	Identity

	// Sign 给消息签名。
	Sign(msg []byte) ([]byte, error)

	// GetPublicVersion 返回该身份的公开部分。
	GetPublicVersion() Identity
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL