-
Notifications
You must be signed in to change notification settings - Fork 16
/
sdk.go
41 lines (34 loc) · 903 Bytes
/
sdk.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
package public
import (
"crypto/rsa"
"github.com/deepvalue-network/software/libs/hash"
)
// NewAdapter returns a new encryption's public adapter
func NewAdapter() Adapter {
hashAdapter := hash.NewAdapter()
builder := NewBuilder()
return createAdapter(hashAdapter, builder)
}
// NewBuilder returns a new encryption's public builder
func NewBuilder() Builder {
return createBuilder()
}
// Adapter represents a public key adapter
type Adapter interface {
FromBytes(input []byte) (Key, error)
FromEncoded(encoded string) (Key, error)
ToBytes(key Key) []byte
ToEncoded(key Key) string
ToHash(key Key) (*hash.Hash, error)
}
// Builder represents a publicKey builder
type Builder interface {
Create() Builder
WithKey(key rsa.PublicKey) Builder
Now() (Key, error)
}
// Key represents an encryption public key
type Key interface {
Key() rsa.PublicKey
Encrypt(msg []byte) ([]byte, error)
}