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

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1;
  2. import java.io.*;
  3. /**
  4.  * DER VisibleString object.
  5.  */
  6. public class DERVisibleString
  7.     extends DERObject
  8.     implements DERString
  9. {
  10.     String  string;
  11.     /**
  12.      * return a Visible String from the passed in object.
  13.      *
  14.      * @exception IllegalArgumentException if the object cannot be converted.
  15.      */
  16.     public static DERVisibleString getInstance(
  17.         Object  obj)
  18.     {
  19.         if (obj == null || obj instanceof DERVisibleString)
  20.         {
  21.             return (DERVisibleString)obj;
  22.         }
  23.         if (obj instanceof ASN1OctetString)
  24.         {
  25.             return new DERVisibleString(((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 a Visible 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 DERVisibleString getInstance(
  43.         ASN1TaggedObject obj,
  44.         boolean          explicit)
  45.     {
  46.         return getInstance(obj.getObject());
  47.     }
  48.     /**
  49.      * basic constructor - byte encoded string.
  50.      */
  51.     public DERVisibleString(
  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
  63.      */
  64.     public DERVisibleString(
  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(VISIBLE_STRING, this.getOctets());
  88.     }
  89.     
  90.     public boolean equals(
  91.         Object  o)
  92.     {
  93.         if ((o == null) || !(o instanceof DERVisibleString))
  94.         {
  95.             return false;
  96.         }
  97.         return this.getString().equals(((DERVisibleString)o).getString());
  98.     }
  99. }