@@ -107,76 +107,9 @@ func (x *initWalletCommand) Execute(_ []string) error {
107107 requireSeed := (x .InitType == typeFile ) ||
108108 (x .InitType == typeRpc && ! x .InitRpc .WatchOnly )
109109
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 )
180113 }
181114
182115 switch x .InitType {
@@ -268,6 +201,91 @@ func (x *initWalletCommand) Execute(_ []string) error {
268201 }
269202}
270203
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+
271289func createWalletFile (cipherSeed * aezeed.CipherSeed , walletPassword , walletDir ,
272290 network string , validatePassword bool ) error {
273291
0 commit comments