1
10package org.jstk.pki;
11
12import java.io.IOException;
13import java.util.Vector;
14import org.jstk.asn1.*;
15
16
19public class Extensions extends ASN1Type {
20 private ASN1Seq extensions = new ASN1Seq();
21 static class Extension extends ASN1Seq {
22 ASN1Oid extnID = new ASN1Oid();
23 ASN1OctetString extnValue = new ASN1OctetString();
25 Extension(){
26 super();
27 add(extnID);
28 add(extnValue);
30 }
31 public String toString(){
32 StringBuffer sb = new StringBuffer();
33 sb.append("Extension-SEQ(" + extnID.toString() + ", " + extnValue.toString() + ")");
34 return sb.toString();
35 }
36 }
37 public Extensions(byte tagClass, int taggingMethod, int tagNumber){
38 super(tagClass, taggingMethod, tagNumber, 0);
39 consMask = CONSTRUCTED;
40 }
41
42 public void decode(ASN1PullParser parser) throws ASN1PullParserException, IOException {
43 int event = parser.next();
44
45 if ((event != tagNumber) || (parser.getTagClass() != tagClass)){
46 parser.prev(); return;
48 }
49 if (parser.next() != ASN1PullParser.START_SEQ)
50 throw new ASN1PullParserException("unexpected type");
51 length = parser.getLength();
52 while ((event = parser.next()) != ASN1PullParser.END_SEQ){
53 parser.prev();
54 Extension extension = new Extension();
55 extension.decode(parser);
56 extensions.add(extension);
57 }
58 }
59
60 public byte[] encode(){
61 logger.entering(getClass().getName(), "encode");
62 byte[] bytes = null;
63 if (extensions.size() > 0){
64 bytes = extensions.encode();
65 value = bytes;
66 length = bytes.length;
67 bytes = encode1();
68 logger.fine("extensions encoded");
69 } else {
70 logger.fine("extensions NOT encoded");
71 }
72 logger.exiting(getClass().getName(), "encode");
73 return bytes;
74 }
75
76 public String toString(){
77 StringBuffer sb = new StringBuffer();
78 sb.append("Extensions-SEQ(");
79 for (int i = 0; i < extensions.size(); i++){
80 ASN1Type elem = (ASN1Type)extensions.elementAt(i);
81 if (i > 0)
82 sb.append(", ");
83 sb.append(elem.toString());
84 }
85 sb.append(")");
86 return sb.toString();
87 }
88}
89
90