Class PKCS9Attribute

java.lang.Object
org.mozilla.jss.netscape.security.pkcs.PKCS9Attribute
All Implemented Interfaces:
DerEncoder

public class PKCS9Attribute extends Object implements DerEncoder
Class supporting any PKCS9 attribute except ExtendedCertificateAttribute. Supports DER decoding and access to attribute values, but not DER encoding or setting of values.
  • Field Details

  • Constructor Details

    • PKCS9Attribute

      public PKCS9Attribute(ObjectIdentifier oid, Object value) throws IllegalArgumentException
      Construct an attribute object from the attribute's OID and value. If the attribute is single-valued, provide only one value. If the attribute is multiple-valued, provide an array containing all the values. Arrays of length zero are accepted, though probably useless.

      The following table gives the class that value must have for a given attribute.

      value
      OID Attribute Type Name Kind Value Class
      1.2.840.113549.1.9.1 EmailAddress Multiple-valued String[]
      1.2.840.113549.1.9.2 UnstructuredName Multiple-valued String[]
      1.2.840.113549.1.9.3 ContentType Single-valued ObjectIdentifier
      1.2.840.113549.1.9.4 MessageDigest Single-valued byte[]
      1.2.840.113549.1.9.5 SigningTime Single-valued Date
      1.2.840.113549.1.9.6 Countersignature Multiple-valued SignerInfo[]
      1.2.840.113549.1.9.7 ChallengePassword Single-valued String
      1.2.840.113549.1.9.8 UnstructuredAddress Single-valued String[]
      1.2.840.113549.1.9.9 ExtendedCertificateAttributes Multiple-valued (not supported)
      1.2.840.113549.1.9.10 IssuerAndSerialNumber Single-valued (not supported)
      1.2.840.113549.1.9.11 PasswordCheck Single-valued (not supported)
      1.2.840.113549.1.9.12 PublicKey Single-valued (not supported)
      1.2.840.113549.1.9.13 SigningDescription Single-valued (not supported)
      1.2.840.113549.1.9.14 ExtensionRequest Single-valued Sequence
      Throws:
      IllegalArgumentException
    • PKCS9Attribute

      public PKCS9Attribute(String name, Object value) throws IllegalArgumentException
      Construct an attribute object from the attribute's name and value. If the attribute is single-valued, provide only one value. If the attribute is multiple-valued, provide an array containing all the values. Arrays of length zero are accepted, though probably useless.

      The following table gives the class that value must have for a given attribute. Reasonable variants of these attributes are accepted; in particular, case does not matter.

      value
      OID Attribute Type Name Kind Value Class
      1.2.840.113549.1.9.1 EmailAddress Multiple-valued String[]
      1.2.840.113549.1.9.2 UnstructuredName Multiple-valued String[]
      1.2.840.113549.1.9.3 ContentType Single-valued ObjectIdentifier
      1.2.840.113549.1.9.4 MessageDigest Single-valued byte[]
      1.2.840.113549.1.9.5 SigningTime Single-valued Date
      1.2.840.113549.1.9.6 Countersignature Multiple-valued SignerInfo[]
      1.2.840.113549.1.9.7 ChallengePassword Single-valued String
      1.2.840.113549.1.9.8 UnstructuredAddress Single-valued String[]
      1.2.840.113549.1.9.9 ExtendedCertificateAttributes Multiple-valued (not supported)
      1.2.840.113549.1.9.10 IssuerAndSerialNumber Single-valued (not supported)
      1.2.840.113549.1.9.11 PasswordCheck Single-valued (not supported)
      1.2.840.113549.1.9.12 PublicKey Single-valued (not supported)
      1.2.840.113549.1.9.13 SigningDescription Single-valued (not supported)
      1.2.840.113549.1.9.14 ExtensionRequest Single-valued Sequence
      Throws:
      IllegalArgumentException - if the name is not recognized of the value has the wrong type.
    • PKCS9Attribute

      public PKCS9Attribute(DerValue derVal) throws IOException
      Construct a PKCS9Attribute from its encoding on an input stream.
      Throws:
      IOException - on parsing error.
  • Method Details

    • derEncode

      public void derEncode(OutputStream out) throws IOException
      Write the DER encoding of this attribute to an output stream.

      N.B.: This method always encodes values of ChallengePassword and UnstructuredAddress attributes as ASN.1 PrintableStrings, without checking whether they should be encoded as T61Strings.

      Specified by:
      derEncode in interface DerEncoder
      Parameters:
      out - the stream on which the DER encoding is written.
      Throws:
      IOException
    • getValue

      public Object getValue()
      Get the value of this attribute. If the attribute is single-valued, return just the one value. If the attribute is multiple-valued, return an array containing all the values. It is possible for this array to be of length 0.

      The following table gives the class of the value returned, depending on the type of this attribute.

      value
      OID Attribute Type Name Kind Value Class
      1.2.840.113549.1.9.1 EmailAddress Multiple-valued String[]
      1.2.840.113549.1.9.2 UnstructuredName Multiple-valued String[]
      1.2.840.113549.1.9.3 ContentType Single-valued ObjectIdentifier
      1.2.840.113549.1.9.4 MessageDigest Single-valued byte[]
      1.2.840.113549.1.9.5 SigningTime Single-valued Date
      1.2.840.113549.1.9.6 Countersignature Multiple-valued SignerInfo[]
      1.2.840.113549.1.9.7 ChallengePassword Single-valued String
      1.2.840.113549.1.9.8 UnstructuredAddress Single-valued String[]
      1.2.840.113549.1.9.9 ExtendedCertificateAttributes Multiple-valued (not supported)
      1.2.840.113549.1.9.10 IssuerAndSerialNumber Single-valued (not supported)
      1.2.840.113549.1.9.11 PasswordCheck Single-valued (not supported)
      1.2.840.113549.1.9.12 PublicKey Single-valued (not supported)
      1.2.840.113549.1.9.13 SigningDescription Single-valued (not supported)
      1.2.840.113549.1.9.14 ExtensionRequest Single-valued Sequence
    • isSingleValued

      public boolean isSingleValued()
      Show whether this attribute is single-valued.
    • getOID

      public ObjectIdentifier getOID()
      Return the OID of this attribute.
    • getName

      public String getName()
      Return the name of this attribute.
    • getOID

      public static ObjectIdentifier getOID(String name)
      Return the OID for a given attribute name or null if we don't recognize the name.
    • getName

      public static String getName(ObjectIdentifier oid)
      Return the attribute name for a given OID or null if we don't recognize the oid.
    • toString

      public String toString()
      Returns a string representation of this attribute.
      Overrides:
      toString in class Object