1
10package org.jstk.pki;
11
12import java.io.IOException;
13import java.util.Vector;
14import org.jstk.asn1.*;
15
16public class Name extends ASN1Seq {
17 public static class OVPair extends ASN1Seq {
18 ASN1Oid oid = new ASN1Oid();
19 ASN1Any val = new ASN1Any();
20 OVPair(){
21 super();
22 add(oid);
23 add(val);
24 }
25 }
26
27 public Name(){
28 super();
29 }
30
31 public void reinitialize(Name name){
32 elems = name.elems; }
34
35 public void decode(ASN1PullParser parser) throws ASN1PullParserException, IOException {
36 int event;
37 if (parser.next() != ASN1PullParser.START_SEQ)
38 throw new ASN1PullParserException("unexpected type");
39 while ((event = parser.next()) != ASN1PullParser.END_SEQ){
40 if (event != ASN1PullParser.START_SET)
41 throw new ASN1PullParserException("unexpected type");
42 ASN1Set rdn = new ASN1Set();
43 while ((event = parser.next()) != ASN1PullParser.END_SET){
44 parser.prev();
45 OVPair ovp = new OVPair();
46 ovp.decode(parser);
47 rdn.add(ovp);
48 }
49 add(rdn);
50 }
51 }
52
53 public void add(String oid, String value){
54 ASN1PrintableString ps = new ASN1PrintableString();
55 ps.setString(value);
56
57 OVPair ovp = new OVPair();
58 ovp.oid.setOid(oid);
59 ovp.val.setInstance(ps);
60 ASN1Set rdn = new ASN1Set();
61 rdn.add(ovp);
62 add(rdn);
63 }
64
65 public String getOid(int index){
66 ASN1Set rdn = (ASN1Set)elementAt(index);
67 OVPair ovp = (OVPair)rdn.elementAt(0);
68 return ovp.oid.toString();
69 }
70
71 public String getValue(int index){
72 ASN1Set rdn = (ASN1Set)elementAt(index);
73 OVPair ovp = (OVPair)rdn.elementAt(0);
74 return ovp.val.toString();
75 }
76
77 public String toString(){
78 StringBuffer sb = new StringBuffer();
79 for (int i = 0; i < size(); i++){
80 ASN1Set rdn = (ASN1Set)elementAt(i);
81 for (int j = 0; j < rdn.size(); j++){
82 if (j > 0)
83 sb.append("; ");
84 OVPair ovp = (OVPair)rdn.elementAt(j);
85 sb.append(ovp.oid.toString() + "=" + ovp.val.toString());
86 }
87 if (i > 0)
88 sb.append("; ");
89 }
90 return sb.toString();
91 }
92}
93
94