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