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
}