mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-09 19:21:19 +00:00
cc1ea81d4a
* s * s * typo * typo * s * s * fixes based on PR feedback * PR feedback * reverting log changes * adding flag per feedback * conventions * main fixes * Update cmd/beacon-chain/jwt/jwt.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * Update cmd/beacon-chain/jwt/jwt.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * Update cmd/flags.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * s * tests * test attempt * test * Update cmd/beacon-chain/jwt/jwt.go Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> * err fix * s * further simplify * cleanup * namefix * tests pass * gaz * rem deadcode * Gaz * shorthand * naming * test pass * dedup * success * Ignore jwt.hex file * logrus * feedback * junk * Also check that no file was written * local run config * small fix * jwt * testfix * s * disabling test * reverting main changes * main revert * removing temp folder * comment * gaz * clarity * rem Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
72 lines
1.9 KiB
Go
72 lines
1.9 KiB
Go
package jwt
|
|
|
|
import (
|
|
"errors"
|
|
"path/filepath"
|
|
|
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
|
"github.com/prysmaticlabs/prysm/cmd"
|
|
"github.com/prysmaticlabs/prysm/crypto/rand"
|
|
"github.com/prysmaticlabs/prysm/io/file"
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
const (
|
|
secretFileName = "jwt.hex"
|
|
)
|
|
|
|
var Commands = &cli.Command{
|
|
Name: "generate-auth-secret",
|
|
Usage: "creates a random, 32 byte hex string in a plaintext file to be used for authenticating JSON-RPC requests. If no --output-file flag is defined, the file will be created in the current working directory",
|
|
Description: `creates a random, 32 byte hex string in a plaintext file to be used for authenticating JSON-RPC requests. If no --output-file flag is defined, the file will be created in the current working directory`,
|
|
Flags: cmd.WrapFlags([]cli.Flag{
|
|
cmd.JwtOutputFileFlag,
|
|
}),
|
|
Action: generateAuthSecretInFile,
|
|
}
|
|
|
|
func generateAuthSecretInFile(c *cli.Context) error {
|
|
fileName := secretFileName
|
|
specifiedFilePath := c.String(cmd.JwtOutputFileFlag.Name)
|
|
if len(specifiedFilePath) > 0 {
|
|
fileName = specifiedFilePath
|
|
}
|
|
var err error
|
|
fileName, err = file.ExpandPath(fileName)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fileDir := filepath.Dir(fileName)
|
|
exists, err := file.HasDir(fileDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if !exists {
|
|
if err := file.MkdirAll(fileDir); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
secret, err := generateRandomHexString()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := file.WriteFile(fileName, []byte(secret)); err != nil {
|
|
return err
|
|
}
|
|
logrus.Infof("Successfully wrote JSON-RPC authentication secret to file %s", fileName)
|
|
return nil
|
|
}
|
|
|
|
func generateRandomHexString() (string, error) {
|
|
secret := make([]byte, 32)
|
|
randGen := rand.NewGenerator()
|
|
n, err := randGen.Read(secret)
|
|
if err != nil {
|
|
return "", err
|
|
} else if n <= 0 {
|
|
return "", errors.New("rand: unexpected length")
|
|
}
|
|
return hexutil.Encode(secret), nil
|
|
}
|