-
Notifications
You must be signed in to change notification settings - Fork 0
/
parser.go
79 lines (70 loc) · 1.79 KB
/
parser.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package sharerepo
import (
"go.openfort.xyz/shield/internal/core/domain/share"
)
type parser struct {
mapEntropyDomain map[Entropy]share.Entropy
mapDomainEntropy map[share.Entropy]Entropy
}
func newParser() *parser {
return &parser{
mapEntropyDomain: map[Entropy]share.Entropy{
EntropyNone: share.EntropyNone,
EntropyUser: share.EntropyUser,
EntropyProject: share.EntropyProject,
},
mapDomainEntropy: map[share.Entropy]Entropy{
share.EntropyNone: EntropyNone,
share.EntropyUser: EntropyUser,
share.EntropyProject: EntropyProject,
},
}
}
func (p *parser) toDomain(s *Share) *share.Share {
encryptionParameters := &share.EncryptionParameters{
Entropy: p.mapEntropyDomain[s.Entropy],
}
if s.Salt != "" {
encryptionParameters.Salt = s.Salt
}
if s.Iterations != 0 {
encryptionParameters.Iterations = s.Iterations
}
if s.Length != 0 {
encryptionParameters.Length = s.Length
}
if s.Digest != "" {
encryptionParameters.Digest = s.Digest
}
return &share.Share{
ID: s.ID,
Secret: s.Data,
UserID: s.UserID,
EncryptionParameters: encryptionParameters,
}
}
func (p *parser) toDatabase(s *share.Share) *Share {
shr := &Share{
ID: s.ID,
Data: s.Secret,
UserID: s.UserID,
}
if s.EncryptionParameters != nil {
shr.Entropy = p.mapDomainEntropy[s.EncryptionParameters.Entropy]
if s.EncryptionParameters.Salt != "" {
shr.Salt = s.EncryptionParameters.Salt
}
if s.EncryptionParameters.Iterations != 0 {
shr.Iterations = s.EncryptionParameters.Iterations
}
if s.EncryptionParameters.Length != 0 {
shr.Length = s.EncryptionParameters.Length
}
if s.EncryptionParameters.Digest != "" {
shr.Digest = s.EncryptionParameters.Digest
}
} else {
shr.Entropy = EntropyNone
}
return shr
}