DEREnumerated.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:2k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1;
  2. import java.io.*;
  3. import java.math.BigInteger;
  4. public class DEREnumerated
  5.     extends DERObject
  6. {
  7.     byte[]      bytes;
  8.     /**
  9.      * return an integer from the passed in object
  10.      *
  11.      * @exception IllegalArgumentException if the object cannot be converted.
  12.      */
  13.     public static DEREnumerated getInstance(
  14.         Object  obj)
  15.     {
  16.         if (obj == null || obj instanceof DEREnumerated)
  17.         {
  18.             return (DEREnumerated)obj;
  19.         }
  20.         if (obj instanceof ASN1OctetString)
  21.         {
  22.             return new DEREnumerated(((ASN1OctetString)obj).getOctets());
  23.         }
  24.         if (obj instanceof ASN1TaggedObject)
  25.         {
  26.             return getInstance(((ASN1TaggedObject)obj).getObject());
  27.         }
  28.         throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
  29.     }
  30.     /**
  31.      * return an Enumerated from a tagged object.
  32.      *
  33.      * @param obj the tagged object holding the object we want
  34.      * @param explicit true if the object is meant to be explicitly
  35.      *              tagged false otherwise.
  36.      * @exception IllegalArgumentException if the tagged object cannot
  37.      *               be converted.
  38.      */
  39.     public static DEREnumerated getInstance(
  40.         ASN1TaggedObject obj,
  41.         boolean          explicit)
  42.     {
  43.         return getInstance(obj.getObject());
  44.     }
  45.     public DEREnumerated(
  46.         int         value)
  47.     {
  48.         bytes = BigInteger.valueOf(value).toByteArray();
  49.     }
  50.     public DEREnumerated(
  51.         BigInteger   value)
  52.     {
  53.         bytes = value.toByteArray();
  54.     }
  55.     public DEREnumerated(
  56.         byte[]   bytes)
  57.     {
  58.         this.bytes = bytes;
  59.     }
  60.     public BigInteger getValue()
  61.     {
  62.         return new BigInteger(bytes);
  63.     }
  64.     void encode(
  65.         DEROutputStream out)
  66.         throws IOException
  67.     {
  68.         out.writeEncoded(ENUMERATED, bytes);
  69.     }
  70.     
  71.     public boolean equals(
  72.         Object  o)
  73.     {
  74.         if (o == null || !(o instanceof DEREnumerated))
  75.         {
  76.             return false;
  77.         }
  78.         DEREnumerated other = (DEREnumerated)o;
  79.         if (bytes.length != other.bytes.length)
  80.         {
  81.             return false;
  82.         }
  83.         for (int i = 0; i != bytes.length; i++)
  84.         {
  85.             if (bytes[i] != other.bytes[i])
  86.             {
  87.                 return false;
  88.             }
  89.         }
  90.         return true;
  91.     }
  92. }