public static PrivateKey getPrivateKey(KeyStore keystore, String keyId, char[] keyPwd) throws BenefitsException {
PrivateKey privateKey = null;
try {
if (keystore == null || keyPwd == null || keyId == null || "".equals(keyId)) {
return privateKey;
} else {
privateKey = (PrivateKey) keystore.getKey(keyId, keyPwd);
}
} catch (NoSuchAlgorithmException | UnrecoverableKeyException | KeyStoreException e) {
throw new BenefitsException("Error in getPrivateKey method : ", e);
}
return privateKey;
}
这是我的测试方法。有谁知道为什么私钥会返回
null
?
@Test
public void getPrivateKey_ExceptionTest() throws Exception {
KeyStore keystoreMock = Mockito.mock(KeyStore.class);
FieldUtils.writeField(keystoreMock, "keyStoreSpi", Mockito.mock(KeyStoreSpi.class), true);
FieldUtils.writeField(keystoreMock, "initialized", true, true);
char[] pwd = {'c', 'h', 'a', 'n', 'g', 'e', 'i', 't'};
cryptoUtils.getPrivateKey(keystoreMock, "somestring", pwd);
}
我认为这是因为您没有在 getKey
上
存根
keyStoreMock
方法,所以您得到默认答案 null
。
尝试类似:
String keyId = "keyId";
char[] keyPwd = {'c', 'h', 'a', 'n', 'g', 'e', 'i', 't'};
PrivateKey expectedPrivateKey = /* ... */
Mockito.when(keystoreMock.getKey(keyId, keyPwd).thenReturn(expectedPrivateKey);