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

📄 dergenerator.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:   DERGenerator.java

package org.bouncycastle.asn1;

import java.io.*;

// Referenced classes of package org.bouncycastle.asn1:
//			ASN1Generator

public abstract class DERGenerator extends ASN1Generator
{

	private boolean _tagged;
	private boolean _isExplicit;
	private int _tagNo;

	protected DERGenerator(OutputStream out)
	{
		super(out);
		_tagged = false;
	}

	public DERGenerator(OutputStream out, int tagNo, boolean isExplicit)
	{
		super(out);
		_tagged = false;
		_tagged = true;
		_isExplicit = isExplicit;
		_tagNo = tagNo;
	}

	private void writeLength(OutputStream out, int length)
		throws IOException
	{
		if (length > 127)
		{
			int size = 1;
			for (int val = length; (val >>>= 8) != 0;)
				size++;

			out.write((byte)(size | 0x80));
			for (int i = (size - 1) * 8; i >= 0; i -= 8)
				out.write((byte)(length >> i));

		} else
		{
			out.write((byte)length);
		}
	}

	void writeDEREncoded(OutputStream out, int tag, byte bytes[])
		throws IOException
	{
		out.write(tag);
		writeLength(out, bytes.length);
		out.write(bytes);
	}

	void writeDEREncoded(int tag, byte bytes[])
		throws IOException
	{
		if (_tagged)
		{
			int tagNum = _tagNo | 0x80;
			if (_isExplicit)
			{
				int newTag = _tagNo | 0x20 | 0x80;
				ByteArrayOutputStream bOut = new ByteArrayOutputStream();
				writeDEREncoded(((OutputStream) (bOut)), tag, bytes);
				writeDEREncoded(_out, newTag, bOut.toByteArray());
			} else
			if ((tag & 0x20) != 0)
				writeDEREncoded(_out, tagNum | 0x20, bytes);
			else
				writeDEREncoded(_out, tagNum, bytes);
		} else
		{
			writeDEREncoded(_out, tag, bytes);
		}
	}

	void writeDEREncoded(OutputStream out, int tag, InputStream in)
		throws IOException
	{
		out.write(tag);
		ByteArrayOutputStream bOut = new ByteArrayOutputStream();
		for (int b = 0; (b = in.read()) >= 0;)
			bOut.write(b);

		byte bytes[] = bOut.toByteArray();
		writeLength(out, bytes.length);
		out.write(bytes);
	}
}

⌨️ 快捷键说明

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