added existing key option

This commit is contained in:
ston1th 2023-04-01 13:10:04 +02:00
commit 13e4e4de07
6 changed files with 112 additions and 14 deletions

View file

@ -22,15 +22,18 @@ const (
type NewKey struct {
Name string `json:"name"`
Existing string `json:"existing,omitempty"`
Size int `json:"size"`
Encoding core.Encoding `json:"encoding"`
Type core.Type `json:"type"`
}
var (
ErrEmptyKeyName = errors.New("empty key name")
ErrInvalidKeyName = errors.New("invalid key name")
ErrInvalidKeySize = errors.New("invalid key size")
ErrEmptyKeyName = errors.New("empty key name")
ErrExistingKeyType = errors.New("invalid key type for existing key")
ErrExistingKeyEncoding = errors.New("invalid key encoding for existing key")
ErrInvalidKeyName = errors.New("invalid key name")
ErrInvalidKeySize = errors.New("invalid key size")
)
const (
@ -42,6 +45,15 @@ func (nk NewKey) Validate() error {
if nk.Name == "" {
return ErrEmptyKeyName
}
if nk.Existing != "" {
if nk.Type == core.Xor {
return ErrExistingKeyType
}
_, err := hex.DecodeString(nk.Existing)
if err != nil {
return ErrExistingKeyEncoding
}
}
if core.NameRe.MatchString(nk.Name) {
return ErrInvalidKeyName
}

View file

@ -43,7 +43,7 @@ func newHandler(ctx *types.Context) {
ctx.Err(types.ErrInvalid)
return
}
key, err := ctx.Data.DB.CreateKey(newKey.Name, newKey.Size, newKey.Encoding, newKey.Type)
key, err := ctx.Data.DB.CreateKey(newKey.Name, newKey.Existing, newKey.Size, newKey.Encoding, newKey.Type)
if err != nil {
ctx.Log.Error(err, "error writing key", "name", newKey.Name)
ctx.Err(types.ErrISE)