github.com/inklabsfoundation/inkchain@v0.17.1-0.20181025012015-c3cef8062f19/peer/channel/signconfigtx.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package channel
     8  
     9  import (
    10  	"io/ioutil"
    11  
    12  	"github.com/inklabsfoundation/inkchain/protos/utils"
    13  
    14  	"github.com/spf13/cobra"
    15  )
    16  
    17  func signconfigtxCmd(cf *ChannelCmdFactory) *cobra.Command {
    18  	signconfigtxCmd := &cobra.Command{
    19  		Use:   "signconfigtx",
    20  		Short: "Signs a configtx update.",
    21  		Long:  "Signs the supplied configtx update file in place on the filesystem. Requires '-f'.",
    22  		RunE: func(cmd *cobra.Command, args []string) error {
    23  			return sign(cmd, args, cf)
    24  		},
    25  	}
    26  	flagList := []string{
    27  		"file",
    28  	}
    29  	attachFlags(signconfigtxCmd, flagList)
    30  
    31  	return signconfigtxCmd
    32  }
    33  
    34  func sign(cmd *cobra.Command, args []string, cf *ChannelCmdFactory) error {
    35  	if channelTxFile == "" {
    36  		return InvalidCreateTx("No configtx file name supplied")
    37  	}
    38  
    39  	var err error
    40  	if cf == nil {
    41  		cf, err = InitCmdFactory(EndorserNotRequired, OrdererNotRequired)
    42  		if err != nil {
    43  			return err
    44  		}
    45  	}
    46  
    47  	fileData, err := ioutil.ReadFile(channelTxFile)
    48  	if err != nil {
    49  		return ConfigTxFileNotFound(err.Error())
    50  	}
    51  
    52  	ctxEnv, err := utils.UnmarshalEnvelope(fileData)
    53  	if err != nil {
    54  		return err
    55  	}
    56  
    57  	sCtxEnv, err := sanityCheckAndSignConfigTx(ctxEnv)
    58  	if err != nil {
    59  		return err
    60  	}
    61  
    62  	sCtxEnvData := utils.MarshalOrPanic(sCtxEnv)
    63  
    64  	return ioutil.WriteFile(channelTxFile, sCtxEnvData, 0660)
    65  }