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

GeneralName

public class GeneralName extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
The GeneralName object.
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER}

OtherName ::= SEQUENCE {
type-id OBJECT IDENTIFIER,
value [0] EXPLICIT ANY DEFINED BY type-id }

EDIPartyName ::= SEQUENCE {
nameAssigner [0] DirectoryString OPTIONAL,
partyName [1] DirectoryString }

Name ::= CHOICE { RDNSequence }

Fields Summary
public static final int
otherName
public static final int
rfc822Name
public static final int
dNSName
public static final int
x400Address
public static final int
directoryName
public static final int
ediPartyName
public static final int
uniformResourceIdentifier
public static final int
iPAddress
public static final int
registeredID
org.bouncycastle.asn1.DEREncodable
obj
int
tag
Constructors Summary
public GeneralName(X509Name dirName)

   
     
          
    
        this.obj = dirName;
        this.tag = 4;
    
public GeneralName(org.bouncycastle.asn1.DERObject name, int tag)

deprecated
this constructor seems the wrong way round! Use GeneralName(tag, name).

        this.obj = name;
        this.tag = tag;
    
public GeneralName(int tag, org.bouncycastle.asn1.ASN1Encodable name)
When the subjectAltName extension contains an Internet mail address, the address MUST be included as an rfc822Name. The format of an rfc822Name is an "addr-spec" as defined in RFC 822 [RFC 822]. When the subjectAltName extension contains a domain name service label, the domain name MUST be stored in the dNSName (an IA5String). The name MUST be in the "preferred name syntax," as specified by RFC 1034 [RFC 1034]. When the subjectAltName extension contains a URI, the name MUST be stored in the uniformResourceIdentifier (an IA5String). The name MUST be a non-relative URL, and MUST follow the URL syntax and encoding rules specified in [RFC 1738]. The name must include both a scheme (e.g., "http" or "ftp") and a scheme-specific-part. The scheme- specific-part must include a fully qualified domain name or IP address as the host. When the subjectAltName extension contains a iPAddress, the address MUST be stored in the octet string in "network byte order," as specified in RFC 791 [RFC 791]. The least significant bit (LSB) of each octet is the LSB of the corresponding byte in the network address. For IP Version 4, as specified in RFC 791, the octet string MUST contain exactly four octets. For IP Version 6, as specified in RFC 1883, the octet string MUST contain exactly sixteen octets [RFC 1883].

        this.obj = name;
        this.tag = tag;
    
public GeneralName(int tag, String name)
Create a General name for the given tag from the passed in String.

param
tag tag number
param
name string representation of name

        if (tag == rfc822Name || tag == dNSName || tag == uniformResourceIdentifier)
        {
            this.tag = tag;
            this.obj = new DERIA5String(name);
        }
        else if (tag == registeredID)
        {
            this.tag = tag;
            this.obj = new DERObjectIdentifier(name);
        }
        else
        {
            throw new IllegalArgumentException("can't process String for tag: " + tag);
        }
    
Methods Summary
public static org.bouncycastle.asn1.x509.GeneralNamegetInstance(java.lang.Object obj)

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

        if (obj instanceof ASN1TaggedObject)
        {
            ASN1TaggedObject    tagObj = (ASN1TaggedObject)obj;
            int                 tag = tagObj.getTagNo();

            switch (tag)
            {
            case otherName:
                return new GeneralName(ASN1Sequence.getInstance(tagObj, false), tag);
            case rfc822Name:
                return new GeneralName(DERIA5String.getInstance(tagObj, false), tag);
            case dNSName:
                return new GeneralName(DERIA5String.getInstance(tagObj, false), tag);
            case x400Address:
                throw new IllegalArgumentException("unknown tag: " + tag);
            case directoryName:
                return new GeneralName(ASN1Sequence.getInstance(tagObj, true), tag);
            case ediPartyName:
                return new GeneralName(ASN1Sequence.getInstance(tagObj, false), tag);
            case uniformResourceIdentifier:
                return new GeneralName(DERIA5String.getInstance(tagObj, false), tag);
            case iPAddress:
                return new GeneralName(ASN1OctetString.getInstance(tagObj, false), tag);
            case registeredID:
                return new GeneralName(DERObjectIdentifier.getInstance(tagObj, false), tag);
            }
        }

        throw new IllegalArgumentException("unknown object in getInstance");
    
public static org.bouncycastle.asn1.x509.GeneralNamegetInstance(org.bouncycastle.asn1.ASN1TaggedObject tagObj, boolean explicit)

        return GeneralName.getInstance(ASN1TaggedObject.getInstance(tagObj, true));
    
public org.bouncycastle.asn1.DEREncodablegetName()

        return obj;
    
public intgetTagNo()

        return tag;
    
public org.bouncycastle.asn1.DERObjecttoASN1Object()

        if (tag == directoryName)       // directoryName is explicitly tagged as it is a CHOICE
        {
            return new DERTaggedObject(true, tag, obj);
        }
        else
        {
            return new DERTaggedObject(false, tag, obj);
        }