使用BKS代替JKS似乎会导致StackOverflowError。
我正在试图找出为什么调用setKeyEntry导致BouncyCastle的SecureRandom实现中断以及如何修复它,任何想法?
我已使用Security.insertProviderAt(new BouncyCastleProvider(), 1);
将BouncyCastleProvider安全提供程序列表插入“第一”位置。 BC版本1.57。
KeyStore ks = KeyStore.getInstance("BKS", BouncyCastleProvider.PROVIDER_NAME);
// KeyStore ks = KeyStore.getInstance("JKS"); // this works
ks.load(null, null);
ks.setKeyEntry("serverEC", privateKey, "password".toCharArray(), new X509Certificate[]{ certEC, caCertEC });
我得到的堆栈跟踪是:
java.lang.StackOverflowError
at org.bouncycastle.jcajce.provider.drbg.DRBG$Default.engineSetSeed(Unknown Source)
at java.security.SecureRandom.setSeed(SecureRandom.java:427)
at org.bouncycastle.crypto.prng.SP800SecureRandom.setSeed(Unknown Source)
at org.bouncycastle.jcajce.provider.drbg.DRBG$Default.engineSetSeed(Unknown Source)
at java.security.SecureRandom.setSeed(SecureRandom.java:427)
at org.bouncycastle.crypto.prng.SP800SecureRandom.setSeed(Unknown Source)
at org.bouncycastle.jcajce.provider.drbg.DRBG$Default.engineSetSeed(Unknown Source)
at java.security.SecureRandom.setSeed(SecureRandom.java:427)
at org.bouncycastle.crypto.prng.SP800SecureRandom.setSeed(Unknown Source)
....