FileDocCategorySizeDatePackage
X509Extensions.javaAPI DocAndroid 1.5 API11145Wed May 06 22:41:06 BST 2009org.bouncycastle.asn1.x509

X509Extensions

public class X509Extensions extends org.bouncycastle.asn1.ASN1Encodable

Fields Summary
public static final org.bouncycastle.asn1.DERObjectIdentifier
SubjectDirectoryAttributes
Subject Directory Attributes
public static final org.bouncycastle.asn1.DERObjectIdentifier
SubjectKeyIdentifier
Subject Key Identifier
public static final org.bouncycastle.asn1.DERObjectIdentifier
KeyUsage
Key Usage
public static final org.bouncycastle.asn1.DERObjectIdentifier
PrivateKeyUsagePeriod
Private Key Usage Period
public static final org.bouncycastle.asn1.DERObjectIdentifier
SubjectAlternativeName
Subject Alternative Name
public static final org.bouncycastle.asn1.DERObjectIdentifier
IssuerAlternativeName
Issuer Alternative Name
public static final org.bouncycastle.asn1.DERObjectIdentifier
BasicConstraints
Basic Constraints
public static final org.bouncycastle.asn1.DERObjectIdentifier
CRLNumber
CRL Number
public static final org.bouncycastle.asn1.DERObjectIdentifier
ReasonCode
Reason code
public static final org.bouncycastle.asn1.DERObjectIdentifier
InstructionCode
Hold Instruction Code
public static final org.bouncycastle.asn1.DERObjectIdentifier
InvalidityDate
Invalidity Date
public static final org.bouncycastle.asn1.DERObjectIdentifier
DeltaCRLIndicator
Delta CRL indicator
public static final org.bouncycastle.asn1.DERObjectIdentifier
IssuingDistributionPoint
Issuing Distribution Point
public static final org.bouncycastle.asn1.DERObjectIdentifier
CertificateIssuer
Certificate Issuer
public static final org.bouncycastle.asn1.DERObjectIdentifier
NameConstraints
Name Constraints
public static final org.bouncycastle.asn1.DERObjectIdentifier
CRLDistributionPoints
CRL Distribution Points
public static final org.bouncycastle.asn1.DERObjectIdentifier
CertificatePolicies
Certificate Policies
public static final org.bouncycastle.asn1.DERObjectIdentifier
PolicyMappings
Policy Mappings
public static final org.bouncycastle.asn1.DERObjectIdentifier
AuthorityKeyIdentifier
Authority Key Identifier
public static final org.bouncycastle.asn1.DERObjectIdentifier
PolicyConstraints
Policy Constraints
public static final org.bouncycastle.asn1.DERObjectIdentifier
ExtendedKeyUsage
Extended Key Usage
public static final org.bouncycastle.asn1.DERObjectIdentifier
FreshestCRL
Freshest CRL
public static final org.bouncycastle.asn1.DERObjectIdentifier
InhibitAnyPolicy
Inhibit Any Policy
public static final org.bouncycastle.asn1.DERObjectIdentifier
AuthorityInfoAccess
Authority Info Access
public static final org.bouncycastle.asn1.DERObjectIdentifier
SubjectInfoAccess
Subject Info Access
public static final org.bouncycastle.asn1.DERObjectIdentifier
BiometricInfo
BiometricInfo
public static final org.bouncycastle.asn1.DERObjectIdentifier
QCStatements
QCStatements
private org.bouncycastle.asn1.OrderedTable
table
Constructors Summary
public X509Extensions(org.bouncycastle.asn1.ASN1Sequence seq)
Constructor from ASN1Sequence. the extensions are a list of constructed sequences, either with (OID, OctetString) or (OID, Boolean, OctetString)

        Enumeration e = seq.getObjects();

        while (e.hasMoreElements())
        {
            ASN1Sequence            s = ASN1Sequence.getInstance(e.nextElement());

            // BEGIN android-changed
            int sSize = s.size();
            DERObjectIdentifier key = (DERObjectIdentifier) s.getObjectAt(0);
            Object value;
            
            if (sSize == 3)
            {
                value = new X509Extension(DERBoolean.getInstance(s.getObjectAt(1)), ASN1OctetString.getInstance(s.getObjectAt(2)));
            }
            else if (sSize == 2)
            {
                value = new X509Extension(false, ASN1OctetString.getInstance(s.getObjectAt(1)));
            }
            else
            {
                throw new IllegalArgumentException("Bad sequence size: " + sSize);
            }

            table.add(key, value);
            // END android-changed
        }
    
public X509Extensions(Hashtable extensions)
constructor from a table of extensions.

it's is assumed the table contains OID/String pairs.

        this(null, extensions);
    
public X509Extensions(Vector ordering, Hashtable extensions)
Constructor from a table of extensions with ordering.

It's is assumed the table contains OID/String pairs.

        Enumeration e;

        if (ordering == null)
        {
            e = extensions.keys();
        }
        else
        {
            e = ordering.elements();
        }

        // BEGIN android-changed
        while (e.hasMoreElements())
        {
            DERObjectIdentifier     oid = (DERObjectIdentifier)e.nextElement();
            X509Extension           ext = (X509Extension)extensions.get(oid);
            table.add(oid, ext);
        }
        // END android-changed
    
public X509Extensions(Vector objectIDs, Vector values)
Constructor from two vectors

param
objectIDs a vector of the object identifiers.
param
values a vector of the extension values.

        Enumeration e = objectIDs.elements();

        // BEGIN android-changed
        int count = 0;
        
        while (e.hasMoreElements())
        {
            DERObjectIdentifier     oid = (DERObjectIdentifier)e.nextElement();
            X509Extension           ext = (X509Extension)values.elementAt(count);

            table.add(oid, ext);
            count++;
        }
        // END android-changed
    
Methods Summary
public booleanequals(java.lang.Object o)

        if (!(o instanceof X509Extensions))
        {
            return false;
        }

        X509Extensions  other = (X509Extensions)o;

        // BEGIN android-changed
        Enumeration     e1 = table.getKeys();
        Enumeration     e2 = other.table.getKeys();
        // END android-changed

        while (e1.hasMoreElements() && e2.hasMoreElements())
        {
            Object  o1 = e1.nextElement();
            Object  o2 = e2.nextElement();
            
            if (!o1.equals(o2))
            {
                return false;
            }
        }

        if (e1.hasMoreElements() || e2.hasMoreElements())
        {
            return false;
        }

        return true;
    
public X509ExtensiongetExtension(org.bouncycastle.asn1.DERObjectIdentifier oid)
return the extension represented by the object identifier passed in.

return
the extension if it's present, null otherwise.

        // BEGIN android-changed
        return (X509Extension)table.get(oid);
        // END android-changed
    
public static org.bouncycastle.asn1.x509.X509ExtensionsgetInstance(org.bouncycastle.asn1.ASN1TaggedObject obj, boolean explicit)

    // END android-changed

       
         
                  
    
        return getInstance(ASN1Sequence.getInstance(obj, explicit));
    
public static org.bouncycastle.asn1.x509.X509ExtensionsgetInstance(java.lang.Object obj)

        if (obj == null || obj instanceof X509Extensions)
        {
            return (X509Extensions)obj;
        }

        if (obj instanceof ASN1Sequence)
        {
            return new X509Extensions((ASN1Sequence)obj);
        }

        if (obj instanceof ASN1TaggedObject)
        {
            return getInstance(((ASN1TaggedObject)obj).getObject());
        }

        throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
    
public inthashCode()

        // BEGIN android-changed
        int             size = table.size();
        int             hashCode = 0;

        for (int i = 0; i < size; i++) {
            hashCode ^= table.getKey(i).hashCode();
            hashCode ^= table.getValue(i).hashCode();
        }
        // END android-changed

        return hashCode;
    
public java.util.Enumerationoids()
return an Enumeration of the extension field's object ids.

        // BEGIN android-changed
        return table.getKeys();
        // END android-changed
    
public org.bouncycastle.asn1.DERObjecttoASN1Object()
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension

Extension ::= SEQUENCE {
extnId EXTENSION.&id ({ExtensionSet}),
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }

        // BEGIN android-changed
        int                     size = table.size();
        ASN1EncodableVector     vec = new ASN1EncodableVector();

        for (int i = 0; i < size; i++) {
            DERObjectIdentifier     oid = table.getKey(i);
            X509Extension           ext = (X509Extension)table.getValue(i);
            ASN1EncodableVector     v = new ASN1EncodableVector();

            v.add(oid);

            if (ext.isCritical())
            {
                v.add(DERBoolean.TRUE);
            }

            v.add(ext.getValue());

            vec.add(new DERSequence(v));
        }
        // END android-changed
        
        return new DERSequence(vec);