Module java.base
Package java.security

## Class PKCS12Attribute

- java.lang.Object
- - java.security.PKCS12Attribute

- All Implemented Interfaces:
    `KeyStore.Entry.Attribute`

      public final class PKCS12Attribute
      extends Object
      implements KeyStore.Entry.Attribute

  An attribute associated with a PKCS12 keystore entry. The attribute name is an ASN.1 Object Identifier and the attribute value is a set of ASN.1 types.
  Since:
    1.8

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PKCS12Attribute​(byte[] encoded)` | Constructs a PKCS12 attribute from its ASN.1 DER encoding.
    `PKCS12Attribute​(String name, String value)` | Constructs a PKCS12 attribute from its name and value.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(Object obj)` | Compares this `PKCS12Attribute` and a specified object for equality.
    `byte[]` | `getEncoded()` | Returns the attribute's ASN.1 DER encoding.
    `String` | `getName()` | Returns the attribute's ASN.1 Object Identifier represented as a list of dot-separated integers.
    `String` | `getValue()` | Returns the attribute's ASN.1 DER-encoded value as a string.
    `int` | `hashCode()` | Returns the hashcode for this `PKCS12Attribute`.
    `String` | `toString()` | Returns a string representation of this `PKCS12Attribute`.

    - ### Methods declared in class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### PKCS12Attribute

          public PKCS12Attribute​(String name,
                                 String value)

      Constructs a PKCS12 attribute from its name and value. The name is an ASN.1 Object Identifier represented as a list of dot-separated integers. A string value is represented as the string itself. A binary value is represented as a string of colon-separated pairs of hexadecimal digits. Multi-valued attributes are represented as a comma-separated list of values, enclosed in square brackets. See `Arrays.toString(java.lang.Object[])`.

      A string value will be DER-encoded as an ASN.1 UTF8String and a binary value will be DER-encoded as an ASN.1 Octet String.

      Parameters:
        `name` - the attribute's identifier
        `value` - the attribute's value
      Throws:
        `NullPointerException` - if `name` or `value` is `null`
        `IllegalArgumentException` - if `name` or `value` is incorrectly formatted

    - #### PKCS12Attribute

          public PKCS12Attribute​(byte[] encoded)

      Constructs a PKCS12 attribute from its ASN.1 DER encoding. The DER encoding is specified by the following ASN.1 definition:

           Attribute ::= SEQUENCE {
               type   AttributeType,
               values SET OF AttributeValue
           }
           AttributeType ::= OBJECT IDENTIFIER
           AttributeValue ::= ANY defined by type

      Parameters:
        `encoded` - the attribute's ASN.1 DER encoding. It is cloned to prevent subsequent modificaion.
      Throws:
        `NullPointerException` - if `encoded` is `null`
        `IllegalArgumentException` - if `encoded` is incorrectly formatted

  - ### Method Detail

    - #### getName

          public String getName()

      Returns the attribute's ASN.1 Object Identifier represented as a list of dot-separated integers.
      Specified by:
        `getName` in interface `KeyStore.Entry.Attribute`
      Returns:
        the attribute's identifier

    - #### getValue

          public String getValue()

      Returns the attribute's ASN.1 DER-encoded value as a string. An ASN.1 DER-encoded value is returned in one of the following `String` formats:
      - the DER encoding of a basic ASN.1 type that has a natural string representation is returned as the string itself. Such types are currently limited to BOOLEAN, INTEGER, OBJECT IDENTIFIER, UTCTime, GeneralizedTime and the following six ASN.1 string types: UTF8String, PrintableString, T61String, IA5String, BMPString and GeneralString.
      - the DER encoding of any other ASN.1 type is not decoded but returned as a binary string of colon-separated pairs of hexadecimal digits.
      Multi-valued attributes are represented as a comma-separated list of values, enclosed in square brackets. See `Arrays.toString(java.lang.Object[])`.
      Specified by:
        `getValue` in interface `KeyStore.Entry.Attribute`
      Returns:
        the attribute value's string encoding

    - #### getEncoded

          public byte[] getEncoded()

      Returns the attribute's ASN.1 DER encoding.
      Returns:
        a clone of the attribute's DER encoding

    - #### equals

          public boolean equals​(Object obj)

      Compares this `PKCS12Attribute` and a specified object for equality.
      Overrides:
        `equals` in class `Object`
      Parameters:
        `obj` - the comparison object
      Returns:
        true if `obj` is a `PKCS12Attribute` and their DER encodings are equal.
      See Also:
        `Object.hashCode()`, `HashMap`

    - #### hashCode

          public int hashCode()

      Returns the hashcode for this `PKCS12Attribute`. The hash code is computed from its DER encoding.
      Overrides:
        `hashCode` in class `Object`
      Returns:
        the hash code
      See Also:
        `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`

    - #### toString

          public String toString()

      Returns a string representation of this `PKCS12Attribute`.
      Overrides:
        `toString` in class `Object`
      Returns:
        a name/value pair separated by an 'equals' symbol