1 Star 1 Fork 0

Hyperledger Fabric 国密 / fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
networkconfig.go 5.53 KB
一键复制 编辑 原始数据 按行查看 历史
Jtyoui 提交于 2021-07-22 15:59 . 国密
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package common
import (
"io/ioutil"
"github.com/pkg/errors"
yaml "gopkg.in/yaml.v2"
)
// NetworkConfig provides a static definition of a Hyperledger Fabric network
type NetworkConfig struct {
Name string `yaml:"name"`
Xtype string `yaml:"x-type"`
Description string `yaml:"description"`
Version string `yaml:"version"`
Channels map[string]ChannelNetworkConfig `yaml:"channels"`
Organizations map[string]OrganizationConfig `yaml:"organizations"`
Peers map[string]PeerConfig `yaml:"peers"`
Client ClientConfig `yaml:"client"`
Orderers map[string]OrdererConfig `yaml:"orderers"`
CertificateAuthorities map[string]CAConfig `yaml:"certificateAuthorities"`
}
// ClientConfig - not currently used by CLI
type ClientConfig struct {
Organization string `yaml:"organization"`
Logging LoggingType `yaml:"logging"`
CryptoConfig CCType `yaml:"cryptoconfig"`
TLS TLSType `yaml:"tls"`
CredentialStore CredentialStoreType `yaml:"credentialStore"`
}
// LoggingType not currently used by CLI
type LoggingType struct {
Level string `yaml:"level"`
}
// CCType - not currently used by CLI
type CCType struct {
Path string `yaml:"path"`
}
// TLSType - not currently used by CLI
type TLSType struct {
Enabled bool `yaml:"enabled"`
}
// CredentialStoreType - not currently used by CLI
type CredentialStoreType struct {
Path string `yaml:"path"`
CryptoStore struct {
Path string `yaml:"path"`
}
Wallet string `yaml:"wallet"`
}
// ChannelNetworkConfig provides the definition of channels for the network
type ChannelNetworkConfig struct {
// Orderers list of ordering service nodes
Orderers []string `yaml:"orderers"`
// Peers a list of peer-channels that are part of this organization
// to get the real Peer config object, use the Name field and fetch NetworkConfig.Peers[Name]
Peers map[string]PeerChannelConfig `yaml:"peers"`
// Chaincodes list of services
Chaincodes []string `yaml:"chaincodes"`
}
// PeerChannelConfig defines the peer capabilities
type PeerChannelConfig struct {
EndorsingPeer bool `yaml:"endorsingPeer"`
ChaincodeQuery bool `yaml:"chaincodeQuery"`
LedgerQuery bool `yaml:"ledgerQuery"`
EventSource bool `yaml:"eventSource"`
}
// OrganizationConfig provides the definition of an organization in the network
// not currently used by CLI
type OrganizationConfig struct {
MspID string `yaml:"mspid"`
Peers []string `yaml:"peers"`
CryptoPath string `yaml:"cryptoPath"`
CertificateAuthorities []string `yaml:"certificateAuthorities"`
AdminPrivateKey TLSConfig `yaml:"adminPrivateKey"`
SignedCert TLSConfig `yaml:"signedCert"`
}
// OrdererConfig defines an orderer configuration
// not currently used by CLI
type OrdererConfig struct {
URL string `yaml:"url"`
GrpcOptions map[string]interface{} `yaml:"grpcOptions"`
TLSCACerts TLSConfig `yaml:"tlsCACerts"`
}
// PeerConfig defines a peer configuration
type PeerConfig struct {
URL string `yaml:"url"`
EventURL string `yaml:"eventUrl"`
GRPCOptions map[string]interface{} `yaml:"grpcOptions"`
TLSCACerts TLSConfig `yaml:"tlsCACerts"`
}
// CAConfig defines a CA configuration
// not currently used by CLI
type CAConfig struct {
URL string `yaml:"url"`
HTTPOptions map[string]interface{} `yaml:"httpOptions"`
TLSCACerts MutualTLSConfig `yaml:"tlsCACerts"`
Registrar EnrollCredentials `yaml:"registrar"`
CaName string `yaml:"caName"`
}
// EnrollCredentials holds credentials used for enrollment
// not currently used by CLI
type EnrollCredentials struct {
EnrollID string `yaml:"enrollId"`
EnrollSecret string `yaml:"enrollSecret"`
}
// TLSConfig TLS configurations
type TLSConfig struct {
// the following two fields are interchangeable.
// If Path is available, then it will be used to load the cert
// if Pem is available, then it has the raw data of the cert it will be used as-is
// Certificate root certificate path
Path string `yaml:"path"`
// Certificate actual content
Pem string `yaml:"pem"`
}
// MutualTLSConfig Mutual TLS configurations
// not currently used by CLI
type MutualTLSConfig struct {
Pem []string `yaml:"pem"`
// Certfiles root certificates for TLS validation (Comma separated path list)
Path string `yaml:"path"`
//Client TLS information
Client TLSKeyPair `yaml:"client"`
}
// TLSKeyPair contains the private key and certificate for TLS encryption
// not currently used by CLI
type TLSKeyPair struct {
Key TLSConfig `yaml:"key"`
Cert TLSConfig `yaml:"cert"`
}
// GetConfig unmarshals the provided connection profile into a network
// configuration struct
func GetConfig(fileName string) (*NetworkConfig, error) {
if fileName == "" {
return nil, errors.New("filename cannot be empty")
}
data, err := ioutil.ReadFile(fileName)
if err != nil {
return nil, errors.Wrap(err, "error reading connection profile")
}
configData := string(data)
config := &NetworkConfig{}
err = yaml.Unmarshal([]byte(configData), &config)
if err != nil {
return nil, errors.Wrap(err, "error unmarshaling YAML")
}
return config, nil
}
Go
1
https://gitee.com/hyperledger-fabric-gm/fabric.git
git@gitee.com:hyperledger-fabric-gm/fabric.git
hyperledger-fabric-gm
fabric
fabric
v1.4.9

搜索帮助