[cmd] added a bunch of bls key related flags. Next to do parsing

pull/3278/head
Jacky Wang 4 years ago
parent 64f69aa699
commit 70a4bf4782
No known key found for this signature in database
GPG Key ID: 1085CE5F4FF5842C
  1. 112
      cmd/harmony/bls.go
  2. 24
      cmd/harmony/config.go
  3. 4
      cmd/harmony/config_test.go
  4. 4
      cmd/harmony/misc.go
  5. 3
      cmd/harmony/network.go

@ -8,6 +8,8 @@ import (
"strings" "strings"
"sync" "sync"
"github.com/harmony-one/harmony/internal/cli"
"github.com/harmony-one/harmony/internal/blsgen" "github.com/harmony-one/harmony/internal/blsgen"
nodeconfig "github.com/harmony-one/harmony/internal/configs/node" nodeconfig "github.com/harmony-one/harmony/internal/configs/node"
"github.com/harmony-one/harmony/multibls" "github.com/harmony-one/harmony/multibls"
@ -18,7 +20,6 @@ var (
blsFolder = flag.String("blsfolder", ".hmy/blskeys", "The folder that stores the bls keys and corresponding passphrases; e.g. <blskey>.key and <blskey>.pass; all bls keys mapped to same shard") blsFolder = flag.String("blsfolder", ".hmy/blskeys", "The folder that stores the bls keys and corresponding passphrases; e.g. <blskey>.key and <blskey>.pass; all bls keys mapped to same shard")
maxBLSKeysPerNode = flag.Int("max_bls_keys_per_node", 10, "Maximum number of bls keys allowed per node (default 4)") maxBLSKeysPerNode = flag.Int("max_bls_keys_per_node", 10, "Maximum number of bls keys allowed per node (default 4)")
// TODO(jacky): rename it to a better name with cobra alias
blsPass = flag.String("blspass", "default", "The source for bls passphrases. (default, no-prompt, prompt, file:$PASS_FILE, none)") blsPass = flag.String("blspass", "default", "The source for bls passphrases. (default, no-prompt, prompt, file:$PASS_FILE, none)")
persistPass = flag.Bool("save-passphrase", false, "Whether the prompt passphrase is saved after prompt.") persistPass = flag.Bool("save-passphrase", false, "Whether the prompt passphrase is saved after prompt.")
awsConfigSource = flag.String("aws-config-source", "default", "The source for aws config. (default, prompt, file:$CONFIG_FILE, none)") awsConfigSource = flag.String("aws-config-source", "default", "The source for aws config. (default, prompt, file:$CONFIG_FILE, none)")
@ -29,6 +30,115 @@ var (
onceLoadBLSKey sync.Once onceLoadBLSKey sync.Once
) )
var blsFlags = []cli.Flag{
blsDirFlag,
blsKeyFilesFlag,
maxBLSKeyFilesFlag,
passEnabledFlag,
passSrcTypeFlag,
passSrcFileFlag,
passSaveFlag,
kmsEnabledFlag,
kmsConfigSrcTypeFlag,
kmsConfigFileFlag,
legacyBLSKeyFileFlag,
legacyBLSFolderFlag,
legacyBLSKeysPerNodeFlag,
legacyBLSPassFlag,
legacyBLSPersistPassFlag,
legacyKMSConfigSourceFlag,
}
var (
blsDirFlag = cli.StringFlag{
Name: "bls.dir",
Usage: "directory for BLS keys",
DefValue: defaultConfig.BLSKeys.KeyDir,
}
blsKeyFilesFlag = cli.StringSliceFlag{
Name: "bls.keys",
Usage: "a list of BLS key files (separated by ,)",
DefValue: defaultConfig.BLSKeys.KeyFiles,
}
// TODO: shall we move this to a hard coded parameter?
maxBLSKeyFilesFlag = cli.IntFlag{
Name: "bls.maxkeys",
Usage: "maximum number of BLS keys for a node",
DefValue: defaultConfig.BLSKeys.MaxKeys,
}
passEnabledFlag = cli.BoolFlag{
Name: "bls.pass",
Usage: "whether BLS key decryption with passphrase is enabled",
DefValue: defaultConfig.BLSKeys.PassEnabled,
}
passSrcTypeFlag = cli.StringFlag{
Name: "bls.pass.src",
Usage: "source for BLS passphrase (auto, file, prompt)",
DefValue: defaultConfig.BLSKeys.PassSrcType,
}
passSrcFileFlag = cli.StringFlag{
Name: "bls.pass.file",
Usage: "the pass file used for BLS decryption. If specified, this pass file will be used for all BLS keys",
DefValue: defaultConfig.BLSKeys.PassFile,
}
passSaveFlag = cli.BoolFlag{
Name: "bls.pass.save",
Usage: "after input the BLS passphrase from console, whether to persist the input passphrases in .pass file",
DefValue: defaultConfig.BLSKeys.SavePassphrase,
}
kmsEnabledFlag = cli.BoolFlag{
Name: "bls.kms",
Usage: "whether BLS key decryption with AWS KMS service is enabled",
DefValue: defaultConfig.BLSKeys.KMSEnabled,
}
kmsConfigSrcTypeFlag = cli.StringFlag{
Name: "bls.kms.src",
Usage: "the AWS config source (region and credentials) for KMS service (shared, prompt, file)",
DefValue: defaultConfig.BLSKeys.KMSConfigSrcType,
}
kmsConfigFileFlag = cli.StringFlag{
Name: "bls.kms.config",
Usage: "json config file for KMS service (region and credentials)",
DefValue: defaultConfig.BLSKeys.KMSConfigFile,
}
legacyBLSKeyFileFlag = cli.StringSliceFlag{
Name: "blskey_file",
Usage: "The encrypted file of bls serialized private key by passphrase.",
DefValue: defaultConfig.BLSKeys.KeyFiles,
Deprecated: "use --bls.keys",
}
legacyBLSFolderFlag = cli.StringFlag{
Name: "blsfolder",
Usage: "The folder that stores the bls keys and corresponding passphrases; e.g. <blskey>.key and <blskey>.pass; all bls keys mapped to same shard",
DefValue: defaultConfig.BLSKeys.KeyDir,
Deprecated: "use --bls.dir",
}
legacyBLSKeysPerNodeFlag = cli.IntFlag{
Name: "max_bls_keys_per_node",
Usage: "Maximum number of bls keys allowed per node (default 4)",
DefValue: defaultConfig.BLSKeys.MaxKeys,
Deprecated: "use --bls.maxkeys",
}
legacyBLSPassFlag = cli.StringFlag{
Name: "blspass",
Usage: "The source for bls passphrases. (default, stdin, no-prompt, prompt, file:$PASS_FILE, none)",
DefValue: "default",
Deprecated: "use --bls.pass, --bls.pass.src, --bls.pass.file",
}
legacyBLSPersistPassFlag = cli.BoolFlag{
Name: "save-passphrase",
Usage: "Whether the prompt passphrase is saved after prompt.",
DefValue: defaultConfig.BLSKeys.SavePassphrase,
Deprecated: "use --bls.pass.save",
}
legacyKMSConfigSourceFlag = cli.StringFlag{
Name: "aws-config-source",
Usage: "The source for aws config. (default, prompt, file:$CONFIG_FILE, none)",
DefValue: "default",
Deprecated: "use --bls.kms, --bls.kms.src, --bls.kms.config",
}
)
// setupConsensusKeys load bls keys and set the keys to nodeConfig. Return the loaded public keys. // setupConsensusKeys load bls keys and set the keys to nodeConfig. Return the loaded public keys.
func setupConsensusKeys(config *nodeconfig.ConfigType) multibls.PublicKeys { func setupConsensusKeys(config *nodeconfig.ConfigType) multibls.PublicKeys {
onceLoadBLSKey.Do(func() { onceLoadBLSKey.Do(func() {

@ -19,6 +19,19 @@ var defaultConfig = hmyConfig{
IP: "127.0.0.1", IP: "127.0.0.1",
Port: nodeconfig.DefaultRPCPort, Port: nodeconfig.DefaultRPCPort,
}, },
BLSKeys: blsConfig{
KeyDir: "./hmy/blskeys",
KeyFiles: nil,
MaxKeys: 10,
PassEnabled: true,
PassSrcType: "auto",
PassFile: "",
SavePassphrase: false,
KMSEnabled: false,
KMSConfigSrcType: "shared",
KMSConfigFile: "",
},
} }
type hmyConfig struct { type hmyConfig struct {
@ -27,7 +40,7 @@ type hmyConfig struct {
P2P p2pConfig P2P p2pConfig
RPC rpcConfig RPC rpcConfig
Consensus consensusConfig Consensus consensusConfig
BLSKey blsConfig BLSKeys blsConfig
TxPool txPoolConfig TxPool txPoolConfig
Storage storageConfig Storage storageConfig
Pprof pprofConfig Pprof pprofConfig
@ -62,13 +75,16 @@ type consensusConfig struct {
type blsConfig struct { type blsConfig struct {
KeyDir string KeyDir string
KeyFiles []string KeyFiles []string
maxBLSKeys int MaxKeys int
PassEnabled bool
PassSrcType string PassSrcType string
PassFile string PassFile string
SavePassphrase bool SavePassphrase bool
KmsConfigSrcType string
KmsConfigFile string KMSEnabled bool
KMSConfigSrcType string
KMSConfigFile string
} }
type txPoolConfig struct { type txPoolConfig struct {

@ -41,8 +41,8 @@
// PassSrcType: "auto", // PassSrcType: "auto",
// PassFile: "pass.file", // PassFile: "pass.file",
// SavePassphrase: true, // SavePassphrase: true,
// KmsConfigSrcType: "shared", // KMSConfigSrcType: "shared",
// KmsConfigFile: "config.json", // KMSConfigFile: "config.json",
// }, // },
// TxPool: txPoolConfig{ // TxPool: txPoolConfig{
// BlacklistFile: ".hmy/blacklist.txt", // BlacklistFile: ".hmy/blacklist.txt",

@ -5,7 +5,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
// miscFlags are legacy flags that have different usage. // miscFlags are legacy flags that have multiple usage.
var miscFlags = []cli.Flag{ var miscFlags = []cli.Flag{
legacyPortFlag, legacyPortFlag,
} }
@ -19,7 +19,7 @@ var (
} }
) )
// TODO: move all port manipulation +500 -1000 logic here // TODO: move all port manipulation +500 -3000 logic here
func applyMiscFlags(cmd *cobra.Command, config *hmyConfig) { func applyMiscFlags(cmd *cobra.Command, config *hmyConfig) {
fs := cmd.Flags() fs := cmd.Flags()

@ -34,6 +34,7 @@ var (
Name: "dns.zone", Name: "dns.zone",
Usage: "use customized peers from the zone for state syncing", Usage: "use customized peers from the zone for state syncing",
} }
// TODO: 9500 as default
dnsPortFlag = cli.IntFlag{ dnsPortFlag = cli.IntFlag{
Name: "dns.port", Name: "dns.port",
DefValue: nodeconfig.DefaultDNSPort, DefValue: nodeconfig.DefaultDNSPort,
@ -187,7 +188,7 @@ var rpcFlags = []cli.Flag{
rpcIPFlag, rpcIPFlag,
rpcPortFlag, rpcPortFlag,
legacyRPCIPFlag, legacyRPCIPFlag,
legacyPublicRPCFlag legacyPublicRPCFlag,
} }
var ( var (

Loading…
Cancel
Save