added get loop and new key type xor

This commit is contained in:
ston1th 2023-03-22 22:52:19 +01:00
commit 9e68b46346
8 changed files with 122 additions and 24 deletions

View file

@ -20,7 +20,7 @@ import (
var fs = flag.NewFlagSet("", flag.ExitOnError)
func exit(err error) {
fmt.Println(err)
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}
@ -44,7 +44,8 @@ func Run(arg string) {
exit(err)
}
fmt.Println("Key ID:", k.ID)
if k.Type == core.Shamir {
if k.Type == core.Shamir || k.Type == core.Xor {
fmt.Println("Key Type:", k.Type)
fmt.Println("Key Share:", k.Key)
}
case "del":
@ -78,14 +79,22 @@ func Run(arg string) {
exit(err)
}
case "get":
id, share, json, err := getFlags()
id, share, loop, json, err := getFlags()
if err != nil {
exit(err)
}
c := client()
key, err := c.GetKey(ctx, id)
if err != nil {
exit(err)
var key schema.Key
if loop {
key, err = c.GetKeyLoop(ctx, id)
if err != nil {
exit(err)
}
} else {
key, err = c.GetKey(ctx, id)
if err != nil {
exit(err)
}
}
out, err := key.Print(share)
if err != nil {
@ -153,9 +162,10 @@ func idFlags(desc string) (id string, err error) {
return
}
func getFlags() (id, share string, json bool, err error) {
func getFlags() (id, share string, loop, json bool, err error) {
fs.StringVar(&id, "id", "", "key id")
fs.StringVar(&share, "share", "", "shamir key share")
fs.BoolVar(&loop, "loop", false, "ignore network errors and loop until key is received")
fs.BoolVar(&json, "json", false, "json output")
fs.Parse(os.Args[2:])
if id == "" {
@ -176,7 +186,7 @@ func outputFlags() (json bool) {
func newKeyFlags() (name, encoding, t string, size int, err error) {
fs.StringVar(&name, "name", "", "key name")
fs.StringVar(&encoding, "enc", "hex", "key encoding scheme [hex|base32|base64|base64url]")
fs.StringVar(&t, "type", "plain", "key type [plain|shamir]")
fs.StringVar(&t, "type", "plain", "key type [plain|shamir|xor]")
fs.IntVar(&size, "size", 16, "key size in bytes")
fs.Parse(os.Args[2:])
if name == "" {