Skip to content

Commit

Permalink
Chan.Part.API IT: Join app channel at genesis block member (hyperledg…
Browse files Browse the repository at this point in the history
…er#1465)

Single node raft for now. Multi node raft to follow.

Also some related refactoring/addition of helper functions for
certificates, private keys, and addresses.

FAB-18019

Signed-off-by: Will Lahti <[email protected]>
  • Loading branch information
wlahti committed Jul 5, 2020
1 parent 79dee35 commit 2dedde2
Show file tree
Hide file tree
Showing 9 changed files with 610 additions and 268 deletions.
73 changes: 9 additions & 64 deletions integration/configtx/configtx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,8 @@ SPDX-License-Identifier: Apache-2.0
package configtx

import (
"crypto"
"crypto/x509"
"encoding/pem"
"io/ioutil"
"net"
"os"
"strconv"
"syscall"
"time"

Expand All @@ -39,7 +34,7 @@ var _ = Describe("ConfigTx", func() {

BeforeEach(func() {
var err error
testDir, err = ioutil.TempDir("", "config")
testDir, err = ioutil.TempDir("", "configtx")
Expect(err).NotTo(HaveOccurred())

client, err = docker.NewClientFromEnv()
Expand Down Expand Up @@ -155,7 +150,7 @@ var _ = Describe("ConfigTx", func() {
oConfig.BatchTimeout = 2 * time.Second
err = o.SetConfiguration(oConfig)
Expect(err).NotTo(HaveOccurred())
host, port := ordererHostPort(network, orderer)
host, port := OrdererHostPort(network, orderer)
err = o.Organization(orderer.Organization).SetEndpoint(configtx.Address{Host: host, Port: port + 1})
Expect(err).NotTo(HaveOccurred())

Expand All @@ -165,8 +160,8 @@ var _ = Describe("ConfigTx", func() {

By("creating a detached signature for the orderer")
signingIdentity := configtx.SigningIdentity{
Certificate: parseOrdererAdminX509Certificate(network, orderer),
PrivateKey: parseOrdererAdminPrivateKey(network, orderer),
Certificate: nwo.ParseCertificate(network.OrdererUserCert(orderer, "Admin")),
PrivateKey: nwo.ParsePrivateKey(network.OrdererUserKey(orderer, "Admin")),
MSPID: network.Organization(orderer.Organization).MSPID,
}
signature, err := signingIdentity.CreateConfigSignature(configUpdate)
Expand Down Expand Up @@ -219,8 +214,8 @@ var _ = Describe("ConfigTx", func() {
signatures := make([]*common.ConfigSignature, len(testPeers))
for i, p := range testPeers {
signingIdentity := configtx.SigningIdentity{
Certificate: parsePeerAdminX509Certificate(network, p),
PrivateKey: parsePeerAdminPrivateKey(network, p),
Certificate: nwo.ParseCertificate(network.PeerUserCert(p, "Admin")),
PrivateKey: nwo.ParsePrivateKey(network.PeerUserKey(p, "Admin")),
MSPID: network.Organization(p.Organization).MSPID,
}
signingIdentities[i] = signingIdentity
Expand Down Expand Up @@ -257,7 +252,7 @@ var _ = Describe("ConfigTx", func() {
peerOrg := c.Application().Organization(peer.Organization)

By("adding the anchor peer for " + peer.Organization)
host, port := peerHostPort(network, peer)
host, port := PeerHostPort(network, peer)
err = peerOrg.AddAnchorPeer(configtx.Address{Host: host, Port: port})
Expect(err).NotTo(HaveOccurred())

Expand All @@ -267,8 +262,8 @@ var _ = Describe("ConfigTx", func() {

By("creating a detached signature")
signingIdentity := configtx.SigningIdentity{
Certificate: parsePeerAdminX509Certificate(network, peer),
PrivateKey: parsePeerAdminPrivateKey(network, peer),
Certificate: nwo.ParseCertificate(network.PeerUserCert(peer, "Admin")),
PrivateKey: nwo.ParsePrivateKey(network.PeerUserKey(peer, "Admin")),
MSPID: network.Organization(peer.Organization).MSPID,
}
signature, err := signingIdentity.CreateConfigSignature(configUpdate)
Expand Down Expand Up @@ -296,53 +291,3 @@ var _ = Describe("ConfigTx", func() {
}
})
})

func parsePeerAdminX509Certificate(n *nwo.Network, p *nwo.Peer) *x509.Certificate {
return parseCertificate(n.PeerUserCert(p, "Admin"))
}

func parseOrdererAdminX509Certificate(n *nwo.Network, o *nwo.Orderer) *x509.Certificate {
return parseCertificate(n.OrdererUserCert(o, "Admin"))
}

func parseCertificate(filename string) *x509.Certificate {
certBytes, err := ioutil.ReadFile(filename)
Expect(err).NotTo(HaveOccurred())
pemBlock, _ := pem.Decode(certBytes)
cert, err := x509.ParseCertificate(pemBlock.Bytes)
Expect(err).NotTo(HaveOccurred())
return cert
}

func parsePeerAdminPrivateKey(n *nwo.Network, p *nwo.Peer) crypto.PrivateKey {
return parsePrivateKey(n.PeerUserKey(p, "Admin"))
}

func parseOrdererAdminPrivateKey(n *nwo.Network, o *nwo.Orderer) crypto.PrivateKey {
return parsePrivateKey(n.OrdererUserKey(o, "Admin"))
}

func parsePrivateKey(filename string) crypto.PrivateKey {
pkBytes, err := ioutil.ReadFile(filename)
Expect(err).NotTo(HaveOccurred())
pemBlock, _ := pem.Decode(pkBytes)
privateKey, err := x509.ParsePKCS8PrivateKey(pemBlock.Bytes)
Expect(err).NotTo(HaveOccurred())
return privateKey
}

func peerHostPort(n *nwo.Network, p *nwo.Peer) (string, int) {
return splitHostPort(n.PeerAddress(p, nwo.ListenPort))
}

func ordererHostPort(n *nwo.Network, o *nwo.Orderer) (string, int) {
return splitHostPort(n.OrdererAddress(o, nwo.ListenPort))
}

func splitHostPort(address string) (string, int) {
host, port, err := net.SplitHostPort(address)
Expect(err).NotTo(HaveOccurred())
portInt, err := strconv.Atoi(port)
Expect(err).NotTo(HaveOccurred())
return host, portInt
}
34 changes: 34 additions & 0 deletions integration/configtx/host_port.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
Copyright IBM Corp All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/

package configtx

import (
"net"
"strconv"

"github.com/hyperledger/fabric/integration/nwo"
. "github.com/onsi/gomega"
)

// PeerHostPort returns the host name and port number for the specified peer.
func PeerHostPort(n *nwo.Network, p *nwo.Peer) (string, int) {
return splitHostPort(n.PeerAddress(p, nwo.ListenPort))
}

// OrdererHostPort returns the host name and port number for the specified
// orderer.
func OrdererHostPort(n *nwo.Network, o *nwo.Orderer) (string, int) {
return splitHostPort(n.OrdererAddress(o, nwo.ListenPort))
}

func splitHostPort(address string) (string, int) {
host, port, err := net.SplitHostPort(address)
Expect(err).NotTo(HaveOccurred())
portInt, err := strconv.Atoi(port)
Expect(err).NotTo(HaveOccurred())
return host, portInt
}
Loading

0 comments on commit 2dedde2

Please sign in to comment.