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

CA认证

开发平台:

Java

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