|
1 | 1 | package crypto |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "fmt" |
5 | 4 | "os" |
6 | 5 | "path/filepath" |
7 | 6 |
|
@@ -33,44 +32,45 @@ func ReadConfig() (conf *Config, err error) { |
33 | 32 | return |
34 | 33 | } |
35 | 34 |
|
36 | | -func Build() (Provider, error) { |
| 35 | +func Build() (prov Provider, err error) { |
37 | 36 | key, err := Materialize() |
38 | 37 | if err != nil { |
39 | | - return nil, err |
| 38 | + return |
40 | 39 | } |
41 | 40 | keyID, err := GetKeyID() |
42 | 41 | if err != nil { |
43 | | - return nil, err |
| 42 | + return |
44 | 43 | } |
45 | 44 |
|
46 | | - if err := validateKey(keyID, key); err != nil { |
47 | | - return nil, err |
| 45 | + prov, err = fallbackProvider(key) |
| 46 | + if err != nil { |
| 47 | + return |
48 | 48 | } |
49 | | - |
50 | 49 | if utils.Exists(configPath()) { |
51 | | - conf, err := ReadConfig() |
| 50 | + var conf *Config |
| 51 | + conf, err = ReadConfig() |
52 | 52 | if err != nil { |
53 | 53 | return fallbackProvider(key) |
54 | 54 | } |
55 | 55 |
|
56 | 56 | switch conf.Type { |
57 | 57 | case KEY: |
58 | | - return buildKeyProvider(conf, key) |
| 58 | + prov, err = buildKeyProvider(conf, key) |
59 | 59 | case AGE: |
60 | | - return BuildAgeProvider() |
| 60 | + prov, err = BuildAgeProvider() |
| 61 | + } |
| 62 | + if err != nil { |
| 63 | + return |
61 | 64 | } |
62 | 65 | } |
63 | 66 |
|
64 | | - return fallbackProvider(key) |
| 67 | + if keyID != "" && prov.ID() != keyID { |
| 68 | + err = errFingerprint |
| 69 | + } |
| 70 | + |
| 71 | + return |
65 | 72 | } |
66 | 73 |
|
67 | 74 | func fallbackProvider(key *AESKey) (*KeyProvider, error) { |
68 | 75 | return &KeyProvider{key: key.Key}, nil |
69 | 76 | } |
70 | | - |
71 | | -func validateKey(keyID string, key *AESKey) error { |
72 | | - if keyID != "" && key.ID() != keyID { |
73 | | - return fmt.Errorf("the key fingerprint doesn't match") |
74 | | - } |
75 | | - return nil |
76 | | -} |
0 commit comments