2013-03-27 2 views
1

나는 PEM 키를 가지고 있으며 그 키와 bouncycastle을 갖고 싶습니다. 나는이 코드가 좋다고 생각했지만 캐스트 예외가 있습니다.BouncyCastle을 사용하여 PEM 키에서 KeyPair 가져 오기

function loadKey() { 
    File privateKeyFile = new File(keyPath); 
    PEMParser pemParser = new PEMParser(new FileReader(privateKeyFile)); 
    PEMDecryptorProvider decProv = new  JcePEMDecryptorProviderBuilder().build(password.toCharArray()); 
    JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC"); 

    Object object = pemParser.readObject(); 
    KeyPair kp; 

    if (object instanceof PEMEncryptedKeyPair) { 
     Logger.info("Encrypted key - we will use provided password"); 
     kp = converter.getKeyPair(((PEMEncryptedKeyPair) object).decryptKeyPair(decProv)); 
    } 
    else { 
     Logger.info("Unencrypted key - no password needed");  
     kp = converter.getKeyPair((PEMKeyPair) object); 
    } 

    return kp; 
} 

그리고 그것은 나 반환 암호화되지 않은 키 - org.bouncycastle.asn1.x509.SubjectPublicKeyInfo 내가 여러 가지 방법하지만 난 시도

org.bouncycastle.openssl.PEMKeyPair

캐스트 할 수없는 필요 암호 없음 성공하지 못했습니다.

덕분에 저를 도와 :)

+0

참조하는 PEM이 개인 키입니까? 같은 방법을 사용하고 있습니다. –

+0

잘 모르겠다. 나는 키가있는 초보자 다. 어떻게 알 수 있니? – user2119056

+1

글쎄, 당신이 얻고있는 오류에 따라 - 그것은 당신이 개인 키가 아닌 인증서를 해독하는 것 같습니다. –

답변

6

당신이이 예외를 얻을 수 있습니다 암호가있는 개인 키가있는 경우. 암호문을 제거해보십시오.

openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key