Fabric-sdk-go Как создать клиентский контекст с помощью msp CAclient - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь использовать Hyperledger Go SDK, импортируя из модуля

https://godoc.org/github.com/hyperledger/fabric-sdk-go/pkg/client/msp.

Я хочу создать экземпляр клиента CA с использованием фабрики Hyperledger Go-SDK,Какой модуль мне нужно импортировать и как это сделать, может кто-нибудь предложить?

Я использую ниже cmd для создания файла конфигурации клиента CA фабричного сервера.

./bin/fabric-ca-client enroll admin:adminpws localhost:7054

Нижекод, который создает контекст фабрики sdk, используя файл fabric-ca-client.yaml, который генерируется с помощью вышеуказанного cmd. если я делаю что-то не так, дайте мне знать.

package main

import (
"fmt"
"net"
"os"
"path/filepath"
"strings"

clientmsp "github.com/hyperledger/fabric-sdk-go/pkg/client/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/core"
mspid "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/core/config"
"github.com/hyperledger/fabric-sdk-go/pkg/core/cryptosuite"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
"github.com/hyperledger/fabric-sdk-go/pkg/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/msp/test/mockmsp"
 )

var (DefaultHome = os.ExpandEnv("$PWD/CONFIG"))
var caServerURL string
var caServer = &mockmsp.MockFabricCAServer{}
const (
caServerURLListen = "http://localhost:7054"
configFile        = "fabric-ca-server-config.yaml"
)

type nwConfig struct {
CertificateAuthorities map[string]msp.CAConfig
 }

type clientFixture struct {
cryptoSuiteConfig core.CryptoSuiteConfig
identityConfig    mspid.IdentityConfig
}

func main() {

// Initiate the sdk using the config file
client := clientFixture{}
sdk := client.setup()
//create the CA instance
c, err := clientmsp.New(sdk.Context())
if err != nil {
    fmt.Println("failed to create msp client", err)
    return
}
fmt.Println("New client instance created", c)
}

func (f *clientFixture) setup() *fabsdk.FabricSDK {
var lis net.Listener
var err error
if !caServer.Running() {
    lis, err = net.Listen("tcp", strings.TrimPrefix(caServerURLListen, 
  "http://"))
    if err != nil {
        panic(fmt.Sprintf("Error starting CA Server %s", err))
    }

    caServerURL = "http://" + lis.Addr().String()
}

configPath := filepath.Join(DefaultHome, configFile)
backend, err := config.FromFile(configPath)()
if err != nil {
    fmt.Println(err)
}
configProvider := func() ([]core.ConfigBackend, error) {
    return backend, nil
}

// Instantiate the SDK
sdk, err := fabsdk.New(configProvider)
if err != nil {
    fmt.Println(err)
}

configBackend, err := sdk.Config()
if err != nil {
    panic(fmt.Sprintf("Failed to get config: %s", err))
}

f.cryptoSuiteConfig = cryptosuite.ConfigFromBackend(configBackend)
f.identityConfig, _ = msp.ConfigFromBackend(configBackend)
if err != nil {
    fmt.Println(err)
}
ctxProvider := sdk.Context()
ctx, err := ctxProvider()
if err != nil {
    fmt.Println(err)
}

// Start Http Server if it's not running
if !caServer.Running() {
    caServer.Start(lis, ctx.CryptoSuite())
}
return sdk
}

1 Ответ

0 голосов
/ 11 октября 2019

import mspclient

mspclient "github.com/hyperledger/fabric-sdk-go/pkg/client/msp"
          "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"

    mspClient, err := mspclient.New(
        *fabsdk.FabricSDK.Context(),
        mspclient.WithOrg(OrgName),
    )
    if err != nil {
        return mspClient, errors.WithMessage(err, "failed to create MSP client")
    }

После этого вы можете использовать следующие услуги

    err = mspClient.Enroll("Admin@org1",
        msp.WithSecret("Admin@org1"),
        msp.WithProfile("tls"),
    )
    if err != nil {
        return errors.WithMessage(err, "failed to register identity")
    }
...