'Unable to create SSL context for SSO wallet for connecting to OracleDB

I am trying to create SSL context for SSO wallet.

PoolDataSource poolDataSource = PoolDataSourceFactory.getPoolDataSource();
poolDataSource.setSSLContext(//call to create SSL instance);

Code for creating SSL context is:

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("PKIX");
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("PKIX");
byte[] keyStoreData = //fetch keystore byte data
InputStream keyStoreInputStream = new ByteArrayInputStream(keyStoreData);
KeyStore keyStore = KeyStore.getInstance("SSO", new OraclePKIProvider()); //This line throws Exception. Line no. 102
keyStore.load(keyStoreInputStream, null);
keyManagerFactory.init(keyStore, null);
trustManagerFactory.init(keyStore);
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);

But I am getting the following error:

java.lang.NoClassDefFoundError: oracle/security/crypto/asn1/ASN1Object
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)
at java.base/java.lang.Class.getConstructor0(Class.java:3342)
at java.base/java.lang.Class.getConstructor(Class.java:2151)
at java.base/java.security.Provider.newInstanceUtil(Provider.java:153)
at java.base/java.security.Provider$Service.newInstance(Provider.java:1915)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:218)
at java.base/java.security.Security.getImpl(Security.java:729)
at java.base/java.security.KeyStore.getInstance(KeyStore.java:971)
ConnectionUtil.buildSSLContext(ConnectionUtil.java:102)


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source