@@ -7,9 +7,6 @@ SPDX-License-Identifier: Apache-2.0
77package config
88
99import (
10- "crypto/ecdsa"
11- "crypto/x509"
12- "encoding/pem"
1310 "fmt"
1411 "os"
1512 "path/filepath"
@@ -249,6 +246,7 @@ func (config *Configuration) ExtractRouterConfig(configBlock *common.Block) *nod
249246 ListenAddress : config .LocalConfig .NodeLocalConfig .GeneralConfig .ListenAddress + ":" + strconv .Itoa (int (config .LocalConfig .NodeLocalConfig .GeneralConfig .ListenPort )),
250247 ConfigStorePath : config .LocalConfig .NodeLocalConfig .FileStore .Path ,
251248 Shards : config .ExtractShards (),
249+ Consenter : config .ExtractConsenterInParty (),
252250 NumOfConnectionsForBatcher : config .LocalConfig .NodeLocalConfig .RouterParams .NumberOfConnectionsPerBatcher ,
253251 NumOfgRPCStreamsPerConnection : config .LocalConfig .NodeLocalConfig .RouterParams .NumberOfStreamsPerConnection ,
254252 UseTLS : config .LocalConfig .TLSConfig .Enabled ,
@@ -318,6 +316,7 @@ func (config *Configuration) ExtractConsenterConfig() *nodeconfig.ConsenterNodeC
318316 consenterConfig := & nodeconfig.ConsenterNodeConfig {
319317 Shards : config .ExtractShards (),
320318 Consenters : config .ExtractConsenters (),
319+ Router : config .ExtractRouterInParty (),
321320 Directory : config .LocalConfig .NodeLocalConfig .FileStore .Path ,
322321 ListenAddress : config .LocalConfig .NodeLocalConfig .GeneralConfig .ListenAddress + ":" + strconv .Itoa (int (config .LocalConfig .NodeLocalConfig .GeneralConfig .ListenPort )),
323322 PartyId : config .LocalConfig .NodeLocalConfig .PartyID ,
@@ -372,22 +371,7 @@ func (config *Configuration) ExtractShards() []nodeconfig.ShardInfo {
372371 for _ , batcher := range party .BatchersConfig {
373372 shardId := types .ShardID (batcher .ShardID )
374373
375- // Fetch public key from signing certificate
376- // NOTE: ARMA's new configuration uses certificates, which inherently contain the public key, instead of a separate public key field.
377- // To ensure backward compatibility until the full new config integration, the public key it enabled.
378- block , _ := pem .Decode (batcher .SignCert )
379- if block == nil || block .Bytes == nil {
380- panic ("Failed decoding batcher signing certificate" )
381- }
382-
383- var pemPublicKey []byte
384- if block .Type == "CERTIFICATE" {
385- pemPublicKey = blockToPublicKey (block )
386- }
387-
388- if block .Type == "PUBLIC KEY" {
389- pemPublicKey = batcher .SignCert
390- }
374+ pemPublicKey := utils .GetPublicKeyFromCertificate (batcher .SignCert )
391375
392376 batcher := nodeconfig.BatcherInfo {
393377 PartyID : types .PartyID (party .PartyID ),
@@ -425,22 +409,7 @@ func (config *Configuration) ExtractConsenters() []nodeconfig.ConsenterInfo {
425409 tlsCACertsCollection = append (tlsCACertsCollection , ca )
426410 }
427411
428- // Fetch public key from signing certificate
429- // NOTE: ARMA's new configuration now uses certificates, which inherently contain the public key, instead of a separate public key field.
430- // To ensure backward compatibility until the full new config integration, the public key it enabled.
431- block , _ := pem .Decode (party .ConsenterConfig .SignCert )
432- if block == nil || block .Bytes == nil {
433- panic ("Failed decoding consenter signing certificate" )
434- }
435-
436- var pemPublicKey []byte
437- if block .Type == "CERTIFICATE" {
438- pemPublicKey = blockToPublicKey (block )
439- }
440-
441- if block .Type == "PUBLIC KEY" {
442- pemPublicKey = party .ConsenterConfig .SignCert
443- }
412+ pemPublicKey := utils .GetPublicKeyFromCertificate (party .ConsenterConfig .SignCert )
444413
445414 consenterInfo := nodeconfig.ConsenterInfo {
446415 PartyID : types .PartyID (party .PartyID ),
@@ -454,26 +423,28 @@ func (config *Configuration) ExtractConsenters() []nodeconfig.ConsenterInfo {
454423 return consenters
455424}
456425
457- func blockToPublicKey (block * pem.Block ) []byte {
458- cert , err := x509 .ParseCertificate (block .Bytes )
459- if err != nil {
460- panic (fmt .Sprintf ("Failed parsing consenter signing certificate: %v" , err ))
461- }
426+ func (config * Configuration ) ExtractRouterInParty () nodeconfig.RouterInfo {
427+ partyID := config .LocalConfig .NodeLocalConfig .PartyID
428+ party := config .SharedConfig .PartiesConfig [partyID - 1 ]
429+ routerConfig := party .RouterConfig
462430
463- pubKey , ok := cert . PublicKey .( * ecdsa. PublicKey )
464- if ! ok {
465- panic ( fmt . Sprintf ( "Failed parsing consenter public key: %v" , err ) )
431+ var tlsCACertsCollection []nodeconfig. RawBytes
432+ for _ , ca := range party . TLSCACerts {
433+ tlsCACertsCollection = append ( tlsCACertsCollection , ca )
466434 }
467435
468- publicKeyBytes , err := x509 .MarshalPKIXPublicKey (pubKey )
469- if err != nil {
470- panic (fmt .Sprintf ("Failed marshaling consenter public key: %v" , err ))
436+ routerInfo := nodeconfig.RouterInfo {
437+ PartyID : partyID ,
438+ Endpoint : routerConfig .Host + ":" + strconv .Itoa (int (routerConfig .Port )),
439+ TLSCACerts : tlsCACertsCollection ,
440+ TLSCert : routerConfig .TlsCert ,
471441 }
472442
473- pemPublicKey := pem .EncodeToMemory (& pem.Block {
474- Type : "PUBLIC KEY" ,
475- Bytes : publicKeyBytes ,
476- })
443+ return routerInfo
444+ }
477445
478- return pemPublicKey
446+ func (config * Configuration ) ExtractConsenterInParty () nodeconfig.ConsenterInfo {
447+ partyID := config .LocalConfig .NodeLocalConfig .PartyID
448+ consenterInfos := config .ExtractConsenters ()
449+ return consenterInfos [partyID - 1 ]
479450}
0 commit comments