KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > lowagie > bc > asn1 > DERNumericString


1 package com.lowagie.bc.asn1;
2
3 import java.io.IOException;
4
5 /**
6  * DER NumericString object - this is an ascii string of characters {0,1,2,3,4,5,6,7,8,9, }.
7  */

8 public class DERNumericString
9     extends DERObject
10     implements DERString
11 {
12     String string;
13
14     /**
15      * return a Numeric string from the passed in object
16      *
17      * @exception IllegalArgumentException if the object cannot be converted.
18      */

19     public static DERNumericString getInstance(
20         Object obj)
21     {
22         if (obj == null || obj instanceof DERNumericString)
23         {
24             return (DERNumericString)obj;
25         }
26
27         if (obj instanceof ASN1OctetString)
28         {
29             return new DERNumericString(((ASN1OctetString)obj).getOctets());
30         }
31
32         if (obj instanceof ASN1TaggedObject)
33         {
34             return getInstance(((ASN1TaggedObject)obj).getObject());
35         }
36
37         throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
38     }
39
40     /**
41      * return an Numeric String from a tagged object.
42      *
43      * @param obj the tagged object holding the object we want
44      * @param explicit true if the object is meant to be explicitly
45      * tagged false otherwise.
46      * @exception IllegalArgumentException if the tagged object cannot
47      * be converted.
48      */

49     public static DERNumericString getInstance(
50         ASN1TaggedObject obj,
51         boolean explicit)
52     {
53         return getInstance(obj.getObject());
54     }
55
56     /**
57      * basic constructor - with bytes.
58      */

59     public DERNumericString(
60         byte[] string)
61     {
62         char[] cs = new char[string.length];
63
64         for (int i = 0; i != cs.length; i++)
65         {
66             cs[i] = (char)(string[i] & 0xff);
67         }
68
69         this.string = new String(cs);
70     }
71
72     /**
73      * basic constructor - with string.
74      */

75     public DERNumericString(
76         String string)
77     {
78         this.string = string;
79     }
80
81     public String getString()
82     {
83         return string;
84     }
85
86     public byte[] getOctets()
87     {
88         char[] cs = string.toCharArray();
89         byte[] bs = new byte[cs.length];
90
91         for (int i = 0; i != cs.length; i++)
92         {
93             bs[i] = (byte)cs[i];
94         }
95
96         return bs;
97     }
98
99     void encode(
100         DEROutputStream out)
101         throws IOException
102     {
103         out.writeEncoded(NUMERIC_STRING, this.getOctets());
104     }
105
106     public int hashCode()
107     {
108         return this.getString().hashCode();
109     }
110
111     public boolean equals(
112         Object o)
113     {
114         if (!(o instanceof DERNumericString))
115         {
116             return false;
117         }
118
119         DERNumericString s = (DERNumericString)o;
120
121         return this.getString().equals(s.getString());
122     }
123 }
124
Popular Tags