algorithmidentifier.java

来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 137 行

JAVA
137
字号
package org.bouncycastle.asn1.x509;import java.io.*;import java.util.Enumeration;import org.bouncycastle.asn1.*;public class AlgorithmIdentifier    implements DEREncodable{    private DERObjectIdentifier objectId;    private DERObject           parameters;    private boolean             parametersDefined = false;    public AlgorithmIdentifier(        DERObjectIdentifier     objectId)    {        this.objectId = objectId;    }    public AlgorithmIdentifier(        DERObjectIdentifier     objectId,        DERObject               parameters)    {        parametersDefined = true;        this.objectId = objectId;        this.parameters = parameters;    }    public AlgorithmIdentifier(        DERConstructedSequence  obj)    {        objectId = (DERObjectIdentifier)obj.getObjectAt(0);        if (obj.getSize() == 2)        {            parametersDefined = true;            parameters = (DERObject)obj.getObjectAt(1);        }        else        {            parameters = null;        }    }    public DERObjectIdentifier getObjectId()    {        return objectId;    }    public DERObject getParameters()    {        return parameters;    }    /**     * <pre>     *      AlgorithmIdentifier ::= SEQUENCE {     *                            algorithm OBJECT IDENTIFIER,     *                            parameters ANY DEFINED BY algorithm OPTIONAL }     * </pre>     */    public DERObject getDERObject()    {        DERConstructedSequence  seq = new DERConstructedSequence();        seq.addObject(objectId);        if (parametersDefined)        {            seq.addObject(parameters);        }        return seq;    }    public boolean equals(        Object  o)    {        if ((o == null) || !(o instanceof AlgorithmIdentifier))        {            return false;        }        AlgorithmIdentifier other = (AlgorithmIdentifier)o;        if (!this.getObjectId().equals(other.getObjectId()))        {            return false;        }        if (this.getParameters() == null && other.getParameters() == null)        {            return true;        }        if (this.getParameters() == null || other.getParameters() == null)        {            return false;        }        ByteArrayOutputStream   b1Out = new ByteArrayOutputStream();        ByteArrayOutputStream   b2Out = new ByteArrayOutputStream();        DEROutputStream         d1Out = new DEROutputStream(b1Out);        DEROutputStream         d2Out = new DEROutputStream(b2Out);        try        {            d1Out.writeObject(this.getParameters());            d2Out.writeObject(other.getParameters());            byte[]  b1 = b1Out.toByteArray();            byte[]  b2 = b2Out.toByteArray();            if (b1.length != b2.length)            {                return false;            }            for (int i = 0; i != b1.length; i++)            {                if (b1[i] != b2[i])                {                    return false;                }            }        }        catch (Exception e)        {            return false;        }        return true;    }}

⌨️ 快捷键说明

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