⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 derutf8string.java

📁 进行与数字证书相关开发必须的java源码
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   DERUTF8String.java

package jit.asn1;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

// Referenced classes of package jit.asn1:
//            DERObject, ASN1OctetString, ASN1TaggedObject, DERString, 
//            DEROutputStream

public class DERUTF8String extends DERObject
    implements DERString
{

    String string;

    public static DERUTF8String getInstance(Object obj)
    {
        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());
        else
            throw new IllegalArgumentException("illegal object in getInstance: ".concat(String.valueOf(String.valueOf(obj.getClass().getName()))));
    }

    public static DERUTF8String getInstance(ASN1TaggedObject obj, boolean explicit)
    {
        return getInstance(obj.getObject());
    }

    DERUTF8String(byte string[])
    {
        int i = 0;
        int length = 0;
        while(i < string.length) 
        {
            length++;
            if((string[i] & 0xe0) == 224)
                i += 3;
            else
            if((string[i] & 0xc0) == 192)
                i += 2;
            else
                i++;
        }
        char cs[] = new char[length];
        i = 0;
        length = 0;
        char ch;
        for(; i < string.length; cs[length++] = ch)
        {
            if((string[i] & 0xe0) == 224)
            {
                ch = (char)((string[i] & 0x1f) << 12 | (string[i + 1] & 0x3f) << 6 | string[i + 2] & 0x3f);
                i += 3;
                continue;
            }
            if((string[i] & 0xc0) == 192)
            {
                ch = (char)((string[i] & 0x3f) << 6 | string[i + 1] & 0x3f);
                i += 2;
            } else
            {
                ch = (char)(string[i] & 0xff);
                i++;
            }
        }

        this.string = new String(cs);
    }

    public DERUTF8String(String string)
    {
        this.string = string;
    }

    public String getString()
    {
        return string;
    }

    public int hashCode()
    {
        return getString().hashCode();
    }

    public boolean equals(Object o)
    {
        if(!(o instanceof DERUTF8String))
        {
            return false;
        } else
        {
            DERUTF8String s = (DERUTF8String)o;
            return getString().equals(s.getString());
        }
    }

    void encode(DEROutputStream out)
        throws IOException
    {
        char c[] = string.toCharArray();
        ByteArrayOutputStream bOut = new ByteArrayOutputStream();
        for(int i = 0; i != c.length; i++)
        {
            char ch = c[i];
            if(ch < '\200')
            {
                bOut.write(ch);
                continue;
            }
            if(ch < '\u0800')
            {
                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(12, bOut.toByteArray());
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -