@@ -68,6 +68,42 @@ static ASN1TaggedObjectParser checkTagClass(ASN1TaggedObjectParser taggedObjectP
6868 return taggedObjectParser ;
6969 }
7070
71+ public static Object getInstanceChoiceBaseObject (ASN1TaggedObject taggedObject , boolean declaredExplicit ,
72+ String choiceName )
73+ {
74+ if (!declaredExplicit )
75+ {
76+ String message = "Implicit tagging cannot be used with untagged choice type " + choiceName +
77+ " (X.680 30.6, 30.8)." ;
78+
79+ throw new IllegalArgumentException (message );
80+ }
81+ if (taggedObject == null )
82+ {
83+ throw new NullPointerException ("'taggedObject' cannot be null" );
84+ }
85+
86+ return getExplicitContextBaseObject (taggedObject );
87+ }
88+
89+ public static Object getTaggedChoiceBaseObject (ASN1TaggedObject taggedObject , boolean declaredExplicit ,
90+ String choiceName )
91+ {
92+ if (!declaredExplicit )
93+ {
94+ String message = "Implicit tagging cannot be used with untagged choice type " + choiceName +
95+ " (X.680 30.6, 30.8)." ;
96+
97+ throw new IllegalArgumentException (message );
98+ }
99+ if (taggedObject == null )
100+ {
101+ throw new NullPointerException ("'taggedObject' cannot be null" );
102+ }
103+
104+ return taggedObject .getExplicitBaseObject ();
105+ }
106+
71107
72108 /*
73109 * Tag text methods
@@ -138,16 +174,36 @@ public static String getTagText(int tagClass, int tagNo)
138174 * Wrappers for ASN1TaggedObject#getExplicitBaseObject
139175 */
140176
177+ public static ASN1Object getExplicitBaseObject (ASN1TaggedObject taggedObject , int tagClass )
178+ {
179+ return checkTagClass (taggedObject , tagClass ).getExplicitBaseObject ();
180+ }
181+
141182 public static ASN1Object getExplicitBaseObject (ASN1TaggedObject taggedObject , int tagClass , int tagNo )
142183 {
143184 return checkTag (taggedObject , tagClass , tagNo ).getExplicitBaseObject ();
144185 }
145186
187+ public static ASN1Object getExplicitContextBaseObject (ASN1TaggedObject taggedObject )
188+ {
189+ return getExplicitBaseObject (taggedObject , BERTags .CONTEXT_SPECIFIC );
190+ }
191+
146192 public static ASN1Object getExplicitContextBaseObject (ASN1TaggedObject taggedObject , int tagNo )
147193 {
148194 return getExplicitBaseObject (taggedObject , BERTags .CONTEXT_SPECIFIC , tagNo );
149195 }
150196
197+ public static ASN1Object tryGetExplicitBaseObject (ASN1TaggedObject taggedObject , int tagClass )
198+ {
199+ if (!taggedObject .hasTagClass (tagClass ))
200+ {
201+ return null ;
202+ }
203+
204+ return taggedObject .getExplicitBaseObject ();
205+ }
206+
151207 public static ASN1Object tryGetExplicitBaseObject (ASN1TaggedObject taggedObject , int tagClass , int tagNo )
152208 {
153209 if (!taggedObject .hasTag (tagClass , tagNo ))
@@ -158,6 +214,11 @@ public static ASN1Object tryGetExplicitBaseObject(ASN1TaggedObject taggedObject,
158214 return taggedObject .getExplicitBaseObject ();
159215 }
160216
217+ public static ASN1Object tryGetExplicitContextBaseObject (ASN1TaggedObject taggedObject )
218+ {
219+ return tryGetExplicitBaseObject (taggedObject , BERTags .CONTEXT_SPECIFIC );
220+ }
221+
161222 public static ASN1Object tryGetExplicitContextBaseObject (ASN1TaggedObject taggedObject , int tagNo )
162223 {
163224 return tryGetExplicitBaseObject (taggedObject , BERTags .CONTEXT_SPECIFIC , tagNo );
0 commit comments