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 }