Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

style: enable strict gofumpt #15579

Merged
merged 2 commits into from
Mar 28, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ run:
sort-results: true
allow-parallel-runners: true
exclude-dir: testutil/testdata
concurrency: 4

linters:
disable-all: true
Expand Down Expand Up @@ -54,6 +53,10 @@ issues:
max-same-issues: 10000

linters-settings:
gofumpt:
# Choose whether to use the extra rules.
# Default: false
extra-rules: true
dogsled:
max-blank-identifiers: 3
maligned:
Expand Down
2 changes: 1 addition & 1 deletion baseapp/block_gas_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ func TestBaseApp_BlockGas(t *testing.T) {
}
}

func createTestTx(txConfig client.TxConfig, txBuilder client.TxBuilder, privs []cryptotypes.PrivKey, accNums []uint64, accSeqs []uint64, chainID string) (xauthsigning.Tx, []byte, error) {
func createTestTx(txConfig client.TxConfig, txBuilder client.TxBuilder, privs []cryptotypes.PrivKey, accNums, accSeqs []uint64, chainID string) (xauthsigning.Tx, []byte, error) {
// First round: we gather all the signer infos. We use the "set empty
// signature" hack to do that.
var sigsV2 []signing.SignatureV2
Expand Down
2 changes: 1 addition & 1 deletion client/account_retriever.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ type AccountRetriever interface {
GetAccount(clientCtx Context, addr sdk.AccAddress) (Account, error)
GetAccountWithHeight(clientCtx Context, addr sdk.AccAddress) (Account, int64, error)
EnsureExists(clientCtx Context, addr sdk.AccAddress) error
GetAccountNumberSequence(clientCtx Context, addr sdk.AccAddress) (accNum uint64, accSeq uint64, err error)
GetAccountNumberSequence(clientCtx Context, addr sdk.AccAddress) (accNum, accSeq uint64, err error)
}

var _ AccountRetriever = (*MockAccountRetriever)(nil)
Expand Down
2 changes: 1 addition & 1 deletion client/debug/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func bytesToPubkey(bz []byte, keytype string) (cryptotypes.PubKey, bool) {
// getPubKeyFromRawString returns a PubKey (PubKeyEd25519 or PubKeySecp256k1) by attempting
// to decode the pubkey string from hex, base64, and finally bech32. If all
// encodings fail, an error is returned.
func getPubKeyFromRawString(pkstr string, keytype string) (cryptotypes.PubKey, error) {
func getPubKeyFromRawString(pkstr, keytype string) (cryptotypes.PubKey, error) {
// Try hex decoding
bz, err := hex.DecodeString(pkstr)
if err == nil {
Expand Down
2 changes: 1 addition & 1 deletion client/rpc/block.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func GetChainHeight(clientCtx client.Context) (int64, error) {
// tx.height = 5 # all txs of the fifth block
//
// For more information, see the /subscribe CometBFT RPC endpoint documentation
func QueryBlocks(clientCtx client.Context, page, limit int, query string, orderBy string) (*sdk.SearchBlocksResult, error) {
func QueryBlocks(clientCtx client.Context, page, limit int, query, orderBy string) (*sdk.SearchBlocksResult, error) {
node, err := clientCtx.GetNode()
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion client/test_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func (t TestAccountRetriever) EnsureExists(_ Context, addr sdk.AccAddress) error
}

// GetAccountNumberSequence implements AccountRetriever.GetAccountNumberSequence
func (t TestAccountRetriever) GetAccountNumberSequence(_ Context, addr sdk.AccAddress) (accNum uint64, accSeq uint64, err error) {
func (t TestAccountRetriever) GetAccountNumberSequence(_ Context, addr sdk.AccAddress) (accNum, accSeq uint64, err error) {
acc, ok := t.Accounts[addr.String()]
if !ok {
return 0, 0, fmt.Errorf("account %s not found", addr)
Expand Down
2 changes: 1 addition & 1 deletion client/tx/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ func (f Factory) WithFees(fees string) Factory {
}

// WithTips returns a copy of the Factory with an updated tip.
func (f Factory) WithTips(tip string, tipper string) Factory {
func (f Factory) WithTips(tip, tipper string) Factory {
parsedTips, err := sdk.ParseCoinsNormalized(tip)
if err != nil {
panic(err)
Expand Down
8 changes: 4 additions & 4 deletions crypto/armor.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ func unarmorBytes(armorStr, blockType string) (bz []byte, header map[string]stri
// encrypt/decrypt with armor

// Encrypt and armor the private key.
func EncryptArmorPrivKey(privKey cryptotypes.PrivKey, passphrase string, algo string) string {
func EncryptArmorPrivKey(privKey cryptotypes.PrivKey, passphrase, algo string) string {
saltBytes, encBytes := encryptPrivKey(privKey, passphrase)
header := map[string]string{
"kdf": "bcrypt",
Expand All @@ -147,7 +147,7 @@ func EncryptArmorPrivKey(privKey cryptotypes.PrivKey, passphrase string, algo st
// encrypt the given privKey with the passphrase using a randomly
// generated salt and the xsalsa20 cipher. returns the salt and the
// encrypted priv key.
func encryptPrivKey(privKey cryptotypes.PrivKey, passphrase string) (saltBytes []byte, encBytes []byte) {
func encryptPrivKey(privKey cryptotypes.PrivKey, passphrase string) (saltBytes, encBytes []byte) {
saltBytes = crypto.CRandBytes(16)
key, err := bcrypt.GenerateFromPassword(saltBytes, []byte(passphrase), BcryptSecurityParameter)
if err != nil {
Expand All @@ -161,7 +161,7 @@ func encryptPrivKey(privKey cryptotypes.PrivKey, passphrase string) (saltBytes [
}

// UnarmorDecryptPrivKey returns the privkey byte slice, a string of the algo type, and an error
func UnarmorDecryptPrivKey(armorStr string, passphrase string) (privKey cryptotypes.PrivKey, algo string, err error) {
func UnarmorDecryptPrivKey(armorStr, passphrase string) (privKey cryptotypes.PrivKey, algo string, err error) {
blockType, header, encBytes, err := DecodeArmor(armorStr)
if err != nil {
return privKey, "", err
Expand Down Expand Up @@ -193,7 +193,7 @@ func UnarmorDecryptPrivKey(armorStr string, passphrase string) (privKey cryptoty
return privKey, header[headerType], err
}

func decryptPrivKey(saltBytes []byte, encBytes []byte, passphrase string) (privKey cryptotypes.PrivKey, err error) {
func decryptPrivKey(saltBytes, encBytes []byte, passphrase string) (privKey cryptotypes.PrivKey, err error) {
key, err := bcrypt.GenerateFromPassword(saltBytes, []byte(passphrase), BcryptSecurityParameter)
if err != nil {
return privKey, errorsmod.Wrap(err, "error generating bcrypt key from passphrase")
Expand Down
2 changes: 1 addition & 1 deletion crypto/armor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func TestArmorUnarmorPrivKey(t *testing.T) {
require.Contains(t, err.Error(), "unrecognized armor type")

// armor key manually
encryptPrivKeyFn := func(privKey cryptotypes.PrivKey, passphrase string) (saltBytes []byte, encBytes []byte) {
encryptPrivKeyFn := func(privKey cryptotypes.PrivKey, passphrase string) (saltBytes, encBytes []byte) {
saltBytes = cmtcrypto.CRandBytes(16)
key, err := bcrypt.GenerateFromPassword(saltBytes, []byte(passphrase), crypto.BcryptSecurityParameter)
require.NoError(t, err)
Expand Down
6 changes: 3 additions & 3 deletions crypto/hd/algo.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ const (
var Secp256k1 = secp256k1Algo{}

type (
DeriveFn func(mnemonic string, bip39Passphrase, hdPath string) ([]byte, error)
DeriveFn func(mnemonic, bip39Passphrase, hdPath string) ([]byte, error)
GenerateFn func(bz []byte) types.PrivKey
)

type WalletGenerator interface {
Derive(mnemonic string, bip39Passphrase, hdPath string) ([]byte, error)
Derive(mnemonic, bip39Passphrase, hdPath string) ([]byte, error)
Generate(bz []byte) types.PrivKey
}

Expand All @@ -43,7 +43,7 @@ func (s secp256k1Algo) Name() PubKeyType {

// Derive derives and returns the secp256k1 private key for the given seed and HD path.
func (s secp256k1Algo) Derive() DeriveFn {
return func(mnemonic string, bip39Passphrase, hdPath string) ([]byte, error) {
return func(mnemonic, bip39Passphrase, hdPath string) ([]byte, error) {
seed, err := bip39.NewSeedWithErrorChecking(mnemonic, bip39Passphrase)
if err != nil {
return nil, err
Expand Down
8 changes: 4 additions & 4 deletions crypto/hd/hdpath.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ func (p BIP44Params) String() string {
}

// ComputeMastersFromSeed returns the master secret key's, and chain code.
func ComputeMastersFromSeed(seed []byte) (secret [32]byte, chainCode [32]byte) {
func ComputeMastersFromSeed(seed []byte) (secret, chainCode [32]byte) {
curveIdentifier := []byte("Bitcoin seed")
secret, chainCode = i64(curveIdentifier, seed)

Expand Down Expand Up @@ -216,7 +216,7 @@ func DerivePrivateKeyForPath(privKeyBytes, chainCode [32]byte, path string) ([]b
// It returns the new private key and new chain code.
// For more information on hardened keys see:
// - https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
func derivePrivateKey(privKeyBytes [32]byte, chainCode [32]byte, index uint32, harden bool) ([32]byte, [32]byte) {
func derivePrivateKey(privKeyBytes, chainCode [32]byte, index uint32, harden bool) ([32]byte, [32]byte) {
var data []byte

if harden {
Expand Down Expand Up @@ -244,7 +244,7 @@ func derivePrivateKey(privKeyBytes [32]byte, chainCode [32]byte, index uint32, h
}

// modular big endian addition
func addScalars(a []byte, b []byte) [32]byte {
func addScalars(a, b []byte) [32]byte {
aInt := new(big.Int).SetBytes(a)
bInt := new(big.Int).SetBytes(b)
sInt := new(big.Int).Add(aInt, bInt)
Expand All @@ -263,7 +263,7 @@ func uint32ToBytes(i uint32) []byte {
}

// i64 returns the two halfs of the SHA512 HMAC of key and data.
func i64(key []byte, data []byte) (il [32]byte, ir [32]byte) {
func i64(key, data []byte) (il, ir [32]byte) {
mac := hmac.New(sha512.New, key)
// sha512 does not err
_, _ = mac.Write(data)
Expand Down
2 changes: 1 addition & 1 deletion crypto/keyring/keyring_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1978,7 +1978,7 @@ func TestChangeBcrypt(t *testing.T) {
require.NoError(t, err)
}

func requireEqualRenamedKey(t *testing.T, key *Record, mnemonic *Record, nameMatch bool) {
func requireEqualRenamedKey(t *testing.T, key, mnemonic *Record, nameMatch bool) {
if nameMatch {
require.Equal(t, key.Name, mnemonic.Name)
}
Expand Down
4 changes: 2 additions & 2 deletions crypto/keys/bcrypt/bcrypt.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ type hashed struct {
// cost. If the cost given is less than MinCost, the cost will be set to
// DefaultCost, instead. Use CompareHashAndPassword, as defined in this package,
// to compare the returned hashed password with its cleartext version.
func GenerateFromPassword(salt []byte, password []byte, cost uint32) ([]byte, error) {
func GenerateFromPassword(salt, password []byte, cost uint32) ([]byte, error) {
if len(salt) != maxSaltSize {
return nil, fmt.Errorf("salt len must be %v", maxSaltSize)
}
Expand Down Expand Up @@ -129,7 +129,7 @@ func Cost(hashedPassword []byte) (uint32, error) {
return p.cost, nil
}

func newFromPassword(salt []byte, password []byte, cost uint32) (*hashed, error) {
func newFromPassword(salt, password []byte, cost uint32) (*hashed, error) {
if cost < MinCost {
cost = DefaultCost
}
Expand Down
2 changes: 1 addition & 1 deletion crypto/keys/ed25519/ed25519.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ func (pubKey *PubKey) Bytes() []byte {
return pubKey.Key
}

func (pubKey *PubKey) VerifySignature(msg []byte, sig []byte) bool {
func (pubKey *PubKey) VerifySignature(msg, sig []byte) bool {
// make sure we use the same algorithm to sign
if len(sig) != SignatureSize {
return false
Expand Down
2 changes: 1 addition & 1 deletion crypto/keys/internal/ecdsa/privkey.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func NormalizeS(sigS *big.Int) *big.Int {
// signatureRaw will serialize signature to R || S.
// R, S are padded to 32 bytes respectively.
// code roughly copied from secp256k1_nocgo.go
func signatureRaw(r *big.Int, s *big.Int) []byte {
func signatureRaw(r, s *big.Int) []byte {
rBytes := r.Bytes()
sBytes := s.Bytes()
sigBytes := make([]byte, 64)
Expand Down
2 changes: 1 addition & 1 deletion crypto/keys/internal/ecdsa/pubkey.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func (pk *PubKey) Bytes() []byte {
// where the s integer component of the signature is in the
// lower half of the curve order
// 7/21/21 - expects raw encoded signature (fixed-width 64-bytes, R || S)
func (pk *PubKey) VerifySignature(msg []byte, sig []byte) bool {
func (pk *PubKey) VerifySignature(msg, sig []byte) bool {
// check length for raw signature
// which is two 32-byte padded big.Ints
// concatenated
Expand Down
2 changes: 1 addition & 1 deletion crypto/keys/multisig/multisig.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func (m *LegacyAminoPubKey) VerifyMultisignature(getSignBytes multisigtypes.GetS
// VerifySignature implements cryptotypes.PubKey VerifySignature method,
// it panics because it can't handle MultiSignatureData
// cf. https://github.com/cosmos/cosmos-sdk/issues/7109#issuecomment-686329936
func (m *LegacyAminoPubKey) VerifySignature(msg []byte, sig []byte) bool {
func (m *LegacyAminoPubKey) VerifySignature(msg, sig []byte) bool {
panic("not implemented")
}

Expand Down
4 changes: 2 additions & 2 deletions crypto/keys/secp256k1/internal/secp256k1/secp256.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ var (
// The caller is responsible for ensuring that msg cannot be chosen
// directly by an attacker. It is usually preferable to use a cryptographic
// hash function on any input before handing it to this function.
func Sign(msg []byte, seckey []byte) ([]byte, error) {
func Sign(msg, seckey []byte) ([]byte, error) {
if len(msg) != 32 {
return nil, ErrInvalidMsgLen
}
Expand Down Expand Up @@ -102,7 +102,7 @@ func Sign(msg []byte, seckey []byte) ([]byte, error) {
// msg must be the 32-byte hash of the message to be signed.
// sig must be a 65-byte compact ECDSA signature containing the
// recovery id as the last element.
func RecoverPubkey(msg []byte, sig []byte) ([]byte, error) {
func RecoverPubkey(msg, sig []byte) ([]byte, error) {
if len(msg) != 32 {
return nil, ErrInvalidMsgLen
}
Expand Down
2 changes: 1 addition & 1 deletion crypto/keys/secp256k1/secp256k1_nocgo.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func (privKey *PrivKey) Sign(msg []byte) ([]byte, error) {

// VerifyBytes verifies a signature of the form R || S.
// It rejects signatures which are not in lower-S form.
func (pubKey *PubKey) VerifySignature(msg []byte, sigStr []byte) bool {
func (pubKey *PubKey) VerifySignature(msg, sigStr []byte) bool {
if len(sigStr) != 64 {
return false
}
Expand Down
2 changes: 1 addition & 1 deletion crypto/keys/secp256r1/pubkey.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func (m *PubKey) Type() string {
}

// VerifySignature implements SDK PubKey interface.
func (m *PubKey) VerifySignature(msg []byte, sig []byte) bool {
func (m *PubKey) VerifySignature(msg, sig []byte) bool {
return m.Key.VerifySignature(msg, sig)
}

Expand Down
2 changes: 1 addition & 1 deletion crypto/ledger/encode_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
)

func checkAminoJSON(t *testing.T, src interface{}, dst interface{}, isNil bool) {
func checkAminoJSON(t *testing.T, src, dst interface{}, isNil bool) {
// Marshal to JSON bytes.
js, err := cdc.MarshalJSON(src)
require.Nil(t, err, "%+v", err)
Expand Down
2 changes: 1 addition & 1 deletion crypto/types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ type PubKey interface {

Address() Address
Bytes() []byte
VerifySignature(msg []byte, sig []byte) bool
VerifySignature(msg, sig []byte) bool
Equals(PubKey) bool
Type() string
}
Expand Down
4 changes: 2 additions & 2 deletions crypto/xsalsa20symmetric/symmetric.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ var ErrCiphertextDecrypt = errors.New("ciphertext decryption failed")

// secret must be 32 bytes long. Use something like Sha256(Bcrypt(passphrase))
// The ciphertext is (secretbox.Overhead + 24) bytes longer than the plaintext.
func EncryptSymmetric(plaintext []byte, secret []byte) (ciphertext []byte) {
func EncryptSymmetric(plaintext, secret []byte) (ciphertext []byte) {
if len(secret) != secretLen {
panic(fmt.Sprintf("Secret must be 32 bytes long, got len %v", len(secret)))
}
Expand All @@ -36,7 +36,7 @@ func EncryptSymmetric(plaintext []byte, secret []byte) (ciphertext []byte) {

// secret must be 32 bytes long. Use something like Sha256(Bcrypt(passphrase))
// The ciphertext is (secretbox.Overhead + 24) bytes longer than the plaintext.
func DecryptSymmetric(ciphertext []byte, secret []byte) (plaintext []byte, err error) {
func DecryptSymmetric(ciphertext, secret []byte) (plaintext []byte, err error) {
if len(secret) != secretLen {
panic(fmt.Sprintf("Secret must be 32 bytes long, got len %v", len(secret)))
}
Expand Down
2 changes: 1 addition & 1 deletion internal/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
)

func CombineErrors(ret error, also error, desc string) error {
func CombineErrors(ret, also error, desc string) error {
if also != nil {
if ret != nil {
ret = fmt.Errorf("%w; %v: %v", ret, desc, also)
Expand Down
6 changes: 3 additions & 3 deletions runtime/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,22 +136,22 @@ func (s kvStoreAdapter) Has(key []byte) bool {
return has
}

func (s kvStoreAdapter) Set(key []byte, value []byte) {
func (s kvStoreAdapter) Set(key, value []byte) {
err := s.store.Set(key, value)
if err != nil {
panic(err)
}
}

func (s kvStoreAdapter) Iterator(start []byte, end []byte) dbm.Iterator {
func (s kvStoreAdapter) Iterator(start, end []byte) dbm.Iterator {
it, err := s.store.Iterator(start, end)
if err != nil {
panic(err)
}
return it
}

func (s kvStoreAdapter) ReverseIterator(start []byte, end []byte) dbm.Iterator {
func (s kvStoreAdapter) ReverseIterator(start, end []byte) dbm.Iterator {
it, err := s.store.ReverseIterator(start, end)
if err != nil {
panic(err)
Expand Down
2 changes: 1 addition & 1 deletion runtime/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type AppI interface {
LoadHeight(height int64) error

// Exports the state of the application for a genesis file.
ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string) (types.ExportedApp, error)
ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (types.ExportedApp, error)

// Helper for the simulation framework.
SimulationManager() *module.SimulationManager
Expand Down
2 changes: 1 addition & 1 deletion server/api/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ func serializeProtoMessages(messages []proto.Message) [][]byte {
}

func (s *GRPCWebTestSuite) makeRequest(
verb string, method string, headers http.Header, body io.Reader, isText bool,
verb, method string, headers http.Header, body io.Reader, isText bool,
) (*http.Response, error) {
val := s.network.Validators[0]
contentType := "application/grpc-web"
Expand Down
2 changes: 1 addition & 1 deletion server/cmd/execute.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
// server context object with the appropriate server and client objects injected
// into the underlying stdlib Context. It also handles adding core CLI flags,
// specifically the logging flags. It returns an error upon execution failure.
func Execute(rootCmd *cobra.Command, envPrefix string, defaultHome string) error {
func Execute(rootCmd *cobra.Command, envPrefix, defaultHome string) error {
// Create and set a client.Context on the command's Context. During the pre-run
// of the root command, a default initialized client.Context is provided to
// seed child command execution with values such as AccountRetriever, Keyring,
Expand Down
4 changes: 2 additions & 2 deletions server/mock/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (t testPubKey) Address() cryptotypes.Address { return t.address.Bytes() }

func (t testPubKey) Bytes() []byte { panic("not implemented") }

func (t testPubKey) VerifySignature(msg []byte, sig []byte) bool { panic("not implemented") }
func (t testPubKey) VerifySignature(msg, sig []byte) bool { panic("not implemented") }

func (t testPubKey) Equals(key cryptotypes.PubKey) bool { panic("not implemented") }

Expand All @@ -53,7 +53,7 @@ func (msg *KVStoreTx) GetSignaturesV2() (res []txsigning.SignatureV2, err error)
return res, nil
}

func (msg *KVStoreTx) VerifySignature(msgByte []byte, sig []byte) bool {
func (msg *KVStoreTx) VerifySignature(msgByte, sig []byte) bool {
panic("implement me")
}

Expand Down
Loading