@@ -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