Skip to content

Commit

Permalink
Merge branch 'feat/wire-v2-handlers' of github.com-randy:cosmos/cosmo…
Browse files Browse the repository at this point in the history
…s-sdk into feat/wire-v2-handlers
  • Loading branch information
Randy Grok committed Oct 16, 2024
2 parents 3608feb + a8a173e commit c700ad9
Show file tree
Hide file tree
Showing 77 changed files with 340 additions and 287 deletions.
4 changes: 2 additions & 2 deletions api/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module cosmossdk.io/api
go 1.21

require (
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.1-20240701160653-fedbb9acfd2f.1
github.com/cosmos/cosmos-proto v1.0.0-beta.5
github.com/cosmos/gogoproto v1.7.0
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142
Expand All @@ -12,7 +12,7 @@ require (
)

require (
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2 // indirect
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.1-20240130113600-88ef6483f90f.1 // indirect
github.com/google/go-cmp v0.6.0 // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/sys v0.25.0 // indirect
Expand Down
8 changes: 4 additions & 4 deletions api/go.sum
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2 h1:90/4O5QkHb8EZdA2SAhueRzYw6u5ZHCPKtReFqshnTY=
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2/go.mod h1:1+3gJj2NvZ1mTLAtHu+lMhOjGgQPiCKCeo+9MBww0Eo=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2 h1:b7EEYTUHmWSBEyISHlHvXbJPqtKiHRuUignL1tsHnNQ=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2/go.mod h1:HqcXMSa5qnNuakaMUo+hWhF51mKbcrZxGl9Vp5EeJXc=
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.1-20240701160653-fedbb9acfd2f.1 h1:DIUSA9vcIz63uUotWfbXXlwv1iTL+C0O2kEMLsnIIbc=
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.1-20240701160653-fedbb9acfd2f.1/go.mod h1:JTBMfyi+qAXUHumX+rcD2WIq9FNWmdcNh5MjBnSw0L0=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.1-20240130113600-88ef6483f90f.1 h1:F78ecjvMtgd1aZ1Aj9cvBjURxVGCYvRM+OOy5eR+pjw=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.1-20240130113600-88ef6483f90f.1/go.mod h1:zqi/LZjZhyvjCMTEVIwAf5VRlkLduuCfqmZxgoormq0=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
Expand Down
4 changes: 2 additions & 2 deletions client/v2/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ require (
)

require (
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2 // indirect
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2 // indirect
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.1-20240701160653-fedbb9acfd2f.1 // indirect
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.1-20240130113600-88ef6483f90f.1 // indirect
cosmossdk.io/collections v0.4.0 // indirect
cosmossdk.io/core/testing v0.0.0-20240923163230-04da382a9f29 // indirect
cosmossdk.io/errors v1.0.1 // indirect
Expand Down
8 changes: 4 additions & 4 deletions client/v2/go.sum
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2 h1:90/4O5QkHb8EZdA2SAhueRzYw6u5ZHCPKtReFqshnTY=
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2/go.mod h1:1+3gJj2NvZ1mTLAtHu+lMhOjGgQPiCKCeo+9MBww0Eo=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2 h1:b7EEYTUHmWSBEyISHlHvXbJPqtKiHRuUignL1tsHnNQ=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2/go.mod h1:HqcXMSa5qnNuakaMUo+hWhF51mKbcrZxGl9Vp5EeJXc=
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.1-20240701160653-fedbb9acfd2f.1 h1:DIUSA9vcIz63uUotWfbXXlwv1iTL+C0O2kEMLsnIIbc=
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.35.1-20240701160653-fedbb9acfd2f.1/go.mod h1:JTBMfyi+qAXUHumX+rcD2WIq9FNWmdcNh5MjBnSw0L0=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.1-20240130113600-88ef6483f90f.1 h1:F78ecjvMtgd1aZ1Aj9cvBjURxVGCYvRM+OOy5eR+pjw=
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.35.1-20240130113600-88ef6483f90f.1/go.mod h1:zqi/LZjZhyvjCMTEVIwAf5VRlkLduuCfqmZxgoormq0=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s=
Expand Down
1 change: 1 addition & 0 deletions collections/quad.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,7 @@ func (t quadKeyCodec[K1, K2, K3, K4]) Encode(buffer []byte, key Quad[K1, K2, K3,
}
return writtenTotal, nil
}

func (t quadKeyCodec[K1, K2, K3, K4]) Decode(buffer []byte) (int, Quad[K1, K2, K3, K4], error) {
readTotal := 0
read, key1, err := t.keyCodec1.DecodeNonTerminal(buffer)
Expand Down
16 changes: 16 additions & 0 deletions crypto/codec/pubkey.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ import (
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)

// PubKeyToProto converts a JSON public key (in `cryptokeys.JSONPubkey` format) to its corresponding protobuf public key type.
//
// Parameters:
// - pk: A `cryptokeys.JSONPubkey` containing the public key and its type.
//
// Returns:
// - cryptotypes.PubKey: The protobuf public key corresponding to the provided JSON public key.
// - error: An error if the key type is invalid or unsupported.
func PubKeyToProto(pk cryptokeys.JSONPubkey) (cryptotypes.PubKey, error) {
switch pk.KeyType {
case ed25519.PubKeyName:
Expand All @@ -30,6 +38,14 @@ func PubKeyToProto(pk cryptokeys.JSONPubkey) (cryptotypes.PubKey, error) {
}
}

// PubKeyFromProto converts a protobuf public key (in `cryptotypes.PubKey` format) to a JSON public key format (`cryptokeys.JSONPubkey`).
//
// Parameters:
// - pk: A `cryptotypes.PubKey` which is the protobuf representation of a public key.
//
// Returns:
// - cryptokeys.JSONPubkey: The JSON-formatted public key corresponding to the provided protobuf public key.
// - error: An error if the key type is invalid or unsupported.
func PubKeyFromProto(pk cryptotypes.PubKey) (cryptokeys.JSONPubkey, error) {
switch pk := pk.(type) {
case *ed25519.PubKey:
Expand Down
10 changes: 5 additions & 5 deletions crypto/hd/hdpath.go
Original file line number Diff line number Diff line change
Expand Up @@ -230,11 +230,11 @@ func derivePrivateKey(privKeyBytes, chainCode [32]byte, index uint32, harden boo
pubkeyBytes := ecPub.SerializeCompressed()
data = pubkeyBytes

/* By using btcec, we can remove the dependency on tendermint/crypto/secp256k1
pubkey := secp256k1.PrivKeySecp256k1(privKeyBytes).PubKey()
public := pubkey.(secp256k1.PubKeySecp256k1)
data = public[:]
*/
// By using btcec, we can remove the dependency on tendermint/crypto/secp256k1
// pubkey := secp256k1.PrivKeySecp256k1(privKeyBytes).PubKey()
// public := pubkey.(secp256k1.PubKeySecp256k1)
// data = public[:]

}

data = append(data, uint32ToBytes(index)...)
Expand Down
44 changes: 44 additions & 0 deletions crypto/keyring/keyring.go
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,17 @@ func (ks keystore) ImportPubKey(uid, armor string) error {
return nil
}

// Sign signs a message using the private key associated with the provided UID.
//
// Parameters:
// - uid: The unique identifier of the account/key to use for signing.
// - msg: The message or data to be signed.
// - signMode: The signing mode that specifies how the message should be signed.
//
// Returns:
// - []byte: The generated signature.
// - types.PubKey: The public key corresponding to the private key used for signing.
// - error: Any error encountered during the signing process.
func (ks keystore) Sign(uid string, msg []byte, signMode signing.SignMode) ([]byte, types.PubKey, error) {
k, err := ks.Key(uid)
if err != nil {
Expand Down Expand Up @@ -536,6 +547,19 @@ func (ks keystore) List() ([]*Record, error) {
return ks.MigrateAll()
}

// NewMnemonic generates a new mnemonic and derives a new account from it.
//
// Parameters:
// - uid: A unique identifier for the account.
// - language: The language for the mnemonic (only English is supported).
// - hdPath: The hierarchical deterministic (HD) path for key derivation.
// - bip39Passphrase: The passphrase used in conjunction with the mnemonic for BIP-39.
// - algo: The signature algorithm used for signing keys.
//
// Returns:
// - *Record: A new key record that contains the private and public key information.
// - string: The generated mnemonic phrase.
// - error: Any error encountered during the process.
func (ks keystore) NewMnemonic(uid string, language Language, hdPath, bip39Passphrase string, algo SignatureAlgo) (*Record, string, error) {
if language != English {
return nil, "", ErrUnsupportedLanguage
Expand Down Expand Up @@ -707,6 +731,15 @@ func newFileBackendKeyringConfig(name, dir string, buf io.Reader) keyring.Config
}
}

// newRealPrompt creates a password prompt function to retrieve or create a passphrase
// for the keyring system.
//
// Parameters:
// - dir: The directory where the keyhash file is stored.
// - buf: An io.Reader input, typically used for reading user input (e.g., the passphrase).
//
// Returns:
// - A function that accepts a prompt string and returns the passphrase or an error.
func newRealPrompt(dir string, buf io.Reader) func(string) (string, error) {
return func(prompt string) (string, error) {
keyhashStored := false
Expand Down Expand Up @@ -896,6 +929,7 @@ func (ks keystore) writeMultisigKey(name string, pk types.PubKey) (*Record, erro
return k, ks.writeRecord(k)
}

// MigrateAll migrates all legacy key information stored in the keystore to the new Record format.
func (ks keystore) MigrateAll() ([]*Record, error) {
keys, err := ks.db.Keys()
if err != nil {
Expand Down Expand Up @@ -1008,6 +1042,16 @@ func (ks keystore) SetItem(item keyring.Item) error {
return ks.db.Set(item)
}

// convertFromLegacyInfo converts a legacy account info (LegacyInfo) into a new Record format.
// It handles different types of legacy info and creates the corresponding Record based on the type.
//
// Parameters:
// - info: The legacy account information (LegacyInfo) that needs to be converted.
// It provides the name, public key, and other data depending on the type of account.

// Returns:
// - *Record: A pointer to the newly created Record that corresponds to the legacy account info.
// - error: An error if the conversion fails due to invalid info or an unsupported account type.
func (ks keystore) convertFromLegacyInfo(info LegacyInfo) (*Record, error) {
if info == nil {
return nil, errorsmod.Wrap(ErrLegacyToRecord, "info is nil")
Expand Down
7 changes: 7 additions & 0 deletions crypto/keyring/record.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,13 @@ func extractPrivKeyFromRecord(k *Record) (cryptotypes.PrivKey, error) {
return extractPrivKeyFromLocal(rl)
}

// extractPrivKeyFromLocal extracts the private key from a local record.
// It checks if the private key is available in the provided Record_Local instance.
// Parameters:
// - rl: A pointer to a Record_Local instance from which the private key will be extracted.
// Returns:
// - priv: The extracted cryptotypes.PrivKey if successful.
// - error: An error if the private key is not available or if the casting fails.
func extractPrivKeyFromLocal(rl *Record_Local) (cryptotypes.PrivKey, error) {
if rl.PrivKey == nil {
return nil, ErrPrivKeyNotAvailable
Expand Down
Loading

0 comments on commit c700ad9

Please sign in to comment.