@@ -27,19 +27,20 @@ import (
2727
2828 "github.com/ibm-messaging/mq-container/internal/command"
2929 "github.com/ibm-messaging/mq-container/internal/fips"
30+ "github.com/ibm-messaging/mq-container/internal/sensitive"
3031)
3132
3233// KeyStore describes information about a keystore file
3334type KeyStore struct {
3435 Filename string
35- Password string
36+ Password * sensitive. Sensitive
3637 keyStoreType string
3738 command string
3839 fipsEnabled bool
3940}
4041
4142// NewJKSKeyStore creates a new Java Key Store, managed by the runmqckm command
42- func NewJKSKeyStore (filename , password string ) * KeyStore {
43+ func NewJKSKeyStore (filename string , password * sensitive. Sensitive ) * KeyStore {
4344 keyStore := & KeyStore {
4445 Filename : filename ,
4546 Password : password ,
@@ -52,7 +53,7 @@ func NewJKSKeyStore(filename, password string) *KeyStore {
5253}
5354
5455// NewCMSKeyStore creates a new MQ CMS Key Store, managed by the runmqakm command
55- func NewCMSKeyStore (filename , password string ) * KeyStore {
56+ func NewCMSKeyStore (filename string , password * sensitive. Sensitive ) * KeyStore {
5657 keyStore := & KeyStore {
5758 Filename : filename ,
5859 Password : password ,
@@ -65,7 +66,7 @@ func NewCMSKeyStore(filename, password string) *KeyStore {
6566}
6667
6768// NewPKCS12KeyStore creates a new PKCS12 Key Store, managed by the runmqakm command
68- func NewPKCS12KeyStore (filename , password string ) * KeyStore {
69+ func NewPKCS12KeyStore (filename string , password * sensitive. Sensitive ) * KeyStore {
6970 keyStore := & KeyStore {
7071 Filename : filename ,
7172 Password : password ,
@@ -111,7 +112,7 @@ func (ks *KeyStore) Create() error {
111112 }
112113
113114 // Create the keystore now we're sure it doesn't exist
114- out , _ , err := command .Run (ks .command , "-keydb" , "-create" , ks .getFipsEnabledFlag (), "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password , "-stash" )
115+ out , _ , err := command .Run (ks .command , "-keydb" , "-create" , ks .getFipsEnabledFlag (), "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password . String () , "-stash" )
115116 if err != nil {
116117 return fmt .Errorf ("error running \" %v -keydb -create\" : %v %s" , ks .command , err , out )
117118 }
@@ -126,7 +127,7 @@ func (ks *KeyStore) CreateStash() error {
126127 _ , err := os .Stat (stashFile )
127128 if err != nil {
128129 if os .IsNotExist (err ) {
129- out , _ , err := command .Run (ks .command , "-keydb" , ks .getFipsEnabledFlag (), "-stashpw" , "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password )
130+ out , _ , err := command .Run (ks .command , "-keydb" , ks .getFipsEnabledFlag (), "-stashpw" , "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password . String () )
130131 if err != nil {
131132 return fmt .Errorf ("error running \" %v -keydb -stashpw\" : %v %s" , ks .command , err , out )
132133 }
@@ -137,8 +138,8 @@ func (ks *KeyStore) CreateStash() error {
137138}
138139
139140// Import imports a certificate file in the keystore
140- func (ks * KeyStore ) Import (inputFile , password string ) error {
141- out , _ , err := command .Run (ks .command , "-cert" , "-import" , ks .getFipsEnabledFlag (), "-file" , inputFile , "-pw" , password , "-target" , ks .Filename , "-target_pw" , ks .Password , "-target_type" , ks .keyStoreType )
141+ func (ks * KeyStore ) Import (inputFile string , password * sensitive. Sensitive ) error {
142+ out , _ , err := command .Run (ks .command , "-cert" , "-import" , ks .getFipsEnabledFlag (), "-file" , inputFile , "-pw" , password . String () , "-target" , ks .Filename , "-target_pw" , ks .Password . String () , "-target_type" , ks .keyStoreType )
142143 if err != nil {
143144 return fmt .Errorf ("error running \" %v -cert -import\" : %v %s" , ks .command , err , out )
144145 }
@@ -147,7 +148,7 @@ func (ks *KeyStore) Import(inputFile, password string) error {
147148
148149// CreateSelfSignedCertificate creates a self-signed certificate in the keystore
149150func (ks * KeyStore ) CreateSelfSignedCertificate (label , dn , hostname string ) error {
150- out , _ , err := command .Run (ks .command , "-cert" , "-create" , ks .getFipsEnabledFlag (), "-db" , ks .Filename , "-pw" , ks .Password , "-label" , label , "-dn" , dn , "-san_dnsname" , hostname , "-size 2048 -sig_alg sha512 -eku serverAuth" )
151+ out , _ , err := command .Run (ks .command , "-cert" , "-create" , ks .getFipsEnabledFlag (), "-db" , ks .Filename , "-pw" , ks .Password . String () , "-label" , label , "-dn" , dn , "-san_dnsname" , hostname , "-size 2048 -sig_alg sha512 -eku serverAuth" )
151152 if err != nil {
152153 return fmt .Errorf ("error running \" %v -cert -create\" : %v %s" , ks .command , err , out )
153154 }
@@ -156,7 +157,7 @@ func (ks *KeyStore) CreateSelfSignedCertificate(label, dn, hostname string) erro
156157
157158// Add adds a CA certificate to the keystore
158159func (ks * KeyStore ) Add (inputFile , label string ) error {
159- out , _ , err := command .Run (ks .command , "-cert" , "-add" , ks .getFipsEnabledFlag (), "-db" , ks .Filename , "-type" , ks .keyStoreType , "-pw" , ks .Password , "-file" , inputFile , "-label" , label )
160+ out , _ , err := command .Run (ks .command , "-cert" , "-add" , ks .getFipsEnabledFlag (), "-db" , ks .Filename , "-type" , ks .keyStoreType , "-pw" , ks .Password . String () , "-file" , inputFile , "-label" , label )
160161 if err != nil {
161162 return fmt .Errorf ("error running \" %v -cert -add\" : %v %s" , ks .command , err , out )
162163 }
@@ -165,7 +166,7 @@ func (ks *KeyStore) Add(inputFile, label string) error {
165166
166167// Add adds a CA certificate to the keystore
167168func (ks * KeyStore ) AddNoLabel (inputFile string ) error {
168- out , _ , err := command .Run (ks .command , "-cert" , "-add" , ks .getFipsEnabledFlag (), "-db" , ks .Filename , "-type" , ks .keyStoreType , "-pw" , ks .Password , "-file" , inputFile )
169+ out , _ , err := command .Run (ks .command , "-cert" , "-add" , ks .getFipsEnabledFlag (), "-db" , ks .Filename , "-type" , ks .keyStoreType , "-pw" , ks .Password . String () , "-file" , inputFile )
169170 if err != nil {
170171 return fmt .Errorf ("error running \" %v -cert -add\" : %v %s" , ks .command , err , out )
171172 }
@@ -174,7 +175,7 @@ func (ks *KeyStore) AddNoLabel(inputFile string) error {
174175
175176// GetCertificateLabels returns the labels of all certificates in the key store
176177func (ks * KeyStore ) GetCertificateLabels () ([]string , error ) {
177- out , _ , err := command .Run (ks .command , "-cert" , "-list" , ks .getFipsEnabledFlag (), "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password )
178+ out , _ , err := command .Run (ks .command , "-cert" , "-list" , ks .getFipsEnabledFlag (), "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password . String () )
178179 if err != nil {
179180 return nil , fmt .Errorf ("error running \" %v -cert -list\" : %v %s" , ks .command , err , out )
180181 }
@@ -200,14 +201,14 @@ func (ks *KeyStore) RenameCertificate(from, to string) error {
200201 // runmqakm can't handle certs with ' in them so just use capicmd
201202 // Overriding gosec here as this function is in an internal package and only callable by our internal functions.
202203 // #nosec G204
203- cmd := exec .Command ("/opt/mqm/gskit8/bin/gsk8capicmd_64" , "-cert" , "-rename" , "-db" , ks .Filename , "-pw" , ks .Password , "-label" , from , "-new_label" , to )
204+ cmd := exec .Command ("/opt/mqm/gskit8/bin/gsk8capicmd_64" , "-cert" , "-rename" , "-db" , ks .Filename , "-pw" , ks .Password . String () , "-label" , from , "-new_label" , to )
204205 cmd .Env = append (os .Environ (), "LD_LIBRARY_PATH=/opt/mqm/gskit8/lib64/:/opt/mqm/gskit8/lib" )
205206 out , err := cmd .CombinedOutput ()
206207 if err != nil {
207208 return fmt .Errorf ("error running \" %v -cert -rename\" : %v %s" , "/opt/mqm/gskit8/bin/gsk8capicmd_64" , err , out )
208209 }
209210 } else {
210- out , _ , err := command .Run (ks .command , "-cert" , "-rename" , "-db" , ks .Filename , "-pw" , ks .Password , "-label" , from , "-new_label" , to )
211+ out , _ , err := command .Run (ks .command , "-cert" , "-rename" , "-db" , ks .Filename , "-pw" , ks .Password . String () , "-label" , from , "-new_label" , to )
211212 if err != nil {
212213 return fmt .Errorf ("error running \" %v -cert -rename\" : %v %s" , ks .command , err , out )
213214 }
@@ -218,7 +219,7 @@ func (ks *KeyStore) RenameCertificate(from, to string) error {
218219
219220// ListAllCertificates Lists all certificates in the keystore
220221func (ks * KeyStore ) ListAllCertificates () ([]string , error ) {
221- out , _ , err := command .Run (ks .command , "-cert" , "-list" , ks .getFipsEnabledFlag (), "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password )
222+ out , _ , err := command .Run (ks .command , "-cert" , "-list" , ks .getFipsEnabledFlag (), "-type" , ks .keyStoreType , "-db" , ks .Filename , "-pw" , ks .Password . String () )
222223 if err != nil {
223224 return nil , fmt .Errorf ("error running \" %v -cert -list\" : %v %s" , ks .command , err , out )
224225 }
0 commit comments