this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

crypto: helper CLI for generating private keys

+56
+56
atproto/crypto/cmd/atp-crypto/main.go
··· 1 + package main 2 + 3 + import ( 4 + "fmt" 5 + "log/slog" 6 + "os" 7 + 8 + "github.com/bluesky-social/indigo/atproto/crypto" 9 + 10 + "github.com/urfave/cli/v2" 11 + ) 12 + 13 + func main() { 14 + app := cli.App{ 15 + Name: "atp-crypto", 16 + Usage: "informal debugging CLI tool for atproto key and cryptography", 17 + } 18 + app.Commands = []*cli.Command{ 19 + &cli.Command{ 20 + Name: "generate", 21 + Usage: "create a new private key", 22 + Flags: []cli.Flag{ 23 + &cli.BoolFlag{ 24 + Name: "p256", 25 + Usage: "generate a P-256 / secp256r1 / ES256 private key (default)", 26 + }, 27 + &cli.BoolFlag{ 28 + Name: "k256", 29 + Usage: "generate a K-256 / secp256k1 / ES256K private key", 30 + }, 31 + }, 32 + 33 + Action: runGenerate, 34 + }, 35 + } 36 + h := slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelDebug}) 37 + slog.SetDefault(slog.New(h)) 38 + app.RunAndExitOnError() 39 + } 40 + 41 + func runGenerate(cctx *cli.Context) error { 42 + if cctx.Bool("k256") { 43 + priv, err := crypto.GeneratePrivateKeyK256() 44 + if err != nil { 45 + return err 46 + } 47 + fmt.Println(priv.Multibase()) 48 + } else { 49 + priv, err := crypto.GeneratePrivateKeyP256() 50 + if err != nil { 51 + return err 52 + } 53 + fmt.Println(priv.Multibase()) 54 + } 55 + return nil 56 + }