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

📄 berconstructedoctetstring.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   BERConstructedOctetString.java

package org.bouncycastle.asn1;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Vector;

// Referenced classes of package org.bouncycastle.asn1:
//			DEROctetString, ASN1OutputStream, BEROutputStream, DEREncodable, 
//			DEROutputStream, DERObject

public class BERConstructedOctetString extends DEROctetString
{

	private static final int MAX_LENGTH = 1000;
	private Vector octs;

	private static byte[] toBytes(Vector octs)
	{
		ByteArrayOutputStream bOut = new ByteArrayOutputStream();
		for (int i = 0; i != octs.size(); i++)
			try
			{
				DEROctetString o = (DEROctetString)octs.elementAt(i);
				bOut.write(o.getOctets());
			}
			catch (ClassCastException e)
			{
				throw new IllegalArgumentException((new StringBuilder()).append(octs.elementAt(i).getClass().getName()).append(" found in input should only contain DEROctetString").toString());
			}
			catch (IOException e)
			{
				throw new IllegalArgumentException((new StringBuilder()).append("exception converting octets ").append(e.toString()).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
			{
				for (int i = 0; i < string.length; i += 1000)
				{
					int end;
					if (i + 1000 > string.length)
						end = string.length;
					else
						end = i + 1000;
					byte nStr[] = new byte[end - i];
					System.arraycopy(string, i, 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 + -