* Move PubKey bech32 to legacy package and migrate the usage where possible * update /server * wip * move proto json encoding helper functions to internal * update internal/marshal * wip * update sections which needs legacybech32 * update validators output * fix conflicts * slashing update * add more tests and helper function for ANY JSON serialization * update slashing * Update function documentation * Rename code any-marshal helper functions * Update pubkey unpacking test * Update test comments * solve TestDecodeStore * solve legacytx issues * all code compiles * keyring tests * keyring cleanup * remove AssertMsg * fix some tests * fix add_ledger_test.go * update cli tests * debug cli test * rename clashed bech32 names * linter fixes * update tmservice tests * linter: update legacy deprecated checks * fix names * linting * legacybech32 pubkey type rename * fix staking client * fix test compilation * fix TestGetCmdQuerySigningInfo * rename NewIfcJSONAnyMarshaler * keyring: remove duplicated information from multinfo structure * todo cleanups * Update Changelog * remove some legacybech32 from tests * remove todos * remove printlnJSON from /server CLI and amino encoding * remove protocdc.MarshalJSON * client/show remove duplicated function * remove protocdc package * comment update * remove legacybech32.MustMarshalPubKey from a test * add todo * fix TestPublicKeyUnsafe test * review update * fix bech32 UnmarshalPubKey * Use codec.MarshalIfcJSON * fix linter issues * merging conflict: fix codec.Unmarshal calls * cleanups * Update CHANGELOG.md Co-authored-by: Aaron Craelius <aaron@regen.network> * Reword changelog updates * use pubkey.String for comparison in Test_runAddCmdLedgerWithCustomCoinType * Update GetCmdQuerySigningInfo example * cli: update keys add docs * Add errors AsOf and errors.ErrIO type * restore multisigPubKeyInfo structure bring it back to multiInfo struct * Update codec/proto_codec.go Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com> * Update crypto/keys/ed25519/ed25519_test.go Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com> * Update codec/proto_codec.go Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com> * move pubkey any marshaling tests * Apply suggestions from code review Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com> * review updates * adding missing return * errors: use IsOf instead of AsOf * keyring: add a correct check for key not found in keyring.Get * add checkKeyNotFound * fix linter issues * fix: keyring key not found check * fix keyring tests * fix linting issues * cli tests * fix: 'simd keys show <key> -p' * fix: TestVerifyMultisignature * rename keyring Bech32... functions to Mk... * fix RunAddCmd * Update pubkey display * wip * add more tests * udate keyring output tests * remove todo from ledger tests * rename MkKeyOutput * Changelog update * solve liner issues * add link to github issue Co-authored-by: Aaron Craelius <aaron@regen.network> Co-authored-by: Marie Gauthier <marie.gauthier63@gmail.com>
81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
package keys
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"path/filepath"
|
|
|
|
yaml "gopkg.in/yaml.v2"
|
|
|
|
cryptokeyring "github.com/cosmos/cosmos-sdk/crypto/keyring"
|
|
)
|
|
|
|
// available output formats.
|
|
const (
|
|
OutputFormatText = "text"
|
|
OutputFormatJSON = "json"
|
|
|
|
// defaultKeyDBName is the client's subdirectory where keys are stored.
|
|
defaultKeyDBName = "keys"
|
|
)
|
|
|
|
type bechKeyOutFn func(keyInfo cryptokeyring.Info) (cryptokeyring.KeyOutput, error)
|
|
|
|
// NewLegacyKeyBaseFromDir initializes a legacy keybase at the rootDir directory. Keybase
|
|
// options can be applied when generating this new Keybase.
|
|
func NewLegacyKeyBaseFromDir(rootDir string, opts ...cryptokeyring.KeybaseOption) (cryptokeyring.LegacyKeybase, error) {
|
|
return getLegacyKeyBaseFromDir(rootDir, opts...)
|
|
}
|
|
|
|
func getLegacyKeyBaseFromDir(rootDir string, opts ...cryptokeyring.KeybaseOption) (cryptokeyring.LegacyKeybase, error) {
|
|
return cryptokeyring.NewLegacy(defaultKeyDBName, filepath.Join(rootDir, "keys"), opts...)
|
|
}
|
|
|
|
func printKeyInfo(w io.Writer, keyInfo cryptokeyring.Info, bechKeyOut bechKeyOutFn, output string) {
|
|
ko, err := bechKeyOut(keyInfo)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
switch output {
|
|
case OutputFormatText:
|
|
printTextInfos(w, []cryptokeyring.KeyOutput{ko})
|
|
|
|
case OutputFormatJSON:
|
|
out, err := KeysCdc.MarshalJSON(ko)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fmt.Fprintln(w, string(out))
|
|
}
|
|
}
|
|
|
|
func printInfos(w io.Writer, infos []cryptokeyring.Info, output string) {
|
|
kos, err := cryptokeyring.MkAccKeysOutput(infos)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
switch output {
|
|
case OutputFormatText:
|
|
printTextInfos(w, kos)
|
|
|
|
case OutputFormatJSON:
|
|
out, err := KeysCdc.MarshalJSON(kos)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fmt.Fprintf(w, "%s", out)
|
|
}
|
|
}
|
|
|
|
func printTextInfos(w io.Writer, kos []cryptokeyring.KeyOutput) {
|
|
out, err := yaml.Marshal(&kos)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Fprintln(w, string(out))
|
|
}
|