bergenerator.java

来自「J2ME加密算法的代码!里面包括常用的算法」· Java 代码 · 共 101 行

JAVA
101
字号
package org.bouncycastle.asn1;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class BERGenerator    extends ASN1Generator{    private boolean      _tagged = false;    private boolean      _isExplicit;    private int          _tagNo;        protected BERGenerator(        OutputStream out)    {        super(out);    }    public BERGenerator(        OutputStream out,        int tagNo,        boolean isExplicit)     {        super(out);                _tagged = true;        _isExplicit = isExplicit;        _tagNo = tagNo;    }    public OutputStream getRawOutputStream()    {        return _out;    }        private void writeHdr(        int tag)        throws IOException    {        _out.write(tag);        _out.write(0x80);    }        protected void writeBERHeader(        int tag)         throws IOException    {        int tagNum = _tagNo | DERTags.TAGGED;                if (_tagged)        {            if (_isExplicit)            {                writeHdr(tagNum | DERTags.CONSTRUCTED);                writeHdr(tag);            }            else            {                   if ((tag & DERTags.CONSTRUCTED) != 0)                {                    writeHdr(tagNum | DERTags.CONSTRUCTED);                }                else                {                    writeHdr(tagNum);                }            }        }        else        {            writeHdr(tag);        }    }        protected void writeBERBody(        InputStream contentStream)        throws IOException    {        int ch;                while ((ch = contentStream.read()) >= 0)        {            _out.write(ch);        }    }    protected void writeBEREnd()        throws IOException    {        _out.write(0x00);        _out.write(0x00);                if (_tagged && _isExplicit)  // write extra end for tag header        {            _out.write(0x00);            _out.write(0x00);        }    }}

⌨️ 快捷键说明

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