1 package org.bouncycastle.asn1.test;
2 
3 import java.lang.reflect.Method;
4 import java.math.BigInteger;
5 import java.util.Date;
6 import java.util.Vector;
7 
8 import junit.framework.TestCase;
9 import org.bouncycastle.asn1.ASN1EncodableVector;
10 import org.bouncycastle.asn1.ASN1Enumerated;
11 import org.bouncycastle.asn1.ASN1GeneralizedTime;
12 import org.bouncycastle.asn1.ASN1Integer;
13 import org.bouncycastle.asn1.ASN1Object;
14 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
15 import org.bouncycastle.asn1.ASN1TaggedObject;
16 import org.bouncycastle.asn1.ASN1UTCTime;
17 import org.bouncycastle.asn1.DERBMPString;
18 import org.bouncycastle.asn1.DERBitString;
19 import org.bouncycastle.asn1.DERGeneralString;
20 import org.bouncycastle.asn1.DERIA5String;
21 import org.bouncycastle.asn1.DERNull;
22 import org.bouncycastle.asn1.DERNumericString;
23 import org.bouncycastle.asn1.DEROctetString;
24 import org.bouncycastle.asn1.DERPrintableString;
25 import org.bouncycastle.asn1.DERSequence;
26 import org.bouncycastle.asn1.DERSet;
27 import org.bouncycastle.asn1.DERT61String;
28 import org.bouncycastle.asn1.DERTaggedObject;
29 import org.bouncycastle.asn1.DERUTF8String;
30 import org.bouncycastle.asn1.DERUniversalString;
31 import org.bouncycastle.asn1.DERVisibleString;
32 import org.bouncycastle.asn1.cryptopro.ECGOST3410ParamSetParameters;
33 import org.bouncycastle.asn1.cryptopro.GOST28147Parameters;
34 import org.bouncycastle.asn1.cryptopro.GOST3410ParamSetParameters;
35 import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters;
36 
37 import org.bouncycastle.asn1.misc.CAST5CBCParameters;
38 import org.bouncycastle.asn1.misc.IDEACBCPar;
39 import org.bouncycastle.asn1.mozilla.PublicKeyAndChallenge;
40 import org.bouncycastle.asn1.ocsp.BasicOCSPResponse;
41 import org.bouncycastle.asn1.ocsp.CertID;
42 import org.bouncycastle.asn1.ocsp.CertStatus;
43 import org.bouncycastle.asn1.ocsp.CrlID;
44 import org.bouncycastle.asn1.ocsp.OCSPRequest;
45 import org.bouncycastle.asn1.ocsp.OCSPResponse;
46 import org.bouncycastle.asn1.ocsp.OCSPResponseStatus;
47 import org.bouncycastle.asn1.ocsp.Request;
48 import org.bouncycastle.asn1.ocsp.ResponderID;
49 import org.bouncycastle.asn1.ocsp.ResponseBytes;
50 import org.bouncycastle.asn1.ocsp.ResponseData;
51 import org.bouncycastle.asn1.ocsp.RevokedInfo;
52 import org.bouncycastle.asn1.ocsp.Signature;
53 import org.bouncycastle.asn1.ocsp.SingleResponse;
54 import org.bouncycastle.asn1.ocsp.TBSRequest;
55 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
56 import org.bouncycastle.asn1.pkcs.AuthenticatedSafe;
57 import org.bouncycastle.asn1.pkcs.CertificationRequest;
58 import org.bouncycastle.asn1.pkcs.CertificationRequestInfo;
59 import org.bouncycastle.asn1.pkcs.DHParameter;
60 import org.bouncycastle.asn1.pkcs.EncryptedPrivateKeyInfo;
61 import org.bouncycastle.asn1.pkcs.MacData;
62 import org.bouncycastle.asn1.pkcs.PBEParameter;
63 import org.bouncycastle.asn1.pkcs.PBES2Parameters;
64 import org.bouncycastle.asn1.pkcs.PBKDF2Params;
65 import org.bouncycastle.asn1.pkcs.PKCS12PBEParams;
66 import org.bouncycastle.asn1.pkcs.Pfx;
67 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
68 import org.bouncycastle.asn1.pkcs.RC2CBCParameter;
69 import org.bouncycastle.asn1.pkcs.RSAESOAEPparams;
70 import org.bouncycastle.asn1.pkcs.RSAPrivateKey;
71 import org.bouncycastle.asn1.pkcs.RSASSAPSSparams;
72 import org.bouncycastle.asn1.pkcs.SafeBag;
73 import org.bouncycastle.asn1.pkcs.SignedData;
74 import org.bouncycastle.asn1.sec.ECPrivateKey;
75 import org.bouncycastle.asn1.x500.DirectoryString;
76 import org.bouncycastle.asn1.x500.RDN;
77 import org.bouncycastle.asn1.x500.X500Name;
78 import org.bouncycastle.asn1.x509.AccessDescription;
79 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
80 import org.bouncycastle.asn1.x509.AttCertIssuer;
81 import org.bouncycastle.asn1.x509.AttCertValidityPeriod;
82 import org.bouncycastle.asn1.x509.AttributeCertificate;
83 import org.bouncycastle.asn1.x509.AttributeCertificateInfo;
84 import org.bouncycastle.asn1.x509.AuthorityInformationAccess;
85 import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
86 import org.bouncycastle.asn1.x509.BasicConstraints;
87 import org.bouncycastle.asn1.x509.CRLDistPoint;
88 import org.bouncycastle.asn1.x509.CRLNumber;
89 import org.bouncycastle.asn1.x509.CRLReason;
90 import org.bouncycastle.asn1.x509.Certificate;
91 import org.bouncycastle.asn1.x509.CertificateList;
92 import org.bouncycastle.asn1.x509.CertificatePair;
93 import org.bouncycastle.asn1.x509.CertificatePolicies;
94 import org.bouncycastle.asn1.x509.DSAParameter;
95 import org.bouncycastle.asn1.x509.DigestInfo;
96 import org.bouncycastle.asn1.x509.DisplayText;
97 import org.bouncycastle.asn1.x509.DistributionPoint;
98 import org.bouncycastle.asn1.x509.DistributionPointName;
99 import org.bouncycastle.asn1.x509.ExtendedKeyUsage;
100 import org.bouncycastle.asn1.x509.Extensions;
101 import org.bouncycastle.asn1.x509.GeneralName;
102 import org.bouncycastle.asn1.x509.GeneralNames;
103 import org.bouncycastle.asn1.x509.GeneralSubtree;
104 import org.bouncycastle.asn1.x509.Holder;
105 import org.bouncycastle.asn1.x509.IetfAttrSyntax;
106 import org.bouncycastle.asn1.x509.IssuerSerial;
107 import org.bouncycastle.asn1.x509.IssuingDistributionPoint;
108 import org.bouncycastle.asn1.x509.NameConstraints;
109 import org.bouncycastle.asn1.x509.NoticeReference;
110 import org.bouncycastle.asn1.x509.ObjectDigestInfo;
111 import org.bouncycastle.asn1.x509.PolicyInformation;
112 import org.bouncycastle.asn1.x509.PolicyMappings;
113 import org.bouncycastle.asn1.x509.PolicyQualifierInfo;
114 import org.bouncycastle.asn1.x509.PrivateKeyUsagePeriod;
115 import org.bouncycastle.asn1.x509.RoleSyntax;
116 import org.bouncycastle.asn1.x509.SubjectDirectoryAttributes;
117 import org.bouncycastle.asn1.x509.SubjectKeyIdentifier;
118 import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
119 import org.bouncycastle.asn1.x509.TBSCertList;
120 import org.bouncycastle.asn1.x509.TBSCertificate;
121 import org.bouncycastle.asn1.x509.TBSCertificateStructure;
122 import org.bouncycastle.asn1.x509.Target;
123 import org.bouncycastle.asn1.x509.TargetInformation;
124 import org.bouncycastle.asn1.x509.Targets;
125 import org.bouncycastle.asn1.x509.Time;
126 import org.bouncycastle.asn1.x509.UserNotice;
127 import org.bouncycastle.asn1.x509.V2Form;
128 import org.bouncycastle.asn1.x509.X509CertificateStructure;
129 import org.bouncycastle.asn1.x509.X509Extensions;
130 import org.bouncycastle.asn1.x509.qualified.BiometricData;
131 import org.bouncycastle.asn1.x509.qualified.Iso4217CurrencyCode;
132 import org.bouncycastle.asn1.x509.qualified.MonetaryValue;
133 import org.bouncycastle.asn1.x509.qualified.QCStatement;
134 import org.bouncycastle.asn1.x509.qualified.SemanticsInformation;
135 import org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData;
136 import org.bouncycastle.asn1.x509.sigi.NameOrPseudonym;
137 import org.bouncycastle.asn1.x509.sigi.PersonalData;
138 import org.bouncycastle.asn1.x9.DHDomainParameters;
139 import org.bouncycastle.asn1.x9.DHPublicKey;
140 import org.bouncycastle.asn1.x9.DHValidationParms;
141 import org.bouncycastle.asn1.x9.X962Parameters;
142 import org.bouncycastle.asn1.x9.X9ECParameters;
143 import org.bouncycastle.util.Integers;
144 import org.bouncycastle.util.encoders.Base64;
145 
146 public class GetInstanceTest
147     extends TestCase
148 {
149     public static byte[]  attrCert = Base64.decode(
150             "MIIHQDCCBqkCAQEwgZChgY2kgYowgYcxHDAaBgkqhkiG9w0BCQEWDW1sb3JjaEB2"
151           + "dC5lZHUxHjAcBgNVBAMTFU1hcmt1cyBMb3JjaCAobWxvcmNoKTEbMBkGA1UECxMS"
152           + "VmlyZ2luaWEgVGVjaCBVc2VyMRAwDgYDVQQLEwdDbGFzcyAyMQswCQYDVQQKEwJ2"
153           + "dDELMAkGA1UEBhMCVVMwgYmkgYYwgYMxGzAZBgkqhkiG9w0BCQEWDHNzaGFoQHZ0"
154           + "LmVkdTEbMBkGA1UEAxMSU3VtaXQgU2hhaCAoc3NoYWgpMRswGQYDVQQLExJWaXJn"
155           + "aW5pYSBUZWNoIFVzZXIxEDAOBgNVBAsTB0NsYXNzIDExCzAJBgNVBAoTAnZ0MQsw"
156           + "CQYDVQQGEwJVUzANBgkqhkiG9w0BAQQFAAIBBTAiGA8yMDAzMDcxODE2MDgwMloY"
157           + "DzIwMDMwNzI1MTYwODAyWjCCBU0wggVJBgorBgEEAbRoCAEBMYIFORaCBTU8UnVs"
158           + "ZSBSdWxlSWQ9IkZpbGUtUHJpdmlsZWdlLVJ1bGUiIEVmZmVjdD0iUGVybWl0Ij4K"
159           + "IDxUYXJnZXQ+CiAgPFN1YmplY3RzPgogICA8U3ViamVjdD4KICAgIDxTdWJqZWN0"
160           + "TWF0Y2ggTWF0Y2hJZD0idXJuOm9hc2lzOm5hbWVzOnRjOnhhY21sOjEuMDpmdW5j"
161           + "dGlvbjpzdHJpbmctZXF1YWwiPgogICAgIDxBdHRyaWJ1dGVWYWx1ZSBEYXRhVHlw"
162           + "ZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjc3RyaW5nIj4KICAg"
163           + "ICAgIENOPU1hcmt1cyBMb3JjaDwvQXR0cmlidXRlVmFsdWU+CiAgICAgPFN1Ympl"
164           + "Y3RBdHRyaWJ1dGVEZXNpZ25hdG9yIEF0dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFt"
165           + "ZXM6dGM6eGFjbWw6MS4wOnN1YmplY3Q6c3ViamVjdC1pZCIgRGF0YVR5cGU9Imh0"
166           + "dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZyIgLz4gCiAgICA8"
167           + "L1N1YmplY3RNYXRjaD4KICAgPC9TdWJqZWN0PgogIDwvU3ViamVjdHM+CiAgPFJl"
168           + "c291cmNlcz4KICAgPFJlc291cmNlPgogICAgPFJlc291cmNlTWF0Y2ggTWF0Y2hJ"
169           + "ZD0idXJuOm9hc2lzOm5hbWVzOnRjOnhhY21sOjEuMDpmdW5jdGlvbjpzdHJpbmct"
170           + "ZXF1YWwiPgogICAgIDxBdHRyaWJ1dGVWYWx1ZSBEYXRhVHlwZT0iaHR0cDovL3d3"
171           + "dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYW55VVJJIj4KICAgICAgaHR0cDovL3p1"
172           + "bmkuY3MudnQuZWR1PC9BdHRyaWJ1dGVWYWx1ZT4KICAgICA8UmVzb3VyY2VBdHRy"
173           + "aWJ1dGVEZXNpZ25hdG9yIEF0dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFtZXM6dGM6"
174           + "eGFjbWw6MS4wOnJlc291cmNlOnJlc291cmNlLWlkIiBEYXRhVHlwZT0iaHR0cDov"
175           + "L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYW55VVJJIiAvPiAKICAgIDwvUmVz"
176           + "b3VyY2VNYXRjaD4KICAgPC9SZXNvdXJjZT4KICA8L1Jlc291cmNlcz4KICA8QWN0"
177           + "aW9ucz4KICAgPEFjdGlvbj4KICAgIDxBY3Rpb25NYXRjaCBNYXRjaElkPSJ1cm46"
178           + "b2FzaXM6bmFtZXM6dGM6eGFjbWw6MS4wOmZ1bmN0aW9uOnN0cmluZy1lcXVhbCI+"
179           + "CiAgICAgPEF0dHJpYnV0ZVZhbHVlIERhdGFUeXBlPSJodHRwOi8vd3d3LnczLm9y"
180           + "Zy8yMDAxL1hNTFNjaGVtYSNzdHJpbmciPgpEZWxlZ2F0ZSBBY2Nlc3MgICAgIDwv"
181           + "QXR0cmlidXRlVmFsdWU+CgkgIDxBY3Rpb25BdHRyaWJ1dGVEZXNpZ25hdG9yIEF0"
182           + "dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGFjbWw6MS4wOmFjdGlvbjph"
183           + "Y3Rpb24taWQiIERhdGFUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNj"
184           + "aGVtYSNzdHJpbmciIC8+IAogICAgPC9BY3Rpb25NYXRjaD4KICAgPC9BY3Rpb24+"
185           + "CiAgPC9BY3Rpb25zPgogPC9UYXJnZXQ+CjwvUnVsZT4KMA0GCSqGSIb3DQEBBAUA"
186           + "A4GBAGiJSM48XsY90HlYxGmGVSmNR6ZW2As+bot3KAfiCIkUIOAqhcphBS23egTr"
187           + "6asYwy151HshbPNYz+Cgeqs45KkVzh7bL/0e1r8sDVIaaGIkjHK3CqBABnfSayr3"
188           + "Rd1yBoDdEv8Qb+3eEPH6ab9021AsLEnJ6LWTmybbOpMNZ3tv");
189 
190     byte[]  cert1 = Base64.decode(
191         "MIIDXjCCAsegAwIBAgIBBzANBgkqhkiG9w0BAQQFADCBtzELMAkGA1UEBhMCQVUx"
192             + "ETAPBgNVBAgTCFZpY3RvcmlhMRgwFgYDVQQHEw9Tb3V0aCBNZWxib3VybmUxGjAY"
193             + "BgNVBAoTEUNvbm5lY3QgNCBQdHkgTHRkMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBB"
194             + "dXRob3JpdHkxFTATBgNVBAMTDENvbm5lY3QgNCBDQTEoMCYGCSqGSIb3DQEJARYZ"
195             + "d2VibWFzdGVyQGNvbm5lY3Q0LmNvbS5hdTAeFw0wMDA2MDIwNzU2MjFaFw0wMTA2"
196             + "MDIwNzU2MjFaMIG4MQswCQYDVQQGEwJBVTERMA8GA1UECBMIVmljdG9yaWExGDAW"
197             + "BgNVBAcTD1NvdXRoIE1lbGJvdXJuZTEaMBgGA1UEChMRQ29ubmVjdCA0IFB0eSBM"
198             + "dGQxFzAVBgNVBAsTDldlYnNlcnZlciBUZWFtMR0wGwYDVQQDExR3d3cyLmNvbm5l"
199             + "Y3Q0LmNvbS5hdTEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGNvbm5lY3Q0LmNv"
200             + "bS5hdTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArvDxclKAhyv7Q/Wmr2re"
201             + "Gw4XL9Cnh9e+6VgWy2AWNy/MVeXdlxzd7QAuc1eOWQkGQEiLPy5XQtTY+sBUJ3AO"
202             + "Rvd2fEVJIcjf29ey7bYua9J/vz5MG2KYo9/WCHIwqD9mmG9g0xLcfwq/s8ZJBswE"
203             + "7sb85VU+h94PTvsWOsWuKaECAwEAAaN3MHUwJAYDVR0RBB0wG4EZd2VibWFzdGVy"
204             + "QGNvbm5lY3Q0LmNvbS5hdTA6BglghkgBhvhCAQ0ELRYrbW9kX3NzbCBnZW5lcmF0"
205             + "ZWQgY3VzdG9tIHNlcnZlciBjZXJ0aWZpY2F0ZTARBglghkgBhvhCAQEEBAMCBkAw"
206             + "DQYJKoZIhvcNAQEEBQADgYEAotccfKpwSsIxM1Hae8DR7M/Rw8dg/RqOWx45HNVL"
207             + "iBS4/3N/TO195yeQKbfmzbAA2jbPVvIvGgTxPgO1MP4ZgvgRhasaa0qCJCkWvpM4"
208             + "yQf33vOiYQbpv4rTwzU8AmRlBG45WdjyNIigGV+oRc61aKCTnLq7zB8N3z1TF/bF"
209             + "5/8=");
210 
211     private byte[] v2CertList = Base64.decode(
212           "MIICjTCCAfowDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoT"
213         + "F1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy"
214         + "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05NTA1MDIwMjEyMjZaFw05NTA2MDEw"
215         + "MDAxNDlaMIIBaDAWAgUCQQAABBcNOTUwMjAxMTcyNDI2WjAWAgUCQQAACRcNOTUw"
216         + "MjEwMDIxNjM5WjAWAgUCQQAADxcNOTUwMjI0MDAxMjQ5WjAWAgUCQQAADBcNOTUw"
217         + "MjI1MDA0NjQ0WjAWAgUCQQAAGxcNOTUwMzEzMTg0MDQ5WjAWAgUCQQAAFhcNOTUw"
218         + "MzE1MTkxNjU0WjAWAgUCQQAAGhcNOTUwMzE1MTk0MDQxWjAWAgUCQQAAHxcNOTUw"
219         + "MzI0MTk0NDMzWjAWAgUCcgAABRcNOTUwMzI5MjAwNzExWjAWAgUCcgAAERcNOTUw"
220         + "MzMwMDIzNDI2WjAWAgUCQQAAIBcNOTUwNDA3MDExMzIxWjAWAgUCcgAAHhcNOTUw"
221         + "NDA4MDAwMjU5WjAWAgUCcgAAQRcNOTUwNDI4MTcxNzI0WjAWAgUCcgAAOBcNOTUw"
222         + "NDI4MTcyNzIxWjAWAgUCcgAATBcNOTUwNTAyMDIxMjI2WjANBgkqhkiG9w0BAQIF"
223         + "AAN+AHqOEJXSDejYy0UwxxrH/9+N2z5xu/if0J6qQmK92W0hW158wpJg+ovV3+wQ"
224         + "wvIEPRL2rocL0tKfAsVq1IawSJzSNgxG0lrcla3MrJBnZ4GaZDu4FutZh72MR3Gt"
225         + "JaAL3iTJHJD55kK2D/VoyY1djlsPuNh6AEgdVwFAyp0v");
226 
227     private static final Object[] NULL_ARGS = new Object[] { null };
228 
doFullGetInstanceTest(Class clazz, ASN1Object o1)229     private void doFullGetInstanceTest(Class clazz, ASN1Object o1)
230         throws Exception
231     {
232         Method m;
233 
234         try
235         {
236             m = clazz.getMethod("getInstance", Object.class);
237         }
238         catch (NoSuchMethodException e)
239         {
240             fail("no getInstance method found");
241             return;
242         }
243 
244         ASN1Object o2 = (ASN1Object)m.invoke(clazz, NULL_ARGS);
245         if (o2 != null)
246         {
247             fail(clazz.getName() + " null failed");
248         }
249 
250         o2 = (ASN1Object)m.invoke(clazz, o1);
251 
252         if (!o1.equals(o2) || !clazz.isInstance(o2))
253         {
254             fail(clazz.getName() + " equality failed");
255         }
256 
257         o2 = (ASN1Object)m.invoke(clazz, o1.getEncoded());
258         if (!o1.equals(o2) || !clazz.isInstance(o2))
259         {
260             fail(clazz.getName() + " encoded equality failed");
261         }
262 
263         o2 = (ASN1Object)m.invoke(clazz, o1.toASN1Primitive());
264         if (!o1.equals(o2) || !clazz.isInstance(o2))
265         {
266             fail(clazz.getName() + " sequence equality failed");
267         }
268 
269         try
270         {
271             m = clazz.getMethod("getInstance", ASN1TaggedObject.class, Boolean.TYPE);
272         }
273         catch (NoSuchMethodException e)
274         {
275             return;
276         }
277 
278         ASN1TaggedObject t = new DERTaggedObject(true, 0, o1);
279         o2 = (ASN1Object)m.invoke(clazz, t, true);
280         if (!o1.equals(o2) || !clazz.isInstance(o2))
281         {
282             fail(clazz.getName() + " tag equality failed");
283         }
284 
285         t = new DERTaggedObject(true, 0, o1.toASN1Primitive());
286         o2 = (ASN1Object)m.invoke(clazz, t, true);
287         if (!o1.equals(o2) || !clazz.isInstance(o2))
288         {
289             fail(clazz.getName() + " tag equality failed");
290         }
291 
292         t = ASN1TaggedObject.getInstance(t.getEncoded());
293         o2 = (ASN1Object)m.invoke(clazz, t, true);
294         if (!o1.equals(o2) || !clazz.isInstance(o2))
295         {
296             fail(clazz.getName() + " tag equality failed");
297         }
298 
299         t = new DERTaggedObject(false, 0, o1);
300         o2 = (ASN1Object)m.invoke(clazz, t, false);
301         if (!o1.equals(o2) || !clazz.isInstance(o2))
302         {
303             fail(clazz.getName() + " tag equality failed");
304         }
305 
306         t = new DERTaggedObject(false, 0, o1.toASN1Primitive());
307         o2 = (ASN1Object)m.invoke(clazz, t, false);
308         if (!o1.equals(o2) || !clazz.isInstance(o2))
309         {
310             fail(clazz.getName() + " tag equality failed");
311         }
312 
313         t = ASN1TaggedObject.getInstance(t.getEncoded());
314         o2 = (ASN1Object)m.invoke(clazz, t, false);
315         if (!o1.equals(o2) || !clazz.isInstance(o2))
316         {
317             fail(clazz.getName() + " tag equality failed");
318         }
319     }
320 
testGetInstance()321     public void testGetInstance()
322         throws Exception
323     {
324         doFullGetInstanceTest(DERPrintableString.class, new DERPrintableString("hello world"));
325         doFullGetInstanceTest(DERBMPString.class, new DERBMPString("hello world"));
326         doFullGetInstanceTest(DERUTF8String.class, new DERUTF8String("hello world"));
327         doFullGetInstanceTest(DERUniversalString.class, new DERUniversalString(new byte[20]));
328         doFullGetInstanceTest(DERIA5String.class, new DERIA5String("hello world"));
329         doFullGetInstanceTest(DERGeneralString.class, new DERGeneralString("hello world"));
330         doFullGetInstanceTest(DERNumericString.class, new DERNumericString("hello world"));
331         doFullGetInstanceTest(DERNumericString.class, new DERNumericString("99999", true));
332         doFullGetInstanceTest(DERT61String.class, new DERT61String("hello world"));
333         doFullGetInstanceTest(DERVisibleString.class, new DERVisibleString("hello world"));
334 
335         doFullGetInstanceTest(ASN1Integer.class, new ASN1Integer(1));
336         doFullGetInstanceTest(ASN1GeneralizedTime.class, new ASN1GeneralizedTime(new Date()));
337         doFullGetInstanceTest(ASN1UTCTime.class, new ASN1UTCTime(new Date()));
338         doFullGetInstanceTest(ASN1Enumerated.class, new ASN1Enumerated(1));
339 
340         SignedData.getInstance(null);
341         Time.getInstance(null);
342         Time.getInstance(null);
343 
344         ECGOST3410ParamSetParameters.getInstance(null);
345         ECGOST3410ParamSetParameters.getInstance(null);
346         GOST28147Parameters.getInstance(null);
347         GOST28147Parameters.getInstance(null);
348         GOST3410ParamSetParameters.getInstance(null);
349         GOST3410ParamSetParameters.getInstance(null);
350         GOST3410PublicKeyAlgParameters.getInstance(null);
351         GOST3410PublicKeyAlgParameters.getInstance(null);
352 
353         ASN1EncodableVector postalAddr = new ASN1EncodableVector();
354 
355         postalAddr.add(new DERUTF8String("line 1"));
356         postalAddr.add(new DERUTF8String("line 2"));
357 
358         Vector v = new Vector();
359 
360         v.add(Integers.valueOf(1));
361         v.add(BigInteger.valueOf(2));
362         NoticeReference noticeReference = new NoticeReference("BC", v);
363 
364         CAST5CBCParameters.getInstance(null);
365         IDEACBCPar.getInstance(null);
366         PublicKeyAndChallenge.getInstance(null);
367         BasicOCSPResponse.getInstance(null);
368         BasicOCSPResponse.getInstance(null);
369 
370         doFullGetInstanceTest(CertID.class, new CertID(new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE), new DEROctetString(new byte[1]), new DEROctetString(new byte[1]), new ASN1Integer(1)));
371 
372         CertStatus.getInstance(null);
373         CertStatus.getInstance(null);
374         CrlID.getInstance(null);
375         OCSPRequest.getInstance(null);
376         OCSPRequest.getInstance(null);
377         OCSPResponse.getInstance(null);
378         OCSPResponse.getInstance(null);
379         OCSPResponseStatus.getInstance(null);
380         Request.getInstance(null);
381         Request.getInstance(null);
382         ResponderID.getInstance(null);
383         ResponderID.getInstance(null);
384         ResponseBytes.getInstance(null);
385         ResponseBytes.getInstance(null);
386         ResponseData.getInstance(null);
387         ResponseData.getInstance(null);
388         RevokedInfo.getInstance(null);
389         RevokedInfo.getInstance(null);
390         Signature.getInstance(null);
391         Signature.getInstance(null);
392         SingleResponse.getInstance(null);
393         SingleResponse.getInstance(null);
394         TBSRequest.getInstance(null);
395         TBSRequest.getInstance(null);
396 
397         AuthenticatedSafe.getInstance(null);
398         CertificationRequestInfo.getInstance(null);
399         CertificationRequest.getInstance(null);
400 
401         DHParameter.getInstance(null);
402 
403         EncryptedPrivateKeyInfo.getInstance(null);
404         AlgorithmIdentifier.getInstance(null);
405 
406         MacData.getInstance(null);
407         PBEParameter.getInstance(null);
408         PBES2Parameters.getInstance(null);
409         PBKDF2Params.getInstance(null);
410         Pfx.getInstance(null);
411         PKCS12PBEParams.getInstance(null);
412         PrivateKeyInfo.getInstance(null);
413         PrivateKeyInfo.getInstance(null);
414         RC2CBCParameter.getInstance(null);
415         RSAESOAEPparams.getInstance(null);
416         RSAPrivateKey.getInstance(null);
417         RSAPrivateKey.getInstance(null);
418         RSASSAPSSparams.getInstance(null);
419         SafeBag.getInstance(null);
420         SignedData.getInstance(null);
421 
422         ECPrivateKey.getInstance(null);
423 
424         DirectoryString.getInstance(null);
425         DirectoryString.getInstance(null);
426         RDN.getInstance(null);
427         X500Name.getInstance(null);
428         X500Name.getInstance(null);
429         AccessDescription.getInstance(null);
430         AlgorithmIdentifier.getInstance(null);
431         AlgorithmIdentifier.getInstance(null);
432         AttCertIssuer.getInstance(null);
433         AttCertIssuer.getInstance(null);
434         AttCertValidityPeriod.getInstance(null);
435         AttributeCertificateInfo.getInstance(null);
436         AttributeCertificateInfo.getInstance(null);
437         AttributeCertificate.getInstance(null);
438 
439         AuthorityInformationAccess.getInstance(null);
440         AuthorityKeyIdentifier.getInstance(null);
441         AuthorityKeyIdentifier.getInstance(null);
442         BasicConstraints.getInstance(null);
443         BasicConstraints.getInstance(null);
444         Certificate.getInstance(null);
445         Certificate.getInstance(null);
446         CertificateList.getInstance(null);
447         CertificateList.getInstance(null);
448         CertificatePair.getInstance(null);
449         CertificatePolicies.getInstance(null);
450         CertificatePolicies.getInstance(null);
451         CRLDistPoint.getInstance(null);
452         CRLDistPoint.getInstance(null);
453         CRLNumber.getInstance(null);
454         CRLReason.getInstance(null);
455         DigestInfo.getInstance(null);
456         DigestInfo.getInstance(null);
457         DisplayText.getInstance(null);
458         DisplayText.getInstance(null);
459         DistributionPoint.getInstance(null);
460         DistributionPoint.getInstance(null);
461         DistributionPointName.getInstance(null);
462         DistributionPointName.getInstance(null);
463         DSAParameter.getInstance(null);
464         DSAParameter.getInstance(null);
465         ExtendedKeyUsage.getInstance(null);
466         ExtendedKeyUsage.getInstance(null);
467         Extensions.getInstance(null);
468         Extensions.getInstance(null);
469         GeneralName.getInstance(null);
470         GeneralName.getInstance(null);
471         GeneralNames.getInstance(null);
472         GeneralNames.getInstance(null);
473 
474         GeneralSubtree generalSubtree = new GeneralSubtree(new GeneralName(new X500Name("CN=Test")));
475         ASN1ObjectIdentifier algOid = new ASN1ObjectIdentifier("1.2.1");
476         ObjectDigestInfo objectDigestInfo = new ObjectDigestInfo(ObjectDigestInfo.otherObjectDigest, algOid, new AlgorithmIdentifier(algOid), new byte[20]);
477 
478         doFullGetInstanceTest(GeneralSubtree.class, generalSubtree);
479         doFullGetInstanceTest(Holder.class, new Holder(objectDigestInfo));
480         IetfAttrSyntax.getInstance(null);
481         IssuerSerial.getInstance(null);
482         IssuerSerial.getInstance(null);
483         IssuingDistributionPoint.getInstance(null);
484         IssuingDistributionPoint.getInstance(null);
485         DERBitString.getInstance(null);
486 
487         v.clear();
488         v.add(generalSubtree);
489 
490         doFullGetInstanceTest(NameConstraints.class, new NameConstraints(null, null));
491         doFullGetInstanceTest(NoticeReference.class, noticeReference);
492         doFullGetInstanceTest(ObjectDigestInfo.class, objectDigestInfo);
493 
494         PolicyInformation.getInstance(null);
495         PolicyMappings.getInstance(null);
496         PolicyQualifierInfo.getInstance(null);
497         PrivateKeyUsagePeriod.getInstance(null);
498         doFullGetInstanceTest(RoleSyntax.class, new RoleSyntax(new GeneralNames(new GeneralName(new X500Name("CN=Test"))), new GeneralName(GeneralName.uniformResourceIdentifier, "http://bc")));
499         org.bouncycastle.asn1.pkcs.RSAPublicKey.getInstance(null);
500 
501         SubjectDirectoryAttributes.getInstance(null);
502         SubjectKeyIdentifier.getInstance(null);
503         SubjectKeyIdentifier.getInstance(null);
504         SubjectPublicKeyInfo.getInstance(null);
505         SubjectPublicKeyInfo.getInstance(null);
506         TargetInformation.getInstance(null);
507         Target.getInstance(null);
508         Targets.getInstance(null);
509         TBSCertificate.getInstance(null);
510         TBSCertificate.getInstance(null);
511         TBSCertificateStructure.getInstance(null);
512         TBSCertificateStructure.getInstance(null);
513         TBSCertList.CRLEntry.getInstance(null);
514         TBSCertList.getInstance(null);
515         TBSCertList.getInstance(null);
516         Time.getInstance(null);
517         Time.getInstance(null);
518         doFullGetInstanceTest(UserNotice.class, new UserNotice(noticeReference, "hello world"));
519         V2Form.getInstance(null);
520         V2Form.getInstance(null);
521         X509CertificateStructure.getInstance(null);
522         X509CertificateStructure.getInstance(null);
523         X509Extensions.getInstance(null);
524         X509Extensions.getInstance(null);
525         X500Name.getInstance(null);
526         X500Name.getInstance(null);
527         DHDomainParameters.getInstance(null);
528         DHDomainParameters.getInstance(null);
529         DHPublicKey.getInstance(null);
530         DHPublicKey.getInstance(null);
531         DHValidationParms.getInstance(null);
532         DHValidationParms.getInstance(null);
533         X962Parameters.getInstance(null);
534         X962Parameters.getInstance(null);
535         X9ECParameters.getInstance(null);
536 
537         BiometricData.getInstance(null);
538         Iso4217CurrencyCode.getInstance(null);
539         MonetaryValue.getInstance(null);
540         QCStatement.getInstance(null);
541         SemanticsInformation.getInstance(null);
542         TypeOfBiometricData.getInstance(null);
543         NameOrPseudonym.getInstance(null);
544         PersonalData.getInstance(null);
545     }
546 
getName()547     public String getName()
548     {
549         return "GetInstanceNullTest";
550     }
551 }
552