derinteger.java

来自「bouncycastle 是一个JAVA安全提供者」· Java 代码 · 共 130 行

JAVA
130
字号
package org.bouncycastle.asn1;import java.io.IOException;import java.math.BigInteger;public class DERInteger    extends DERObject{    byte[]      bytes;    /**     * return an integer from the passed in object     *     * @exception IllegalArgumentException if the object cannot be converted.     */    public static DERInteger getInstance(        Object  obj)    {        if (obj == null || obj instanceof DERInteger)        {            return (DERInteger)obj;        }        if (obj instanceof ASN1OctetString)        {            return new DERInteger(((ASN1OctetString)obj).getOctets());        }        if (obj instanceof ASN1TaggedObject)        {            return getInstance(((ASN1TaggedObject)obj).getObject());        }        throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());    }    /**     * return an Integer from a tagged object.     *     * @param obj the tagged object holding the object we want     * @param explicit true if the object is meant to be explicitly     *              tagged false otherwise.     * @exception IllegalArgumentException if the tagged object cannot     *               be converted.     */    public static DERInteger getInstance(        ASN1TaggedObject obj,        boolean          explicit)    {        return getInstance(obj.getObject());    }    public DERInteger(        int         value)    {        bytes = BigInteger.valueOf(value).toByteArray();    }    public DERInteger(        BigInteger   value)    {        bytes = value.toByteArray();    }    public DERInteger(        byte[]   bytes)    {        this.bytes = bytes;    }    public BigInteger getValue()    {        return new BigInteger(bytes);    }    /**     * in some cases positive values get crammed into a space,     * that's not quite big enough...     */    public BigInteger getPositiveValue()    {        return new BigInteger(1, bytes);    }    void encode(        DEROutputStream out)        throws IOException    {        out.writeEncoded(INTEGER, bytes);    }        public int hashCode()    {         int     value = 0;          for (int i = 0; i != bytes.length; i++)         {             value ^= (bytes[i] & 0xff) << (i % 4);         }          return value;    }    public boolean equals(        Object  o)    {        if (o == null || !(o instanceof DERInteger))        {            return false;        }        DERInteger other = (DERInteger)o;        if (bytes.length != other.bytes.length)        {            return false;        }        for (int i = 0; i != bytes.length; i++)        {            if (bytes[i] != other.bytes[i])            {                return false;            }        }        return true;    }}

⌨️ 快捷键说明

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