FileDocCategorySizeDatePackage
DERObjectIdentifier.javaAPI DocAzureus 3.0.3.44499Tue Jun 08 05:12:56 BST 2004org.bouncycastle.asn1

DERObjectIdentifier

public class DERObjectIdentifier extends DERObject

Fields Summary
String
identifier
Constructors Summary
DERObjectIdentifier(byte[] bytes)

        StringBuffer    objId = new StringBuffer();
        int             value = 0;
        boolean         first = true;

        for (int i = 0; i != bytes.length; i++)
        {
            int b = bytes[i] & 0xff;

            value = value * 128 + (b & 0x7f);
            if ((b & 0x80) == 0)             // end of number reached
            {
                if (first)
                {
                    switch (value / 40)
                    {
                    case 0:
                        objId.append('0");
                        break;
                    case 1:
                        objId.append('1");
                        value -= 40;
                        break;
                    default:
                        objId.append('2");
                        value -= 80;
                    }
                    first = false;
                }

                objId.append('.");
                objId.append(Integer.toString(value));
                value = 0;
            }
        }

        this.identifier = objId.toString();
    
public DERObjectIdentifier(String identifier)

        this.identifier = identifier;
    
Methods Summary
voidencode(DEROutputStream out)

        OIDTokenizer            tok = new OIDTokenizer(identifier);
        ByteArrayOutputStream   bOut = new ByteArrayOutputStream();
        DEROutputStream         dOut = new DEROutputStream(bOut);

        writeField(bOut, 
                    Integer.parseInt(tok.nextToken()) * 40
                    + Integer.parseInt(tok.nextToken()));

        while (tok.hasMoreTokens())
        {
            writeField(bOut, Integer.parseInt(tok.nextToken()));
        }

        dOut.close();

        byte[]  bytes = bOut.toByteArray();

        out.writeEncoded(OBJECT_IDENTIFIER, bytes);
    
public booleanequals(java.lang.Object o)

        if ((o == null) || !(o instanceof DERObjectIdentifier))
        {
            return false;
        }

        return identifier.equals(((DERObjectIdentifier)o).identifier);
    
public java.lang.StringgetId()

        return identifier;
    
public static org.bouncycastle.asn1.DERObjectIdentifiergetInstance(java.lang.Object obj)
return an OID from the passed in object

exception
IllegalArgumentException if the object cannot be converted.

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

        if (obj instanceof ASN1OctetString)
        {
            return new DERObjectIdentifier(((ASN1OctetString)obj).getOctets());
        }

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

        throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
    
public static org.bouncycastle.asn1.DERObjectIdentifiergetInstance(ASN1TaggedObject obj, boolean explicit)
return an Object Identifier from a tagged object.

param
obj the tagged object holding the object we want
param
explicit true if the object is meant to be explicitly tagged false otherwise.
exception
IllegalArgumentException if the tagged object cannot be converted.

        return getInstance(obj.getObject());
    
public inthashCode()

        return identifier.hashCode();
    
private voidwriteField(java.io.OutputStream out, int fieldValue)

        if (fieldValue >= (1 << 7))
        {
            if (fieldValue >= (1 << 14))
            {
                if (fieldValue >= (1 << 21))
                {
                    if (fieldValue >= (1 << 28))
                    {
                        out.write((fieldValue >> 28) | 0x80);
                    }
                    out.write((fieldValue >> 21) | 0x80);
                }
                out.write((fieldValue >> 14) | 0x80);
            }
            out.write((fieldValue >> 7) | 0x80);
        }
        out.write(fieldValue & 0x7f);