BouncyCastlePemReader Class — netty Architecture
Architecture documentation for the BouncyCastlePemReader class in BouncyCastlePemReader.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD e6e5a4e4_1b86_01c4_405d_ecf4e6743170["BouncyCastlePemReader"] 91494542_b637_2841_737b_5e220c23dab5["BouncyCastlePemReader.java"] e6e5a4e4_1b86_01c4_405d_ecf4e6743170 -->|defined in| 91494542_b637_2841_737b_5e220c23dab5 d53948a6_ec4c_54ec_7548_409f6a7a8636["PrivateKey()"] e6e5a4e4_1b86_01c4_405d_ecf4e6743170 -->|method| d53948a6_ec4c_54ec_7548_409f6a7a8636 424e3c66_c23f_3fce_50b1_69b4276bacb9["JcaPEMKeyConverter()"] e6e5a4e4_1b86_01c4_405d_ecf4e6743170 -->|method| 424e3c66_c23f_3fce_50b1_69b4276bacb9 d169c690_9554_c1db_5658_2342e882e49f["PEMParser()"] e6e5a4e4_1b86_01c4_405d_ecf4e6743170 -->|method| d169c690_9554_c1db_5658_2342e882e49f d743e8a4_0d43_4a49_78c3_92a253765ae4["BouncyCastlePemReader()"] e6e5a4e4_1b86_01c4_405d_ecf4e6743170 -->|method| d743e8a4_0d43_4a49_78c3_92a253765ae4
Relationship Graph
Source Code
handler/src/main/java/io/netty/handler/ssl/BouncyCastlePemReader.java lines 43–173
final class BouncyCastlePemReader {
private static final InternalLogger logger = InternalLoggerFactory.getInstance(BouncyCastlePemReader.class);
/**
* Generates a new {@link PrivateKey}.
*
* @param keyInputStream an input stream for a PKCS#1 or PKCS#8 private key in PEM format.
* @param keyPassword the password of the {@code keyFile}.
* {@code null} if it's not password-protected.
* @return generated {@link PrivateKey}.
*/
public static PrivateKey getPrivateKey(InputStream keyInputStream, String keyPassword) {
if (!BouncyCastleUtil.isBcPkixAvailable()) {
if (logger.isDebugEnabled()) {
logger.debug("Bouncy castle provider is unavailable.", BouncyCastleUtil.unavailabilityCauseBcPkix());
}
return null;
}
try {
PEMParser parser = newParser(keyInputStream);
return getPrivateKey(parser, keyPassword);
} catch (Exception e) {
logger.debug("Unable to extract private key", e);
return null;
}
}
/**
* Generates a new {@link PrivateKey}.
*
* @param keyFile a PKCS#1 or PKCS#8 private key file in PEM format.
* @param keyPassword the password of the {@code keyFile}.
* {@code null} if it's not pa ssword-protected.
* @return generated {@link PrivateKey}.
*/
public static PrivateKey getPrivateKey(File keyFile, String keyPassword) {
if (!BouncyCastleUtil.isBcPkixAvailable()) {
if (logger.isDebugEnabled()) {
logger.debug("Bouncy castle provider is unavailable.", BouncyCastleUtil.unavailabilityCauseBcPkix());
}
return null;
}
try {
PEMParser parser = newParser(keyFile);
return getPrivateKey(parser, keyPassword);
} catch (Exception e) {
logger.debug("Unable to extract private key", e);
return null;
}
}
private static JcaPEMKeyConverter newConverter() {
return new JcaPEMKeyConverter().setProvider(BouncyCastleUtil.getBcProviderJce());
}
private static PrivateKey getPrivateKey(PEMParser pemParser, String keyPassword) throws IOException,
PKCSException, OperatorCreationException {
try {
JcaPEMKeyConverter converter = newConverter();
PrivateKey pk = null;
Object object = pemParser.readObject();
while (object != null && pk == null) {
if (logger.isDebugEnabled()) {
logger.debug("Parsed PEM object of type {} and assume " +
"key is {}encrypted", object.getClass().getName(), keyPassword == null? "not " : "");
}
if (keyPassword == null) {
// assume private key is not encrypted
if (object instanceof PrivateKeyInfo) {
pk = converter.getPrivateKey((PrivateKeyInfo) object);
} else if (object instanceof PEMKeyPair) {
pk = converter.getKeyPair((PEMKeyPair) object).getPrivate();
} else {
logger.debug("Unable to handle PEM object of type {} as a non encrypted key",
object.getClass());
}
} else {
// assume private key is encrypted
if (object instanceof PEMEncryptedKeyPair) {
Source
Frequently Asked Questions
What is the BouncyCastlePemReader class?
BouncyCastlePemReader is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/BouncyCastlePemReader.java.
Where is BouncyCastlePemReader defined?
BouncyCastlePemReader is defined in handler/src/main/java/io/netty/handler/ssl/BouncyCastlePemReader.java at line 43.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free