added shamir keys

This commit is contained in:
ston1th 2023-03-20 21:18:44 +01:00
commit be0f532628
14 changed files with 238 additions and 43 deletions

View file

@ -36,6 +36,18 @@ func (e Encoding) EncodeToString(src []byte) string {
return hex.EncodeToString(src)
}
func (e Encoding) Decode(src string) ([]byte, error) {
switch e {
case Base32:
return b32raw.DecodeString(src)
case Base64:
return base64.RawStdEncoding.DecodeString(src)
case Base64URL:
return base64.RawURLEncoding.DecodeString(src)
}
return hex.DecodeString(src)
}
func EncodingFromString(e string) Encoding {
switch e {
case "base32":

View file

@ -20,6 +20,7 @@ type Key struct {
Created int64
Size int
Encoding Encoding
Type Type
Key string
}

9
pkg/core/tablewriter.go Normal file
View file

@ -0,0 +1,9 @@
// Copyright (C) 2023 Marius Schellenberger
package core
type TableWriter interface {
Len() int
Fields() string
Values() []string
}

55
pkg/core/type.go Normal file
View file

@ -0,0 +1,55 @@
// Copyright (C) 2023 Marius Schellenberger
package core
import (
"bytes"
"github.com/hashicorp/vault/shamir"
)
type Type int
func (t Type) String() string {
switch t {
case Shamir:
return "shamir"
}
return "plain"
}
func (t Type) Decode(src []byte) ([]byte, error) {
switch t {
case Shamir:
plen := len(src) / 2
part1 := src[0:plen]
part2 := src[plen:]
return shamir.Combine([][]byte{part1, part2})
}
return src, nil
}
func (t Type) Encode(src []byte) ([]byte, error) {
switch t {
case Shamir:
parts, err := shamir.Split(src, 2, 2)
if err != nil {
return nil, err
}
return bytes.Join(parts, nil), nil
}
return src, nil
}
func TypeFromString(t string) Type {
switch t {
case "shamir":
return Shamir
}
return Plain
}
const (
Plain Type = iota
Shamir
)