📄 berconstructedoctetstring.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: BERConstructedOctetString.java
package jit.asn1;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Vector;
// Referenced classes of package jit.asn1:
// DEROctetString, ASN1OutputStream, BEROutputStream, DEREncodable,
// ASN1OctetString, DEROutputStream, DERObject
public class BERConstructedOctetString extends DEROctetString
{
private Vector octs;
private static byte[] toBytes(Vector octs)
{
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
for(int i = 0; i != octs.size(); i++)
{
DEROctetString o = (DEROctetString)octs.elementAt(i);
try
{
bOut.write(o.getOctets());
}
catch(IOException e)
{
throw new RuntimeException("exception converting octets ".concat(String.valueOf(String.valueOf(e.toString()))));
}
}
return bOut.toByteArray();
}
public BERConstructedOctetString(byte string[])
{
super(string);
}
public BERConstructedOctetString(Vector octs)
{
super(toBytes(octs));
this.octs = octs;
}
public BERConstructedOctetString(DERObject obj)
{
super(obj);
}
public BERConstructedOctetString(DEREncodable obj)
{
super(obj.getDERObject());
}
public byte[] getOctets()
{
return string;
}
public Enumeration getObjects()
{
if(octs == null)
return generateOcts().elements();
else
return octs.elements();
}
private Vector generateOcts()
{
int start = 0;
int end = 0;
Vector vec = new Vector();
byte nStr[];
for(; end + 1 < string.length; end++)
if(string[end] == 0 && string[end + 1] == 0)
{
nStr = new byte[(end - start) + 1];
System.arraycopy(string, start, nStr, 0, nStr.length);
vec.addElement(new DEROctetString(nStr));
start = end + 1;
}
nStr = new byte[string.length - start];
System.arraycopy(string, start, nStr, 0, nStr.length);
vec.addElement(new DEROctetString(nStr));
return vec;
}
public void encode(DEROutputStream out)
throws IOException
{
if((out instanceof ASN1OutputStream) || (out instanceof BEROutputStream))
{
out.write(36);
out.write(128);
if(octs != null)
{
for(int i = 0; i != octs.size(); i++)
out.writeObject(octs.elementAt(i));
} else
{
int start = 0;
byte nStr[];
for(int end = 0; end + 1 < string.length; end++)
if(string[end] == 0 && string[end + 1] == 0)
{
nStr = new byte[(end - start) + 1];
System.arraycopy(string, start, nStr, 0, nStr.length);
out.writeObject(new DEROctetString(nStr));
start = end + 1;
}
nStr = new byte[string.length - start];
System.arraycopy(string, start, nStr, 0, nStr.length);
out.writeObject(new DEROctetString(nStr));
}
out.write(0);
out.write(0);
} else
{
super.encode(out);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -