密钥库中的privateKey返回null

问题描述 投票:0回答:1
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);
}
spring-boot junit4 junit5
1个回答
0
投票

我认为这是因为您没有在 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);
© www.soinside.com 2019 - 2024. All rights reserved.