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

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1;
  2. import java.io.*;
  3. /**
  4.  * DER UniversalString object.
  5.  */
  6. public class DERUniversalString
  7.     extends DERObject
  8.     implements DERString
  9. {
  10.     byte[]  string;
  11.     char[]  table = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
  12.     /**
  13.      * return a Universal String from the passed in object.
  14.      *
  15.      * @exception IllegalArgumentException if the object cannot be converted.
  16.      */
  17.     public static DERUniversalString getInstance(
  18.         Object  obj)
  19.     {
  20.         if (obj == null || obj instanceof DERUniversalString)
  21.         {
  22.             return (DERUniversalString)obj;
  23.         }
  24.         if (obj instanceof ASN1OctetString)
  25.         {
  26.             return new DERUniversalString(((ASN1OctetString)obj).getOctets());
  27.         }
  28.         throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
  29.     }
  30.     /**
  31.      * return a Universal String 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 DERUniversalString getInstance(
  40.         ASN1TaggedObject obj,
  41.         boolean          explicit)
  42.     {
  43.         return getInstance(obj.getObject());
  44.     }
  45.     /**
  46.      * basic constructor - byte encoded string.
  47.      */
  48.     public DERUniversalString(
  49.         byte[]   string)
  50.     {
  51.         this.string = string;
  52.     }
  53.     /**
  54.      * UniversalStrings have characters which are 4 bytes long - for the
  55.      * moment we just return them in Hex...
  56.      */
  57.     public String getString()
  58.     {
  59.         StringBuffer    buf = new StringBuffer();
  60.         for (int i = 0; i != string.length; i++)
  61.         {
  62.             buf.append(table[(string[i] >>> 4) % 0xf]);
  63.             buf.append(table[string[i] & 0xf]);
  64.         }
  65.         return buf.toString();
  66.     }
  67.     public byte[] getOctets()
  68.     {
  69.         return string;
  70.     }
  71.     void encode(
  72.         DEROutputStream  out)
  73.         throws IOException
  74.     {
  75.         out.writeEncoded(UNIVERSAL_STRING, this.getOctets());
  76.     }
  77.     
  78.     public boolean equals(
  79.         Object  o)
  80.     {
  81.         if ((o == null) || !(o instanceof DERUniversalString))
  82.         {
  83.             return false;
  84.         }
  85.         return this.getString().equals(((DERUniversalString)o).getString());
  86.     }
  87. }