use of org.bouncycastle.openssl.PEMKeyPair in project gitblit by gitblit.
the class FileKeyPairProvider method doLoadKey.
protected KeyPair doLoadKey(String file) {
try {
PEMParser r = new PEMParser(new InputStreamReader(new FileInputStream(file)));
try {
Object o = r.readObject();
JcaPEMKeyConverter pemConverter = new JcaPEMKeyConverter();
pemConverter.setProvider("BC");
if (passwordFinder != null && o instanceof PEMEncryptedKeyPair) {
JcePEMDecryptorProviderBuilder decryptorBuilder = new JcePEMDecryptorProviderBuilder();
PEMDecryptorProvider pemDecryptor = decryptorBuilder.build(passwordFinder.getPassword());
o = pemConverter.getKeyPair(((PEMEncryptedKeyPair) o).decryptKeyPair(pemDecryptor));
}
if (o instanceof PEMKeyPair) {
o = pemConverter.getKeyPair((PEMKeyPair) o);
return (KeyPair) o;
} else if (o instanceof KeyPair) {
return (KeyPair) o;
}
} finally {
r.close();
}
} catch (Exception e) {
log.warn("Unable to read key " + file, e);
}
return null;
}
use of org.bouncycastle.openssl.PEMKeyPair in project graylog2-server by Graylog2.
the class KeyUtil method privateKeyFromFile.
/**
* Obtain a private key from a PKS8 PEM file, which is optionally password-protected.
* @param password password to decrypt the file - it may be null or empty in case of an unencrypted file
* @param keyFile the key file
* @return the corresponding private key
*/
public static PrivateKey privateKeyFromFile(String password, File keyFile) throws IOException, PKCSException, OperatorCreationException {
PrivateKey privateKey;
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
// Be sure to specify charset for reader - don't use plain FileReader
Object object;
try (InputStream inputStream = Files.newInputStream(keyFile.toPath());
InputStreamReader fileReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
PEMParser pemParser = new PEMParser(fileReader)) {
object = pemParser.readObject();
}
if (object instanceof PKCS8EncryptedPrivateKeyInfo) {
PKCS8EncryptedPrivateKeyInfo pInfo = (PKCS8EncryptedPrivateKeyInfo) object;
JceOpenSSLPKCS8DecryptorProviderBuilder providerBuilder = new JceOpenSSLPKCS8DecryptorProviderBuilder();
InputDecryptorProvider provider = providerBuilder.build(Strings.nullToEmpty(password).toCharArray());
PrivateKeyInfo info = pInfo.decryptPrivateKeyInfo(provider);
privateKey = converter.getPrivateKey(info);
} else if (object instanceof PrivateKeyInfo) {
privateKey = converter.getPrivateKey((PrivateKeyInfo) object);
} else if (object instanceof PEMKeyPair) {
privateKey = converter.getPrivateKey(((PEMKeyPair) object).getPrivateKeyInfo());
} else {
throw new PKCSException("Encountered unexpected object type: " + object.getClass().getName());
}
return privateKey;
}
Aggregations