@@ -107,76 +107,9 @@ func (x *initWalletCommand) Execute(_ []string) error {
107
107
requireSeed := (x .InitType == typeFile ) ||
108
108
(x .InitType == typeRpc && ! x .InitRpc .WatchOnly )
109
109
110
- // First find out where we want to read the secrets from.
111
- var (
112
- seed string
113
- seedPassPhrase string
114
- walletPassword string
115
- err error
116
- )
117
- switch x .SecretSource {
118
- // Read all secrets from individual files.
119
- case storageFile :
120
- if requireSeed {
121
- log ("Reading seed from file" )
122
- seed , err = readFile (x .File .Seed )
123
- if err != nil {
124
- return err
125
- }
126
- }
127
-
128
- // The seed passphrase is optional.
129
- if x .File .SeedPassphrase != "" {
130
- log ("Reading seed passphrase from file" )
131
- seedPassPhrase , err = readFile (x .File .SeedPassphrase )
132
- if err != nil {
133
- return err
134
- }
135
- }
136
-
137
- log ("Reading wallet password from file" )
138
- walletPassword , err = readFile (x .File .WalletPassword )
139
- if err != nil {
140
- return err
141
- }
142
-
143
- // Read passphrase from Kubernetes secret.
144
- case storageK8s :
145
- k8sSecret := & k8sSecretOptions {
146
- Namespace : x .K8s .Namespace ,
147
- SecretName : x .K8s .SecretName ,
148
- Base64 : x .K8s .Base64 ,
149
- }
150
- k8sSecret .SecretKeyName = x .K8s .SeedKeyName
151
-
152
- if requireSeed {
153
- log ("Reading seed from k8s secret %s (namespace %s)" ,
154
- x .K8s .SecretName , x .K8s .Namespace )
155
- seed , _ , err = readK8s (k8sSecret )
156
- if err != nil {
157
- return err
158
- }
159
- }
160
-
161
- // The seed passphrase is optional.
162
- if x .K8s .SeedPassphraseKeyName != "" {
163
- log ("Reading seed passphrase from k8s secret %s " +
164
- "(namespace %s)" , x .K8s .SecretName ,
165
- x .K8s .Namespace )
166
- k8sSecret .SecretKeyName = x .K8s .SeedPassphraseKeyName
167
- seedPassPhrase , _ , err = readK8s (k8sSecret )
168
- if err != nil {
169
- return err
170
- }
171
- }
172
-
173
- log ("Reading wallet password from k8s secret %s (namespace %s)" ,
174
- x .K8s .SecretName , x .K8s .Namespace )
175
- k8sSecret .SecretKeyName = x .K8s .WalletPasswordKeyName
176
- walletPassword , _ , err = readK8s (k8sSecret )
177
- if err != nil {
178
- return err
179
- }
110
+ seed , seedPassPhrase , walletPassword , err := x .readInput (requireSeed )
111
+ if err != nil {
112
+ return fmt .Errorf ("error reading input parameters: %v" , err )
180
113
}
181
114
182
115
switch x .InitType {
@@ -268,6 +201,91 @@ func (x *initWalletCommand) Execute(_ []string) error {
268
201
}
269
202
}
270
203
204
+ func (x * initWalletCommand ) readInput (requireSeed bool ) (string , string , string ,
205
+ error ) {
206
+
207
+ // First find out where we want to read the secrets from.
208
+ var (
209
+ seed string
210
+ seedPassPhrase string
211
+ walletPassword string
212
+ err error
213
+ )
214
+ switch x .SecretSource {
215
+ // Read all secrets from individual files.
216
+ case storageFile :
217
+ if requireSeed {
218
+ log ("Reading seed from file" )
219
+ seed , err = readFile (x .File .Seed )
220
+ if err != nil {
221
+ return "" , "" , "" , err
222
+ }
223
+ }
224
+
225
+ // The seed passphrase is optional.
226
+ if x .File .SeedPassphrase != "" {
227
+ log ("Reading seed passphrase from file" )
228
+ seedPassPhrase , err = readFile (x .File .SeedPassphrase )
229
+ if err != nil {
230
+ return "" , "" , "" , err
231
+ }
232
+ }
233
+
234
+ log ("Reading wallet password from file" )
235
+ walletPassword , err = readFile (x .File .WalletPassword )
236
+ if err != nil {
237
+ return "" , "" , "" , err
238
+ }
239
+
240
+ // Read passphrase from Kubernetes secret.
241
+ case storageK8s :
242
+ k8sSecret := & k8sSecretOptions {
243
+ Namespace : x .K8s .Namespace ,
244
+ SecretName : x .K8s .SecretName ,
245
+ Base64 : x .K8s .Base64 ,
246
+ }
247
+ k8sSecret .SecretKeyName = x .K8s .SeedKeyName
248
+
249
+ if requireSeed {
250
+ log ("Reading seed from k8s secret %s (namespace %s)" ,
251
+ x .K8s .SecretName , x .K8s .Namespace )
252
+ seed , _ , err = readK8s (k8sSecret )
253
+ if err != nil {
254
+ return "" , "" , "" , err
255
+ }
256
+ }
257
+
258
+ // The seed passphrase is optional.
259
+ if x .K8s .SeedPassphraseKeyName != "" {
260
+ log ("Reading seed passphrase from k8s secret %s " +
261
+ "(namespace %s)" , x .K8s .SecretName ,
262
+ x .K8s .Namespace )
263
+ k8sSecret .SecretKeyName = x .K8s .SeedPassphraseKeyName
264
+ seedPassPhrase , _ , err = readK8s (k8sSecret )
265
+ if err != nil {
266
+ return "" , "" , "" , err
267
+ }
268
+ }
269
+
270
+ log ("Reading wallet password from k8s secret %s (namespace %s)" ,
271
+ x .K8s .SecretName , x .K8s .Namespace )
272
+ k8sSecret .SecretKeyName = x .K8s .WalletPasswordKeyName
273
+ walletPassword , _ , err = readK8s (k8sSecret )
274
+ if err != nil {
275
+ return "" , "" , "" , err
276
+ }
277
+ }
278
+
279
+ // The seed, its passphrase and the wallet password should all never
280
+ // have a newline at their end, otherwise that might lead to errors
281
+ // further down the line.
282
+ seed = stripNewline (seed )
283
+ seedPassPhrase = stripNewline (seedPassPhrase )
284
+ walletPassword = stripNewline (walletPassword )
285
+
286
+ return seed , seedPassPhrase , walletPassword , nil
287
+ }
288
+
271
289
func createWalletFile (cipherSeed * aezeed.CipherSeed , walletPassword , walletDir ,
272
290
network string , validatePassword bool ) error {
273
291
0 commit comments