2525import java .net .URISyntaxException ;
2626import java .nio .charset .StandardCharsets ;
2727import java .security .PrivateKey ;
28- import java .security .Security ;
2928import java .security .interfaces .ECPrivateKey ;
3029import java .security .interfaces .RSAPrivateKey ;
3130import java .sql .Timestamp ;
@@ -118,7 +117,8 @@ public JwtPrivateKeyClientCredentials build() {
118117 }
119118 }
120119
121- private final String BOUNCY_CASTLE_PROVIDER = "BC" ;
120+ private static final BouncyCastleProvider bouncyCastleProvider = new BouncyCastleProvider ();
121+
122122 private IDatabricksHttpClient hc ;
123123 private String clientId ;
124124 private String tokenUrl ;
@@ -235,13 +235,10 @@ JWSAlgorithm determineSignatureAlgorithm(String jwtAlgorithm) {
235235 }
236236
237237 private PrivateKey getPrivateKey () {
238- try {
239- Security .addProvider (new BouncyCastleProvider ());
240- try (Reader reader = new FileReader (jwtKeyFile );
241- PEMParser pemParser = new PEMParser (reader )) {
242- Object object = pemParser .readObject ();
243- return convertPrivateKey (object );
244- }
238+ try (Reader reader = new FileReader (jwtKeyFile );
239+ PEMParser pemParser = new PEMParser (reader )) {
240+ Object object = pemParser .readObject ();
241+ return convertPrivateKey (object );
245242 } catch (DatabricksSQLException | IOException e ) {
246243 String errorMessage = "Failed to parse private key: " + e .getMessage ();
247244 LOGGER .error (errorMessage );
@@ -257,7 +254,7 @@ PrivateKey convertPrivateKey(Object pemObject) throws DatabricksParsingException
257254 PKCS8EncryptedPrivateKeyInfo encryptedKeyInfo = (PKCS8EncryptedPrivateKeyInfo ) pemObject ;
258255 JceOpenSSLPKCS8DecryptorProviderBuilder decryptorProviderBuilder =
259256 new JceOpenSSLPKCS8DecryptorProviderBuilder ();
260- decryptorProviderBuilder .setProvider (BOUNCY_CASTLE_PROVIDER );
257+ decryptorProviderBuilder .setProvider (bouncyCastleProvider );
261258 InputDecryptorProvider decryptorProvider =
262259 decryptorProviderBuilder .build (jwtKeyPassphrase .toCharArray ());
263260 privateKeyInfo = encryptedKeyInfo .decryptPrivateKeyInfo (decryptorProvider );
@@ -269,8 +266,7 @@ PrivateKey convertPrivateKey(Object pemObject) throws DatabricksParsingException
269266 privateKeyInfo = (PrivateKeyInfo ) pemObject ;
270267 }
271268 }
272- JcaPEMKeyConverter keyConverter =
273- new JcaPEMKeyConverter ().setProvider (BOUNCY_CASTLE_PROVIDER );
269+ JcaPEMKeyConverter keyConverter = new JcaPEMKeyConverter ().setProvider (bouncyCastleProvider );
274270 return keyConverter .getPrivateKey (privateKeyInfo );
275271 } catch (OperatorCreationException | PKCSException | PEMException e ) {
276272 String errorMessage = "Cannot decrypt private JWT key " + e .getMessage ();
0 commit comments