1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1.x509; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport java.util.Enumeration; 46e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport java.util.Hashtable; 56e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport java.util.Vector; 66e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 7d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Rootimport org.bouncycastle.asn1.ASN1Boolean; 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1EncodableVector; 94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier; 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1OctetString; 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Sequence; 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1TaggedObject; 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERSequence; 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom/** 184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * @deprecated use Extensions 194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom */ 20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class X509Extensions 214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Object 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Subject Directory Attributes 256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectDirectoryAttributes = new ASN1ObjectIdentifier("2.5.29.9"); 28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Subject Key Identifier 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectKeyIdentifier = new ASN1ObjectIdentifier("2.5.29.14"); 34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Key Usage 376e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier KeyUsage = new ASN1ObjectIdentifier("2.5.29.15"); 40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Private Key Usage Period 436e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier PrivateKeyUsagePeriod = new ASN1ObjectIdentifier("2.5.29.16"); 46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 486e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Subject Alternative Name 496e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 516e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectAlternativeName = new ASN1ObjectIdentifier("2.5.29.17"); 52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 546e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Issuer Alternative Name 556e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 576e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier IssuerAlternativeName = new ASN1ObjectIdentifier("2.5.29.18"); 58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 606e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Basic Constraints 616e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 636e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier BasicConstraints = new ASN1ObjectIdentifier("2.5.29.19"); 64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 666e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * CRL Number 676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 68b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 696e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CRLNumber = new ASN1ObjectIdentifier("2.5.29.20"); 70b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 71b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 726e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Reason code 736e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 74b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier ReasonCode = new ASN1ObjectIdentifier("2.5.29.21"); 76b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 77b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 786e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Hold Instruction Code 796e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 80b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 816e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier InstructionCode = new ASN1ObjectIdentifier("2.5.29.23"); 82b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 83b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 846e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Invalidity Date 856e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 86b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 876e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier InvalidityDate = new ASN1ObjectIdentifier("2.5.29.24"); 88b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 89b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 906e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Delta CRL indicator 916e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 92b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 936e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier DeltaCRLIndicator = new ASN1ObjectIdentifier("2.5.29.27"); 94b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 95b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 966e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Issuing Distribution Point 976e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 98b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 996e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier IssuingDistributionPoint = new ASN1ObjectIdentifier("2.5.29.28"); 100b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 101b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1026e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Certificate Issuer 1036e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 104b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1056e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CertificateIssuer = new ASN1ObjectIdentifier("2.5.29.29"); 106b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 107b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1086e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Name Constraints 1096e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 110b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier NameConstraints = new ASN1ObjectIdentifier("2.5.29.30"); 112b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 113b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * CRL Distribution Points 1156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 116b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1176e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CRLDistributionPoints = new ASN1ObjectIdentifier("2.5.29.31"); 118b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 119b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Certificate Policies 1216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 122b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CertificatePolicies = new ASN1ObjectIdentifier("2.5.29.32"); 124b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 125b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Policy Mappings 1276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 128b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier PolicyMappings = new ASN1ObjectIdentifier("2.5.29.33"); 130b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 131b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Authority Key Identifier 1336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 134b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier AuthorityKeyIdentifier = new ASN1ObjectIdentifier("2.5.29.35"); 136b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 137b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Policy Constraints 1396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 140b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier PolicyConstraints = new ASN1ObjectIdentifier("2.5.29.36"); 142b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 143b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1446e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Extended Key Usage 1456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 146b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1476e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier ExtendedKeyUsage = new ASN1ObjectIdentifier("2.5.29.37"); 148b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 149b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 150b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Freshest CRL 1516e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 152b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1536e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier FreshestCRL = new ASN1ObjectIdentifier("2.5.29.46"); 154b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 155b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 156b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Inhibit Any Policy 1576e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 158b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1596e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier InhibitAnyPolicy = new ASN1ObjectIdentifier("2.5.29.54"); 160b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 161b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 162b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Authority Info Access 1636e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 164b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1656e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier AuthorityInfoAccess = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.1"); 166b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 167b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 168b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Subject Info Access 1696e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 170b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1716e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectInfoAccess = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.11"); 172b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 173b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 174c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * Logo Type 1756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 176c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 1776e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier LogoType = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.12"); 178c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 179c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 180b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * BiometricInfo 1816e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 182b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1836e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier BiometricInfo = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.2"); 184b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 185b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 186b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * QCStatements 1876e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 188b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1896e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier QCStatements = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.3"); 190b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 191c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 192c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * Audit identity extension in attribute certificates. 1936e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 194c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 1956e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier AuditIdentity = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.4"); 196c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 197c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 198c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * NoRevAvail extension in attribute certificates. 1996e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 200c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 2016e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier NoRevAvail = new ASN1ObjectIdentifier("2.5.29.56"); 202c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 203c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 204c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * TargetInformation extension in attribute certificates. 2056e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 206c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 2076e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier TargetInformation = new ASN1ObjectIdentifier("2.5.29.55"); 208c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 209db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom private Hashtable extensions = new Hashtable(); 210db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom private Vector ordering = new Vector(); 211b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 212b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static X509Extensions getInstance( 213b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1TaggedObject obj, 214b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam boolean explicit) 215b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 216b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return getInstance(ASN1Sequence.getInstance(obj, explicit)); 217b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 218b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 219b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static X509Extensions getInstance( 220b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Object obj) 221b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 222b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (obj == null || obj instanceof X509Extensions) 223b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 224b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return (X509Extensions)obj; 225b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 226b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 227b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (obj instanceof ASN1Sequence) 228b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 229b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new X509Extensions((ASN1Sequence)obj); 230b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 231b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 2324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (obj instanceof Extensions) 2334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 2344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return new X509Extensions((ASN1Sequence)((Extensions)obj).toASN1Primitive()); 2354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 2364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 237b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (obj instanceof ASN1TaggedObject) 238b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 239b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return getInstance(((ASN1TaggedObject)obj).getObject()); 240b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 241b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 242b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName()); 243b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 244b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 245b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 246b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Constructor from ASN1Sequence. 247b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 248b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * the extensions are a list of constructed sequences, either with (OID, OctetString) or (OID, Boolean, OctetString) 249b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 250b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 251b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1Sequence seq) 252b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 253b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Enumeration e = seq.getObjects(); 254b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 255b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam while (e.hasMoreElements()) 256b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 257b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1Sequence s = ASN1Sequence.getInstance(e.nextElement()); 258b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 259db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (s.size() == 3) 260b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 261d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root extensions.put(s.getObjectAt(0), new X509Extension(ASN1Boolean.getInstance(s.getObjectAt(1)), ASN1OctetString.getInstance(s.getObjectAt(2)))); 262b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 263db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom else if (s.size() == 2) 264b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 265db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom extensions.put(s.getObjectAt(0), new X509Extension(false, ASN1OctetString.getInstance(s.getObjectAt(1)))); 266b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 267b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam else 268b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 269db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom throw new IllegalArgumentException("Bad sequence size: " + s.size()); 270b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 271b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 272db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom ordering.addElement(s.getObjectAt(0)); 273b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 274b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 275b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 276b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 277b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * constructor from a table of extensions. 278b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <p> 279b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * it's is assumed the table contains OID/String pairs. 280b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 281b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 282b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Hashtable extensions) 283b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 284b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam this(null, extensions); 285b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 286b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 287b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 288b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Constructor from a table of extensions with ordering. 289b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <p> 290b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * It's is assumed the table contains OID/String pairs. 29170c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom * @deprecated use Extensions 292b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 293b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 294b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Vector ordering, 295b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Hashtable extensions) 296b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 297b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Enumeration e; 298b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 299b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (ordering == null) 300b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 301b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam e = extensions.keys(); 302b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 303b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam else 304b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 305b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam e = ordering.elements(); 306b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 307b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 308db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom while (e.hasMoreElements()) 309db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 3104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this.ordering.addElement(ASN1ObjectIdentifier.getInstance(e.nextElement())); 311db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 312db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 313db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom e = this.ordering.elements(); 3146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 315b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam while (e.hasMoreElements()) 316b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 3174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(e.nextElement()); 318b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam X509Extension ext = (X509Extension)extensions.get(oid); 3196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 320db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom this.extensions.put(oid, ext); 321b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 322b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 323b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 324b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 325b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Constructor from two vectors 326b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 327b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @param objectIDs a vector of the object identifiers. 328b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @param values a vector of the extension values. 32970c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom * @deprecated use Extensions 330b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 331b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 332b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Vector objectIDs, 333b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Vector values) 334b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 335b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Enumeration e = objectIDs.elements(); 336b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 337db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom while (e.hasMoreElements()) 338db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 339db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom this.ordering.addElement(e.nextElement()); 340db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 3416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 342b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam int count = 0; 343b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 344db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom e = this.ordering.elements(); 3456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 346b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam while (e.hasMoreElements()) 347b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 3486e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1ObjectIdentifier oid = (ASN1ObjectIdentifier)e.nextElement(); 349b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam X509Extension ext = (X509Extension)values.elementAt(count); 350b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 351db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom this.extensions.put(oid, ext); 352b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam count++; 353b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 354b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 355b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 356b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 357b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * return an Enumeration of the extension field's object ids. 358b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 359b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public Enumeration oids() 360b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 361db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return ordering.elements(); 362b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 363b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 364b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 365b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * return the extension represented by the object identifier 366b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * passed in. 367b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 368b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @return the extension if it's present, null otherwise. 369b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 370b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extension getExtension( 3714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier oid) 372b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 373db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return (X509Extension)extensions.get(oid); 374b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 375b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 376b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 377b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <pre> 378b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension 379b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 380b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Extension ::= SEQUENCE { 381b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * extnId EXTENSION.&id ({ExtensionSet}), 382b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * critical BOOLEAN DEFAULT FALSE, 383b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * extnValue OCTET STRING } 384b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * </pre> 385b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 3864c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 387b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 388c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom ASN1EncodableVector vec = new ASN1EncodableVector(); 389db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Enumeration e = ordering.elements(); 390b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 391db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom while (e.hasMoreElements()) 392c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 3934c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier oid = (ASN1ObjectIdentifier)e.nextElement(); 394db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom X509Extension ext = (X509Extension)extensions.get(oid); 395b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1EncodableVector v = new ASN1EncodableVector(); 396b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 397b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(oid); 398b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 399b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (ext.isCritical()) 400b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 401d001700a15b8bd733ae344c1fc315b97c43c6590Kenny Root v.add(ASN1Boolean.TRUE); 402b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 403b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 404b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(ext.getValue()); 405b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 406b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam vec.add(new DERSequence(v)); 407b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 408c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 409b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new DERSequence(vec); 410b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 411b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 412c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom public boolean equivalent( 413c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom X509Extensions other) 414b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 415db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (extensions.size() != other.extensions.size()) 416b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 417b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return false; 418b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 419b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 420db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Enumeration e1 = extensions.keys(); 421b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 422c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom while (e1.hasMoreElements()) 423b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 424db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Object key = e1.nextElement(); 425c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 426db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (!extensions.get(key).equals(other.extensions.get(key))) 427b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 428b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return false; 429b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 430b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 431b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 432b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return true; 433b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 4346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 435db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom public ASN1ObjectIdentifier[] getExtensionOIDs() 436db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 437db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return toOidArray(ordering); 438db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 439db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 440db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom public ASN1ObjectIdentifier[] getNonCriticalExtensionOIDs() 441db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 442db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return getExtensionOIDs(false); 443db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 444db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 445db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom public ASN1ObjectIdentifier[] getCriticalExtensionOIDs() 446db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 447db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return getExtensionOIDs(true); 448db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 449db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 450db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom private ASN1ObjectIdentifier[] getExtensionOIDs(boolean isCritical) 451db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 452db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Vector oidVec = new Vector(); 453db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 454db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom for (int i = 0; i != ordering.size(); i++) 455db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 456db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Object oid = ordering.elementAt(i); 457db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 458db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (((X509Extension)extensions.get(oid)).isCritical() == isCritical) 459db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 460db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom oidVec.addElement(oid); 461db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 462db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 463db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 464db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return toOidArray(oidVec); 465db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 4666e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 4676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private ASN1ObjectIdentifier[] toOidArray(Vector oidVec) 4686e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 4696e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1ObjectIdentifier[] oids = new ASN1ObjectIdentifier[oidVec.size()]; 4706e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 4716e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom for (int i = 0; i != oids.length; i++) 4726e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 4736e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom oids[i] = (ASN1ObjectIdentifier)oidVec.elementAt(i); 4746e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 4756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return oids; 4766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 477b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 478