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