# 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

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 Details

### 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. Multivalued 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 modification.
Throws:
  `NullPointerException` - if `encoded` is `null`
  `IllegalArgumentException` - if `encoded` is incorrectly formatted

## Method Details

### 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.

Multivalued 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 hashcode for this `PKCS12Attribute`
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