|
19 | 19 | */ |
20 | 20 | package org.sonarsource.scanner.lib.internal.http; |
21 | 21 |
|
| 22 | +import java.io.InputStream; |
22 | 23 | import java.net.CookieManager; |
23 | 24 | import java.net.CookiePolicy; |
24 | 25 | import java.net.HttpURLConnection; |
25 | 26 | import java.net.InetSocketAddress; |
26 | 27 | import java.net.Proxy; |
27 | 28 | import java.nio.file.Files; |
28 | 29 | import java.nio.file.Path; |
| 30 | +import java.nio.file.StandardOpenOption; |
29 | 31 | import java.security.KeyStore; |
30 | | -import java.security.Security; |
31 | 32 | import java.time.Duration; |
32 | 33 | import java.time.format.DateTimeParseException; |
33 | 34 | import java.util.Map; |
34 | 35 | import java.util.concurrent.TimeUnit; |
35 | 36 | import nl.altindag.ssl.SSLFactory; |
36 | | -import nl.altindag.ssl.util.KeyStoreUtils; |
| 37 | +import nl.altindag.ssl.exception.GenericKeyStoreException; |
37 | 38 | import okhttp3.ConnectionSpec; |
38 | 39 | import okhttp3.Credentials; |
39 | 40 | import okhttp3.JavaNetCookieJar; |
@@ -186,15 +187,23 @@ private static SSLFactory configureSsl(SslConfig sslConfig) { |
186 | 187 | } |
187 | 188 | var trustStoreConfig = sslConfig.getTrustStore(); |
188 | 189 | if (trustStoreConfig != null && Files.exists(trustStoreConfig.getPath())) { |
189 | | - Security.addProvider(new BouncyCastleProvider()); |
190 | | - KeyStore trustStore = KeyStoreUtils.loadKeyStore( |
| 190 | + KeyStore trustStore = loadKeyStoreWithBouncyCastle( |
191 | 191 | trustStoreConfig.getPath(), |
192 | 192 | trustStoreConfig.getKeyStorePassword().toCharArray(), |
193 | | - trustStoreConfig.getKeyStoreType(), |
194 | | - BouncyCastleProvider.PROVIDER_NAME); |
| 193 | + trustStoreConfig.getKeyStoreType()); |
195 | 194 | sslFactoryBuilder.withTrustMaterial(trustStore); |
196 | 195 | } |
197 | 196 | return sslFactoryBuilder.build(); |
198 | 197 | } |
199 | 198 |
|
| 199 | + public static KeyStore loadKeyStoreWithBouncyCastle(Path keystorePath, char[] keystorePassword, String keystoreType) { |
| 200 | + try (InputStream keystoreInputStream = Files.newInputStream(keystorePath, StandardOpenOption.READ)) { |
| 201 | + KeyStore keystore = KeyStore.getInstance(keystoreType, new BouncyCastleProvider()); |
| 202 | + keystore.load(keystoreInputStream, keystorePassword); |
| 203 | + return keystore; |
| 204 | + } catch (Exception e) { |
| 205 | + throw new GenericKeyStoreException(e); |
| 206 | + } |
| 207 | + } |
| 208 | + |
200 | 209 | } |
0 commit comments