added shamir keys
This commit is contained in:
parent
13780f1c74
commit
be0f532628
14 changed files with 238 additions and 43 deletions
|
|
@ -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":
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ type Key struct {
|
|||
Created int64
|
||||
Size int
|
||||
Encoding Encoding
|
||||
Type Type
|
||||
Key string
|
||||
}
|
||||
|
||||
|
|
|
|||
9
pkg/core/tablewriter.go
Normal file
9
pkg/core/tablewriter.go
Normal 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
55
pkg/core/type.go
Normal 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
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue