Record Class PEMRecord

java.lang.Object
java.lang.Record
java.security.PEMRecord
Record Components:
type - the type identifier in the PEM header without PEM syntax labels. For a public key, type would be "PUBLIC KEY".
pem - any data between the PEM header and footer.
leadingData - any non-PEM data preceding the PEM header when decoding.
All Implemented Interfaces:
DEREncodablePREVIEW

public record PEMRecord(String type, String pem, byte[] leadingData) extends Record implements DEREncodablePREVIEW
PEMRecord is a preview API of the Java platform.
Programs can only use PEMRecord when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
PEMRecord is a DEREncodablePREVIEW that represents Privacy-Enhanced Mail (PEM) data by its type and Base64 form. PEMDecoderPREVIEW and PEMEncoderPREVIEW use PEMRecord when representing the data as a cryptographic object is not desired or the type has no DEREncodable.

type and pem may not be null. leadingData may be null if no non-PEM data preceded PEM header during decoding. leadingData may be useful for reading metadata that accompanies PEM data.

No validation is performed during instantiation to ensure that type conforms to RFC 7468, that pem is valid Base64, or that pem matches the type. leadingData is not defensively copied and does not return a clone when leadingData() is called.

External Specifications
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    PEMRecord(String type, String pem)
    Creates a PEMRecord instance with a given type and pem data in String form.
    PEMRecord(String type, String pem, byte[] leadingData)
    Creates a PEMRecord instance with the given parameters.
  • Method Summary

    Modifier and Type
    Method
    Description
    final boolean
    Indicates whether some other object is "equal to" this one.
    byte[]
    Returns the binary encoding from the Base64 data contained in pem.
    final int
    Returns a hash code value for this object.
    byte[]
    Returns the value of the leadingData record component.
    pem()
    Returns the value of the pem record component.
    Returns the type and Base64 encoding in PEM format.
    Returns the value of the type record component.

    Methods declared in class Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • PEMRecord

      public PEMRecord(String type, String pem, byte[] leadingData)
      Creates a PEMRecord instance with the given parameters.
      Parameters:
      type - the type identifier
      pem - the Base64-encoded data encapsulated by the PEM header and footer.
      leadingData - any non-PEM data read during the decoding process before the PEM header. This value maybe null.
      Throws:
      IllegalArgumentException - if type is incorrectly formatted.
      NullPointerException - if type and/or pem are null.
    • PEMRecord

      public PEMRecord(String type, String pem)
      Creates a PEMRecord instance with a given type and pem data in String form. leadingData is set to null.
      Parameters:
      type - the PEM type identifier
      pem - the Base64-encoded data encapsulated by the PEM header and footer.
      Throws:
      IllegalArgumentException - if type is incorrectly formatted.
      NullPointerException - if type and/or pem are null.
  • Method Details

    • getEncoded

      public byte[] getEncoded()
      Returns the binary encoding from the Base64 data contained in pem.
      Returns:
      a new array of the binary encoding each time this method is called.
      Throws:
      IllegalArgumentException - if pem cannot be decoded.
    • toString

      public String toString()
      Returns the type and Base64 encoding in PEM format. leadingData is not returned by this method.
      Specified by:
      toString in class Record
      Returns:
      a string representation of the object.
      See Also:
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
      See Also:
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
      See Also:
    • type

      public String type()
      Returns the value of the type record component.
      Returns:
      the value of the type record component
    • pem

      public String pem()
      Returns the value of the pem record component.
      Returns:
      the value of the pem record component
    • leadingData

      public byte[] leadingData()
      Returns the value of the leadingData record component.
      Returns:
      the value of the leadingData record component