-
Notifications
You must be signed in to change notification settings - Fork 9
/
crypto.go
50 lines (38 loc) · 1.54 KB
/
crypto.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package crypto
import (
"fmt"
"github.com/inklabs/rangedb"
)
// Encryptor defines how to encrypt/decrypt string data using base64.
type Encryptor interface {
Encrypt(key, plainText string) (string, error)
Decrypt(key, cipherText string) (string, error)
}
// EventEncryptor defines how to encrypt/decrypt a rangedb.Event
type EventEncryptor interface {
Encrypt(event rangedb.Event) error
Decrypt(event rangedb.Event) error
}
// SelfEncryptor defines how events encrypt/decrypt themselves.
type SelfEncryptor interface {
Encrypt(encryptor Encryptor) error
Decrypt(encryptor Encryptor) error
}
// KeyStore defines how encryption keys are stored. Verified by cryptotest.VerifyKeyStore.
type KeyStore interface {
Get(subjectID string) (string, error)
Set(subjectID, key string) error
Delete(subjectID string) error
}
// ErrKeyWasDeleted encryption key was removed error.
var ErrKeyWasDeleted = fmt.Errorf("removed from GDPR request")
// ErrKeyNotFound encryption key was not found error.
var ErrKeyNotFound = fmt.Errorf("key not found")
// ErrKeyExistsForSubjectID encryption key has already been set for subjectID.
var ErrKeyExistsForSubjectID = fmt.Errorf("key already exists for subjectID")
// ErrKeyAlreadyUsed encryption key has already been set for subjectID.
var ErrKeyAlreadyUsed = fmt.Errorf("encryption key already used")
// ErrInvalidKey encryption key is not valid.
var ErrInvalidKey = fmt.Errorf("invalid encryption key")
// ErrInvalidCipherText encryption cipher text is not valid.
var ErrInvalidCipherText = fmt.Errorf("invalid cipher text")