package org.bouncycastle.openssl; import java.io.IOException; import org.bouncycastle.operator.OperatorCreationException; public class PEMEncryptedKeyPair { private final String dekAlgName; private final byte[] iv; private final byte[] keyBytes; private final PEMKeyPairParser parser; PEMEncryptedKeyPair(String dekAlgName, byte[] iv, byte[] keyBytes, PEMKeyPairParser parser) { this.dekAlgName = dekAlgName; this.iv = iv; this.keyBytes = keyBytes; this.parser = parser; } public PEMKeyPair decryptKeyPair(PEMDecryptorProvider keyDecryptorProvider) throws IOException { try { PEMDecryptor keyDecryptor = keyDecryptorProvider.get(dekAlgName); return parser.parse(keyDecryptor.decrypt(keyBytes, iv)); } catch (IOException e) { throw e; } catch (OperatorCreationException e) { throw new PEMException("cannot create extraction operator: " + e.getMessage(), e); } catch (Exception e) { throw new PEMException("exception processing key pair: " + e.getMessage(), e); } } }