Skip to content

Commit ea575b0

Browse files
committed
SCANJLIB-234 Limit the use of BouncyCastle to the minimum
1 parent 671267a commit ea575b0

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

lib/src/main/java/org/sonarsource/scanner/lib/internal/http/OkHttpClientFactory.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,22 @@
1919
*/
2020
package org.sonarsource.scanner.lib.internal.http;
2121

22+
import java.io.InputStream;
2223
import java.net.CookieManager;
2324
import java.net.CookiePolicy;
2425
import java.net.HttpURLConnection;
2526
import java.net.InetSocketAddress;
2627
import java.net.Proxy;
2728
import java.nio.file.Files;
2829
import java.nio.file.Path;
30+
import java.nio.file.StandardOpenOption;
2931
import java.security.KeyStore;
30-
import java.security.Security;
3132
import java.time.Duration;
3233
import java.time.format.DateTimeParseException;
3334
import java.util.Map;
3435
import java.util.concurrent.TimeUnit;
3536
import nl.altindag.ssl.SSLFactory;
36-
import nl.altindag.ssl.util.KeyStoreUtils;
37+
import nl.altindag.ssl.exception.GenericKeyStoreException;
3738
import okhttp3.ConnectionSpec;
3839
import okhttp3.Credentials;
3940
import okhttp3.JavaNetCookieJar;
@@ -186,15 +187,23 @@ private static SSLFactory configureSsl(SslConfig sslConfig) {
186187
}
187188
var trustStoreConfig = sslConfig.getTrustStore();
188189
if (trustStoreConfig != null && Files.exists(trustStoreConfig.getPath())) {
189-
Security.addProvider(new BouncyCastleProvider());
190-
KeyStore trustStore = KeyStoreUtils.loadKeyStore(
190+
KeyStore trustStore = loadKeyStoreWithBouncyCastle(
191191
trustStoreConfig.getPath(),
192192
trustStoreConfig.getKeyStorePassword().toCharArray(),
193-
trustStoreConfig.getKeyStoreType(),
194-
BouncyCastleProvider.PROVIDER_NAME);
193+
trustStoreConfig.getKeyStoreType());
195194
sslFactoryBuilder.withTrustMaterial(trustStore);
196195
}
197196
return sslFactoryBuilder.build();
198197
}
199198

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+
200209
}

0 commit comments

Comments
 (0)