📄 derutf8string.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 + -