# Class PEMFile

java.lang.Object
org.apache.tomcat.util.net.jsse.PEMFile

public class PEMFile extends Object
RFC 1421 PEM file containing X509 certificates or private keys.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PEMFile(String filename)`
  Construct a PEMFile from the given file without a password.
  `PEMFile(String filename, InputStream fileStream, String password, String keyAlgorithm)`
  Construct a PEMFile from the given input stream with the given password and key algorithm.
  `PEMFile(String filename, InputStream fileStream, String password, String passwordFilename, InputStream passwordFileStream, String keyAlgorithm)`
  Construct a PEMFile from the given input stream with the given password and key algorithm.
  `PEMFile(String filename, String password)`
  Construct a PEMFile from the given file with the given password.
  `PEMFile(String filename, String password, String keyAlgorithm)`
  Construct a PEMFile from the given file with the given password and key algorithm.
  `PEMFile(String filename, String password, String passwordFilename, String keyAlgorithm)`
  Construct a PEMFile from the given file with the password read from a separate file.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<X509Certificate>`
  `getCertificates()`
  Returns the list of X509 certificates loaded from this PEM file.
  `PrivateKey`
  `getPrivateKey()`
  Returns the private key loaded from this PEM file.
  `static String`
  `toPEM(X509Certificate certificate)`
  Converts an X509 certificate to PEM format.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### PEMFile

    public PEMFile(String filename) throws IOException, GeneralSecurityException
    Construct a PEMFile from the given file without a password.
    Parameters:
      `filename` - The path to the PEM file
    Throws:
      `IOException` - If the file cannot be read
      `GeneralSecurityException` - If the file cannot be parsed

  - ### PEMFile

    public PEMFile(String filename, String password) throws IOException, GeneralSecurityException
    Construct a PEMFile from the given file with the given password.
    Parameters:
      `filename` - The path to the PEM file
      `password` - The password to decrypt any encrypted private key
    Throws:
      `IOException` - If the file cannot be read
      `GeneralSecurityException` - If the file cannot be parsed

  - ### PEMFile

    public PEMFile(String filename, String password, String keyAlgorithm) throws IOException, GeneralSecurityException
    Construct a PEMFile from the given file with the given password and key algorithm.
    Parameters:
      `filename` - The path to the PEM file
      `password` - The password to decrypt any encrypted private key
      `keyAlgorithm` - The key algorithm, or null to auto-detect
    Throws:
      `IOException` - If the file cannot be read
      `GeneralSecurityException` - If the file cannot be parsed

  - ### PEMFile

    public PEMFile(String filename, String password, String passwordFilename, String keyAlgorithm) throws IOException, GeneralSecurityException
    Construct a PEMFile from the given file with the password read from a separate file.
    Parameters:
      `filename` - The path to the PEM file
      `password` - The password to decrypt any encrypted private key
      `passwordFilename` - The path to the file containing the password
      `keyAlgorithm` - The key algorithm, or null to auto-detect
    Throws:
      `IOException` - If the file cannot be read
      `GeneralSecurityException` - If the file cannot be parsed

  - ### PEMFile

    public PEMFile(String filename, InputStream fileStream, String password, String keyAlgorithm) throws IOException, GeneralSecurityException
    Construct a PEMFile from the given input stream with the given password and key algorithm.
    Parameters:
      `filename` - The filename to mention in error messages
      `fileStream` - The input stream containing the PEM data
      `password` - The password to decrypt any encrypted private key
      `keyAlgorithm` - The key algorithm, or null to auto-detect
    Throws:
      `IOException` - If the stream cannot be read
      `GeneralSecurityException` - If the data cannot be parsed

  - ### PEMFile

    public PEMFile(String filename, InputStream fileStream, String password, String passwordFilename, InputStream passwordFileStream, String keyAlgorithm) throws IOException, GeneralSecurityException
    Construct a PEMFile from the given input stream with the given password and key algorithm.
    Parameters:
      `filename` - the filename to mention in error messages, not used for anything else.
      `fileStream` - the stream containing the pem(s).
      `password` - password to load the pem objects.
      `passwordFilename` - the password filename to mention in error messages, not used for anything else.
      `passwordFileStream` - stream containing the password to load the pem objects.
      `keyAlgorithm` - the algorithm to help to know how to load the objects (guessed if null).
    Throws:
      `IOException` - if input can't be read.
      `GeneralSecurityException` - if input can't be parsed/loaded.

- ## Method Details

  - ### toPEM

    public static String toPEM(X509Certificate certificate) throws CertificateEncodingException
    Converts an X509 certificate to PEM format.
    Parameters:
      `certificate` - The certificate to convert
    Returns:
      The PEM-encoded certificate string
    Throws:
      `CertificateEncodingException` - If the certificate cannot be encoded

  - ### getCertificates

    public List<X509Certificate> getCertificates()
    Returns the list of X509 certificates loaded from this PEM file.
    Returns:
      the list of X509 certificates

  - ### getPrivateKey

    public PrivateKey getPrivateKey()
    Returns the private key loaded from this PEM file.
    Returns:
      the private key, or null if no private key was loaded