40 lines
717 B
Go
40 lines
717 B
Go
package aecmk
|
|
|
|
import "fmt"
|
|
|
|
// Operation specifies the action that returned an error
|
|
type Operation int
|
|
|
|
const (
|
|
Decryption Operation = iota
|
|
Encryption
|
|
Validation
|
|
)
|
|
|
|
// Error is the type of all errors returned by key encryption providers
|
|
type Error struct {
|
|
Operation Operation
|
|
err error
|
|
msg string
|
|
}
|
|
|
|
func (e *Error) Error() string {
|
|
return e.msg
|
|
}
|
|
|
|
func (e *Error) Unwrap() error {
|
|
return e.err
|
|
}
|
|
|
|
func NewError(operation Operation, msg string, err error) error {
|
|
return &Error{
|
|
Operation: operation,
|
|
msg: msg,
|
|
err: err,
|
|
}
|
|
}
|
|
|
|
func KeyPathNotAllowed(path string, operation Operation) error {
|
|
return NewError(operation, fmt.Sprintf("Key path not allowed: %s", path), nil)
|
|
}
|