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

DERUTF8String

public class DERUTF8String extends DERObject implements DERString
DER UTF8String object.

Fields Summary
String
string
Constructors Summary
DERUTF8String(byte[] string)
basic constructor - byte encoded string.

        int i = 0;
        int length = 0;

        while (i < string.length)
        {
            length++;
            if ((string[i] & 0xe0) == 0xe0)
            {
                i += 3;
            }
            else if ((string[i] & 0xc0) == 0xc0)
            {
                i += 2;
            }
            else
            {
                i += 1;
            }
        }

        char[]  cs = new char[length];

        i = 0;
        length = 0;

        while (i < string.length)
        {
            char    ch;

            if ((string[i] & 0xe0) == 0xe0)
            {
                ch = (char)(((string[i] & 0x1f) << 12)
                      | ((string[i + 1] & 0x3f) << 6) | (string[i + 2] & 0x3f));
                i += 3;
            }
            else if ((string[i] & 0xc0) == 0xc0)
            {
                ch = (char)(((string[i] & 0x3f) << 6) | (string[i + 1] & 0x3f));
                i += 2;
            }
            else
            {
                ch = (char)(string[i] & 0xff);
                i += 1;
            }

            cs[length++] = ch;
        }

        this.string = new String(cs);
    
public DERUTF8String(String string)
basic constructor

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

        char[]                  c = string.toCharArray();
        ByteArrayOutputStream   bOut = new ByteArrayOutputStream();

        for (int i = 0; i != c.length; i++)
        {
            char    ch = c[i];

            if (ch < 0x0080)
            {
                bOut.write(ch);
            }
            else if (ch < 0x0800)
            {
                bOut.write(0xc0 | (ch >> 6));
                bOut.write(0x80 | (ch & 0x3f));
            }
            else
            {
                bOut.write(0xe0 | (ch >> 12));
                bOut.write(0x80 | ((ch >> 6) & 0x3F));
                bOut.write(0x80 | (ch & 0x3F));
            }
        }

        out.writeEncoded(UTF8_STRING, bOut.toByteArray());
    
public booleanequals(java.lang.Object o)

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

        DERUTF8String  s = (DERUTF8String)o;

        return this.getString().equals(s.getString());
    
public static org.bouncycastle.asn1.DERUTF8StringgetInstance(java.lang.Object obj)
return an UTF8 string from the passed in object.

exception
IllegalArgumentException if the object cannot be converted.

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

        if (obj instanceof ASN1OctetString)
        {
            return new DERUTF8String(((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.DERUTF8StringgetInstance(ASN1TaggedObject obj, boolean explicit)
return an UTF8 String 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 java.lang.StringgetString()

        return string;
    
public inthashCode()

        return this.getString().hashCode();