From 3d4d0f501bd92e26b5fd819613e9a78afd63854d Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 15:34:58 +0800 Subject: [PATCH 01/10] enhace sign function & cmd signature --- cmd/signature/cmd.go | 160 ++++++++++++++++++++++++++++++----- cmd/signature/const.go | 16 +++- cmd/transaction/cmd.go | 9 ++ cmd/transaction/generator.go | 10 ++- common/crypto/signature.go | 35 +++++++- 5 files changed, 199 insertions(+), 31 deletions(-) diff --git a/cmd/signature/cmd.go b/cmd/signature/cmd.go index 8e2dff020..fa7bb4e94 100644 --- a/cmd/signature/cmd.go +++ b/cmd/signature/cmd.go @@ -12,58 +12,176 @@ import ( "golang.org/x/crypto/sha3" ) +type ( + // GeneratorCommands represent struct of siganture generator commands + GeneratorCommands struct { + Signature crypto.SignatureInterface + } +) + var ( + signatureCmdInstance *GeneratorCommands /* Signer command line tools */ + signatureCmd = &cobra.Command{ + Use: "signature", + Short: "signature command is a parent command for siganture stuffs", + } signerCmd = &cobra.Command{ Use: "sign", Short: "sign provided data", Long: "sign any provided data by using the --seed parameter", } + + ed25519SignerCmd = &cobra.Command{ + Use: "ed25519", + Short: "sign using ed25519 algoritmn", + Long: "sign any provided data by using the --seed parameter", + } + + verifyCmd = &cobra.Command{ + Use: "verify", + Short: "verify provided signature ", + Long: "verify provided signature against provided data using public key", + } ) func init() { - signerCmd.Flags().StringVar(&dataHex, "data-hex", "", "hex string of the data to sign") - signerCmd.Flags().StringVar(&dataBytes, "data-bytes", "", "data bytes separated by `, `. eg:"+ + signatureCmd.PersistentFlags().StringVar(&dataHex, "data-hex", "", "hex string of the data to sign") + signatureCmd.PersistentFlags().StringVar(&dataBytes, "data-bytes", "", "data bytes separated by `, `. eg:"+ "--data-bytes='1, 222, 54, 12, 32'") - signerCmd.Flags().StringVar(&seed, "seed", "", "your secret phrase") - signerCmd.Flags().BoolVar(&hash, "hash", false, "turn this flag on to hash the data before signing") + + signerCmd.PersistentFlags().StringVar(&seed, "seed", "", "your secret phrase") + signerCmd.PersistentFlags().BoolVar(&hash, "hash", false, "turn this flag on to hash the data before signing") + ed25519SignerCmd.Flags().BoolVar(&ed25519UseSpli10, "use-slip10", false, "use slip10 to generate ed25519 private key for signing") + + verifyCmd.Flags().StringVar(&signatureHex, "signature-hex", "", "hex string of the signature") + verifyCmd.Flags().StringVar(&signatureBytes, "signature-bytes", "", "signature bytes stseparated by `, `. eg:"+ + "--signature-bytes='1, 222, 54, 12, 32'") + verifyCmd.Flags().StringVar(&accountAddress, "account-address", "", "the address who sign the data") + } +// Commands return main command of signature func Commands() *cobra.Command { - signerCmd.Run = SignData - return signerCmd + if signatureCmdInstance == nil { + signatureCmdInstance = &GeneratorCommands{ + Signature: &crypto.Signature{}, + } + } + ed25519SignerCmd.Run = signatureCmdInstance.SignEd25519 + signerCmd.AddCommand(ed25519SignerCmd) + signerCmd.Run = signatureCmdInstance.SignEd25519 + signatureCmd.AddCommand(signerCmd) + + verifyCmd.Run = signatureCmdInstance.VerySiganture + signatureCmd.AddCommand(verifyCmd) + return signatureCmd } -func SignData(*cobra.Command, []string) { +// SignEd25519 is sign command hanlder +func (gc *GeneratorCommands) SignEd25519(*cobra.Command, []string) { var ( unsignedBytes []byte hashedUnsignedBytes [32]byte + accountAddress string signature []byte + err error ) + if dataHex != "" { - unsignedBytes, _ = hex.DecodeString(dataHex) - } else { - txByteCharSlice := strings.Split(dataBytes, ", ") - for _, v := range txByteCharSlice { - byteValue, err := strconv.Atoi(v) - if err != nil { - panic("failed to parse transaction bytes") - } - unsignedBytes = append(unsignedBytes, byte(byteValue)) + unsignedBytes, err = hex.DecodeString(dataHex) + if err != nil { + panic("failed to decode data hex") } + } else { + unsignedBytes = parseBytesArgs(dataBytes, ", ") + } + _, _, _, accountAddress, err = gc.Signature.GenerateAccountFromSeed( + model.SignatureType_DefaultSignature, + seed, + ed25519UseSpli10, + ) + if err != nil { + panic(err.Error()) } if hash { hashedUnsignedBytes = sha3.Sum256(unsignedBytes) - signature, _ = (&crypto.Signature{}).Sign(hashedUnsignedBytes[:], model.SignatureType_DefaultSignature, seed) - } else { - signature, _ = (&crypto.Signature{}).Sign(unsignedBytes, model.SignatureType_DefaultSignature, seed) + unsignedBytes = hashedUnsignedBytes[:] } - edUtil := crypto.NewEd25519Signature() - fmt.Printf("account-address:\t%v\n", edUtil.GetAddressFromSeed(seed)) + signature, err = gc.Signature.Sign( + unsignedBytes, + model.SignatureType_DefaultSignature, + seed, + ed25519UseSpli10, + ) + if err != nil { + panic(err.Error()) + } + + fmt.Printf("account-address:\t%v\n", accountAddress) fmt.Printf("transaction-bytes:\t%v\n", unsignedBytes) fmt.Printf("transaction-hash:\t%v\n", hex.EncodeToString(hashedUnsignedBytes[:])) fmt.Printf("signature-bytes:\t%v\n", signature) fmt.Printf("signature-hex:\t%v\n", hex.EncodeToString(signature)) } + +// VerySiganture is verify signature command hendler +func (gc *GeneratorCommands) VerySiganture(*cobra.Command, []string) { + var ( + unsignedBytes []byte + siganture []byte + failedVerifyCause = "none" + isVerified = true + err error + ) + if dataHex != "" { + unsignedBytes, err = hex.DecodeString(dataHex) + if err != nil { + panic("failed to decode data hex") + } + } else { + unsignedBytes = parseBytesArgs(dataBytes, ", ") + } + + if signatureHex != "" { + siganture, err = hex.DecodeString(signatureHex) + if err != nil { + panic("failed to decode signature hex") + } + } else { + siganture = parseBytesArgs(signatureBytes, ", ") + } + + err = gc.Signature.VerifySignature(unsignedBytes, siganture, accountAddress) + if err != nil { + failedVerifyCause = err.Error() + isVerified = false + } + + fmt.Printf("verify-status:\t%v\n", isVerified) + fmt.Printf("failed-causes:\t%v\n", failedVerifyCause) + fmt.Printf("address:\t%v\n", accountAddress) + fmt.Printf("payload-bytes:\t%v\n", unsignedBytes) + fmt.Printf("payload-hex:\t%v\n", hex.EncodeToString(unsignedBytes)) + + fmt.Printf("signature-hex:\t%v\n", hex.EncodeToString(siganture)) + fmt.Printf("signature-bytes:%v\n", siganture) + +} + +func parseBytesArgs(argsBytesString, separated string) []byte { + var ( + parsedByte []byte + byteCharSlice = strings.Split(dataBytes, separated) + ) + for _, v := range byteCharSlice { + byteValue, err := strconv.Atoi(v) + if err != nil { + panic("failed to parse data bytes") + } + parsedByte = append(parsedByte, byte(byteValue)) + } + return parsedByte +} diff --git a/cmd/signature/const.go b/cmd/signature/const.go index a92680bab..86eb5e50d 100644 --- a/cmd/signature/const.go +++ b/cmd/signature/const.go @@ -1,8 +1,16 @@ package signature var ( - seed string - dataHex string - dataBytes string - hash bool + // sign + seed string + dataHex string + dataBytes string + hash bool + senderSignatureType int32 + ed25519UseSpli10 bool + + // verify + signatureBytes string + signatureHex string + accountAddress string ) diff --git a/cmd/transaction/cmd.go b/cmd/transaction/cmd.go index b3b7a173c..2b48d97bd 100644 --- a/cmd/transaction/cmd.go +++ b/cmd/transaction/cmd.go @@ -203,6 +203,7 @@ func Commands() *cobra.Command { func (*TXGeneratorCommands) SendMoneyProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { tx := GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -223,6 +224,7 @@ func (*TXGeneratorCommands) RegisterNodeProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { var ( tx = GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -258,6 +260,7 @@ func (*TXGeneratorCommands) UpdateNodeProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { var ( tx = GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -293,6 +296,7 @@ func (*TXGeneratorCommands) UpdateNodeProcess() RunCommand { func (*TXGeneratorCommands) RemoveNodeProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { tx := GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -314,6 +318,7 @@ func (*TXGeneratorCommands) ClaimNodeProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { var ( tx = GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -347,6 +352,7 @@ func (*TXGeneratorCommands) SetupAccountDatasetProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { senderAccountAddress := crypto.NewEd25519Signature().GetAddressFromSeed(senderSeed) tx := GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -374,6 +380,7 @@ func (*TXGeneratorCommands) RemoveAccountDatasetProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { senderAccountAddress := crypto.NewEd25519Signature().GetAddressFromSeed(senderSeed) tx := GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -393,6 +400,7 @@ func (*TXGeneratorCommands) RemoveAccountDatasetProcess() RunCommand { func (*TXGeneratorCommands) EscrowApprovalProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { tx := GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, @@ -409,6 +417,7 @@ func (*TXGeneratorCommands) EscrowApprovalProcess() RunCommand { func (*TXGeneratorCommands) MultiSignatureProcess() RunCommand { return func(ccmd *cobra.Command, args []string) { tx := GenerateBasicTransaction( + senderAddress, senderSeed, senderSignatureType, version, diff --git a/cmd/transaction/generator.go b/cmd/transaction/generator.go index ae7fe042b..c44fa9be3 100644 --- a/cmd/transaction/generator.go +++ b/cmd/transaction/generator.go @@ -225,7 +225,7 @@ func GenerateTxRemoveAccountDataset( // GenerateBasicTransaction return basic transaction based on common transaction field func GenerateBasicTransaction( - senderSeed string, + senderAddress, senderSeed string, senderSignatureType int32, version uint32, timestamp, fee int64, @@ -320,7 +320,12 @@ func PrintTx(signedTxBytes []byte, outputType string) { } // GenerateSignedTxBytes retrun signed transaction bytes -func GenerateSignedTxBytes(tx *model.Transaction, senderSeed string, signatureType int32) []byte { +func GenerateSignedTxBytes( + tx *model.Transaction, + senderSeed string, + signatureType int32, + optiolSignParams ...interface{}, +) []byte { var ( transactionUtil = &transaction.Util{} txType transaction.TypeAction @@ -337,6 +342,7 @@ func GenerateSignedTxBytes(tx *model.Transaction, senderSeed string, signatureTy unsignedTxBytes, model.SignatureType(signatureType), senderSeed, + optiolSignParams, ) signedTxBytes, _ := transactionUtil.GetTransactionBytes(tx, true) return signedTxBytes diff --git a/common/crypto/signature.go b/common/crypto/signature.go index baf64c429..3ffc709c5 100644 --- a/common/crypto/signature.go +++ b/common/crypto/signature.go @@ -11,7 +11,7 @@ import ( type ( // SignatureInterface represent interface of signature SignatureInterface interface { - Sign(payload []byte, signatureType model.SignatureType, seed string) ([]byte, error) + Sign(payload []byte, signatureType model.SignatureType, seed string, optionalParams ...interface{}) ([]byte, error) SignByNode(payload []byte, nodeSeed string) []byte VerifySignature(payload, signature []byte, accountAddress string) error VerifyNodeSignature(payload, signature []byte, nodePublicKey []byte) bool @@ -34,16 +34,43 @@ func NewSignature() *Signature { // Sign accept account ID and payload to be signed then return the signature byte based on the // signature method associated with account.Type -func (*Signature) Sign(payload []byte, signatureType model.SignatureType, seed string) ([]byte, error) { +func (*Signature) Sign( + payload []byte, + signatureType model.SignatureType, + seed string, + optionalParams ...interface{}, +) ([]byte, error) { buffer := bytes.NewBuffer([]byte{}) buffer.Write(util.ConvertUint32ToBytes(uint32(signatureType))) switch signatureType { case model.SignatureType_DefaultSignature: var ( ed25519Signature = NewEd25519Signature() - accountPrivateKey = ed25519Signature.GetPrivateKeyFromSeed(seed) - signature = ed25519Signature.Sign(accountPrivateKey, payload) + accountPrivateKey []byte + useSlip10, ok bool + err error ) + if len(optionalParams) != 0 { + useSlip10, ok = optionalParams[0].(bool) + if !ok { + return nil, blocker.NewBlocker(blocker.AppErr, "failedAssertType") + } + } + if useSlip10 { + accountPrivateKey, err = ed25519Signature.GetPrivateKeyFromSeedUseSlip10(seed) + if err != nil { + return nil, blocker.NewBlocker(blocker.AppErr, err.Error()) + } + publicKey, err := ed25519Signature.GetPublicKeyFromPrivateKeyUseSlip10(accountPrivateKey) + if err != nil { + return nil, blocker.NewBlocker(blocker.AppErr, err.Error()) + } + accountPrivateKey = append(accountPrivateKey, publicKey...) + } else { + accountPrivateKey = ed25519Signature.GetPrivateKeyFromSeed(seed) + } + + signature := ed25519Signature.Sign(accountPrivateKey, payload) buffer.Write(signature) return buffer.Bytes(), nil case model.SignatureType_BitcoinSignature: From dd30fa24d7d5fb5fd249ae5a8bde1191bd058873 Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 15:38:07 +0800 Subject: [PATCH 02/10] update readme --- cmd/readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/readme.md b/cmd/readme.md index b16b0c100..32513e2de 100644 --- a/cmd/readme.md +++ b/cmd/readme.md @@ -143,3 +143,13 @@ go run main.go generate poow --node-seed "concur vocalist rotten busload gap quo ```bash go run main.go rollback blockchain --to-height 10 --db-path "../resource" --db-name "zoobc.db" ``` + +### Siganture Signing data using Ed25519 +```bash +go run main.go signature sign ed25519 --data-bytes='1, 222, 54, 12, 32' --use-slip10=true +``` + +### Signature Verifying data +```bash +go run main.go signature verify --data-bytes='1, 222, 54, 12, 32' --signature-hex=0000000063851d61318eaf923ff72457fd9b5716db9904aacbe53eb1bc25cd8a7bf2816c61402b0c52d4324e1336bae4ea28194d6f5c531292fd266e63a293519f20c20b --account-address=WI-u0jyKMGsPHk6K7eT1Utnxc6WiKehkIEs87Zf3fIsH +``` \ No newline at end of file From e94ccb2904398b6d4e14dc3255e4782fbe681a62 Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 15:49:28 +0800 Subject: [PATCH 03/10] add optioan params on GenerateSignedTxBytes --- cmd/transaction/generator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/transaction/generator.go b/cmd/transaction/generator.go index c44fa9be3..d58a0c545 100644 --- a/cmd/transaction/generator.go +++ b/cmd/transaction/generator.go @@ -342,7 +342,7 @@ func GenerateSignedTxBytes( unsignedTxBytes, model.SignatureType(signatureType), senderSeed, - optiolSignParams, + optiolSignParams..., ) signedTxBytes, _ := transactionUtil.GetTransactionBytes(tx, true) return signedTxBytes From 9f3c94f1363aa0c01ea821115a14f25ca304a5e5 Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 16:08:15 +0800 Subject: [PATCH 04/10] update comment function SignEd25519 --- cmd/signature/cmd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/signature/cmd.go b/cmd/signature/cmd.go index fa7bb4e94..3b406b52d 100644 --- a/cmd/signature/cmd.go +++ b/cmd/signature/cmd.go @@ -80,7 +80,7 @@ func Commands() *cobra.Command { return signatureCmd } -// SignEd25519 is sign command hanlder +// SignEd25519 is sign command hanlder using Ed25519 algorithm func (gc *GeneratorCommands) SignEd25519(*cobra.Command, []string) { var ( unsignedBytes []byte From 42c0210c6369ddd87fa9c0e4fc4296f422a5f2fa Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 16:12:51 +0800 Subject: [PATCH 05/10] add return err on parseBytesArgs func --- cmd/signature/cmd.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/cmd/signature/cmd.go b/cmd/signature/cmd.go index 3b406b52d..bf8e9a731 100644 --- a/cmd/signature/cmd.go +++ b/cmd/signature/cmd.go @@ -96,7 +96,10 @@ func (gc *GeneratorCommands) SignEd25519(*cobra.Command, []string) { panic("failed to decode data hex") } } else { - unsignedBytes = parseBytesArgs(dataBytes, ", ") + unsignedBytes, err = parseBytesArgs(dataBytes, ", ") + if err != nil { + panic("failed to parse data bytes") + } } _, _, _, accountAddress, err = gc.Signature.GenerateAccountFromSeed( model.SignatureType_DefaultSignature, @@ -142,7 +145,10 @@ func (gc *GeneratorCommands) VerySiganture(*cobra.Command, []string) { panic("failed to decode data hex") } } else { - unsignedBytes = parseBytesArgs(dataBytes, ", ") + unsignedBytes, err = parseBytesArgs(dataBytes, ", ") + if err != nil { + panic("failed to parse data bytes") + } } if signatureHex != "" { @@ -151,7 +157,10 @@ func (gc *GeneratorCommands) VerySiganture(*cobra.Command, []string) { panic("failed to decode signature hex") } } else { - siganture = parseBytesArgs(signatureBytes, ", ") + siganture, err = parseBytesArgs(signatureBytes, ", ") + if err != nil { + panic("failed to parse data bytes") + } } err = gc.Signature.VerifySignature(unsignedBytes, siganture, accountAddress) @@ -171,7 +180,7 @@ func (gc *GeneratorCommands) VerySiganture(*cobra.Command, []string) { } -func parseBytesArgs(argsBytesString, separated string) []byte { +func parseBytesArgs(argsBytesString, separated string) ([]byte, error) { var ( parsedByte []byte byteCharSlice = strings.Split(dataBytes, separated) @@ -179,9 +188,9 @@ func parseBytesArgs(argsBytesString, separated string) []byte { for _, v := range byteCharSlice { byteValue, err := strconv.Atoi(v) if err != nil { - panic("failed to parse data bytes") + return nil, err } parsedByte = append(parsedByte, byte(byteValue)) } - return parsedByte + return parsedByte, nil } From 0ba581065f024cf7f211bfa1055bdf90c12ffa2f Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 16:20:47 +0800 Subject: [PATCH 06/10] fix misspelling --- cmd/readme.md | 2 +- cmd/signature/cmd.go | 22 +++++++++++----------- cmd/signature/const.go | 11 +++++------ 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/cmd/readme.md b/cmd/readme.md index 32513e2de..28adcc4e4 100644 --- a/cmd/readme.md +++ b/cmd/readme.md @@ -144,7 +144,7 @@ go run main.go generate poow --node-seed "concur vocalist rotten busload gap quo go run main.go rollback blockchain --to-height 10 --db-path "../resource" --db-name "zoobc.db" ``` -### Siganture Signing data using Ed25519 +### Signature Signing data using Ed25519 ```bash go run main.go signature sign ed25519 --data-bytes='1, 222, 54, 12, 32' --use-slip10=true ``` diff --git a/cmd/signature/cmd.go b/cmd/signature/cmd.go index bf8e9a731..6a0c065d5 100644 --- a/cmd/signature/cmd.go +++ b/cmd/signature/cmd.go @@ -13,7 +13,7 @@ import ( ) type ( - // GeneratorCommands represent struct of siganture generator commands + // GeneratorCommands represent struct of signature generator commands GeneratorCommands struct { Signature crypto.SignatureInterface } @@ -26,7 +26,7 @@ var ( */ signatureCmd = &cobra.Command{ Use: "signature", - Short: "signature command is a parent command for siganture stuffs", + Short: "signature command is a parent command for signature stuffs", } signerCmd = &cobra.Command{ Use: "sign", @@ -75,7 +75,7 @@ func Commands() *cobra.Command { signerCmd.Run = signatureCmdInstance.SignEd25519 signatureCmd.AddCommand(signerCmd) - verifyCmd.Run = signatureCmdInstance.VerySiganture + verifyCmd.Run = signatureCmdInstance.VerySignature signatureCmd.AddCommand(verifyCmd) return signatureCmd } @@ -130,11 +130,11 @@ func (gc *GeneratorCommands) SignEd25519(*cobra.Command, []string) { fmt.Printf("signature-hex:\t%v\n", hex.EncodeToString(signature)) } -// VerySiganture is verify signature command hendler -func (gc *GeneratorCommands) VerySiganture(*cobra.Command, []string) { +// VerySignature is verify signature command hendler +func (gc *GeneratorCommands) VerySignature(*cobra.Command, []string) { var ( unsignedBytes []byte - siganture []byte + signature []byte failedVerifyCause = "none" isVerified = true err error @@ -152,18 +152,18 @@ func (gc *GeneratorCommands) VerySiganture(*cobra.Command, []string) { } if signatureHex != "" { - siganture, err = hex.DecodeString(signatureHex) + signature, err = hex.DecodeString(signatureHex) if err != nil { panic("failed to decode signature hex") } } else { - siganture, err = parseBytesArgs(signatureBytes, ", ") + signature, err = parseBytesArgs(signatureBytes, ", ") if err != nil { panic("failed to parse data bytes") } } - err = gc.Signature.VerifySignature(unsignedBytes, siganture, accountAddress) + err = gc.Signature.VerifySignature(unsignedBytes, signature, accountAddress) if err != nil { failedVerifyCause = err.Error() isVerified = false @@ -175,8 +175,8 @@ func (gc *GeneratorCommands) VerySiganture(*cobra.Command, []string) { fmt.Printf("payload-bytes:\t%v\n", unsignedBytes) fmt.Printf("payload-hex:\t%v\n", hex.EncodeToString(unsignedBytes)) - fmt.Printf("signature-hex:\t%v\n", hex.EncodeToString(siganture)) - fmt.Printf("signature-bytes:%v\n", siganture) + fmt.Printf("signature-hex:\t%v\n", hex.EncodeToString(signature)) + fmt.Printf("signature-bytes:%v\n", signature) } diff --git a/cmd/signature/const.go b/cmd/signature/const.go index 86eb5e50d..744d518a5 100644 --- a/cmd/signature/const.go +++ b/cmd/signature/const.go @@ -2,12 +2,11 @@ package signature var ( // sign - seed string - dataHex string - dataBytes string - hash bool - senderSignatureType int32 - ed25519UseSpli10 bool + seed string + dataHex string + dataBytes string + hash bool + ed25519UseSpli10 bool // verify signatureBytes string From 4d4c91dbb4a0f409942e9e3e10637f5039fe6fa3 Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 16:26:26 +0800 Subject: [PATCH 07/10] fix type & unused arg --- cmd/signature/cmd.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/signature/cmd.go b/cmd/signature/cmd.go index 6a0c065d5..2807a4a61 100644 --- a/cmd/signature/cmd.go +++ b/cmd/signature/cmd.go @@ -80,7 +80,7 @@ func Commands() *cobra.Command { return signatureCmd } -// SignEd25519 is sign command hanlder using Ed25519 algorithm +// SignEd25519 is sign command handler using Ed25519 algorithm func (gc *GeneratorCommands) SignEd25519(*cobra.Command, []string) { var ( unsignedBytes []byte @@ -183,7 +183,7 @@ func (gc *GeneratorCommands) VerySignature(*cobra.Command, []string) { func parseBytesArgs(argsBytesString, separated string) ([]byte, error) { var ( parsedByte []byte - byteCharSlice = strings.Split(dataBytes, separated) + byteCharSlice = strings.Split(argsBytesString, separated) ) for _, v := range byteCharSlice { byteValue, err := strconv.Atoi(v) From 1c964c275038bb88755e28cd1a30d5706869b47d Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 16:38:33 +0800 Subject: [PATCH 08/10] add some comment --- common/crypto/signature.go | 1 + 1 file changed, 1 insertion(+) diff --git a/common/crypto/signature.go b/common/crypto/signature.go index 3ffc709c5..4d4e2b687 100644 --- a/common/crypto/signature.go +++ b/common/crypto/signature.go @@ -50,6 +50,7 @@ func (*Signature) Sign( useSlip10, ok bool err error ) + // optionalParams index 0 used for flag boolean slip10 if len(optionalParams) != 0 { useSlip10, ok = optionalParams[0].(bool) if !ok { From ea3fad7382b5cdf5293571320d7a70adf6505dfa Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 16:50:15 +0800 Subject: [PATCH 09/10] fix typo :( --- cmd/signature/const.go | 2 +- cmd/transaction/generator.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/signature/const.go b/cmd/signature/const.go index 744d518a5..956b0fef5 100644 --- a/cmd/signature/const.go +++ b/cmd/signature/const.go @@ -6,7 +6,7 @@ var ( dataHex string dataBytes string hash bool - ed25519UseSpli10 bool + ed25519UseSlip10 bool // verify signatureBytes string diff --git a/cmd/transaction/generator.go b/cmd/transaction/generator.go index ab3eaa6fb..a4ee6b98c 100644 --- a/cmd/transaction/generator.go +++ b/cmd/transaction/generator.go @@ -322,7 +322,7 @@ func GenerateSignedTxBytes( tx *model.Transaction, senderSeed string, signatureType int32, - optiolSignParams ...interface{}, + optionalSignParams ...interface{}, ) []byte { var ( transactionUtil = &transaction.Util{} @@ -340,7 +340,7 @@ func GenerateSignedTxBytes( unsignedTxBytes, model.SignatureType(signatureType), senderSeed, - optiolSignParams..., + optionalSignParams..., ) signedTxBytes, _ := transactionUtil.GetTransactionBytes(tx, true) return signedTxBytes From d4815dbdd2cad6e608df51a407d3f9155bf4cfe1 Mon Sep 17 00:00:00 2001 From: Gede Sukra Widhyawan Date: Thu, 9 Apr 2020 17:05:22 +0800 Subject: [PATCH 10/10] missing flag ed25519UseSlip10 --- cmd/signature/cmd.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/signature/cmd.go b/cmd/signature/cmd.go index 2807a4a61..357ad5c44 100644 --- a/cmd/signature/cmd.go +++ b/cmd/signature/cmd.go @@ -54,7 +54,7 @@ func init() { signerCmd.PersistentFlags().StringVar(&seed, "seed", "", "your secret phrase") signerCmd.PersistentFlags().BoolVar(&hash, "hash", false, "turn this flag on to hash the data before signing") - ed25519SignerCmd.Flags().BoolVar(&ed25519UseSpli10, "use-slip10", false, "use slip10 to generate ed25519 private key for signing") + ed25519SignerCmd.Flags().BoolVar(&ed25519UseSlip10, "use-slip10", false, "use slip10 to generate ed25519 private key for signing") verifyCmd.Flags().StringVar(&signatureHex, "signature-hex", "", "hex string of the signature") verifyCmd.Flags().StringVar(&signatureBytes, "signature-bytes", "", "signature bytes stseparated by `, `. eg:"+ @@ -104,7 +104,7 @@ func (gc *GeneratorCommands) SignEd25519(*cobra.Command, []string) { _, _, _, accountAddress, err = gc.Signature.GenerateAccountFromSeed( model.SignatureType_DefaultSignature, seed, - ed25519UseSpli10, + ed25519UseSlip10, ) if err != nil { panic(err.Error()) @@ -117,7 +117,7 @@ func (gc *GeneratorCommands) SignEd25519(*cobra.Command, []string) { unsignedBytes, model.SignatureType_DefaultSignature, seed, - ed25519UseSpli10, + ed25519UseSlip10, ) if err != nil { panic(err.Error())