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 7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1EncodableVector; 84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier; 10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1OctetString; 114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Sequence; 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1TaggedObject; 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERBoolean; 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERObjectIdentifier; 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERSequence; 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom/** 194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom * @deprecated use Extensions 204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom */ 21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class X509Extensions 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Object 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Subject Directory Attributes 266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectDirectoryAttributes = new ASN1ObjectIdentifier("2.5.29.9"); 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Subject Key Identifier 326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectKeyIdentifier = new ASN1ObjectIdentifier("2.5.29.14"); 35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 376e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Key Usage 386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier KeyUsage = new ASN1ObjectIdentifier("2.5.29.15"); 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 436e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Private Key Usage Period 446e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier PrivateKeyUsagePeriod = new ASN1ObjectIdentifier("2.5.29.16"); 47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 496e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Subject Alternative Name 506e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 526e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectAlternativeName = new ASN1ObjectIdentifier("2.5.29.17"); 53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 556e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Issuer Alternative Name 566e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 586e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier IssuerAlternativeName = new ASN1ObjectIdentifier("2.5.29.18"); 59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 60b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 616e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Basic Constraints 626e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 646e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier BasicConstraints = new ASN1ObjectIdentifier("2.5.29.19"); 65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 66b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * CRL Number 686e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 69b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 706e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CRLNumber = new ASN1ObjectIdentifier("2.5.29.20"); 71b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 72b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 736e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Reason code 746e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 75b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier ReasonCode = new ASN1ObjectIdentifier("2.5.29.21"); 77b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 78b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 796e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Hold Instruction Code 806e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 81b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 826e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier InstructionCode = new ASN1ObjectIdentifier("2.5.29.23"); 83b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 84b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 856e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Invalidity Date 866e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 87b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 886e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier InvalidityDate = new ASN1ObjectIdentifier("2.5.29.24"); 89b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 90b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 916e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Delta CRL indicator 926e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 93b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 946e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier DeltaCRLIndicator = new ASN1ObjectIdentifier("2.5.29.27"); 95b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 96b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 976e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Issuing Distribution Point 986e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 99b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1006e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier IssuingDistributionPoint = new ASN1ObjectIdentifier("2.5.29.28"); 101b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 102b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1036e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Certificate Issuer 1046e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 105b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1066e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CertificateIssuer = new ASN1ObjectIdentifier("2.5.29.29"); 107b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 108b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1096e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Name Constraints 1106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 111b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier NameConstraints = new ASN1ObjectIdentifier("2.5.29.30"); 113b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 114b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * CRL Distribution Points 1166e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 117b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1186e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CRLDistributionPoints = new ASN1ObjectIdentifier("2.5.29.31"); 119b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 120b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Certificate Policies 1226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 123b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier CertificatePolicies = new ASN1ObjectIdentifier("2.5.29.32"); 125b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 126b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Policy Mappings 1286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 129b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier PolicyMappings = new ASN1ObjectIdentifier("2.5.29.33"); 131b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 132b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Authority Key Identifier 1346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 135b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier AuthorityKeyIdentifier = new ASN1ObjectIdentifier("2.5.29.35"); 137b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 138b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Policy Constraints 1406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 141b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier PolicyConstraints = new ASN1ObjectIdentifier("2.5.29.36"); 143b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 144b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 1456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Extended Key Usage 1466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 147b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1486e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier ExtendedKeyUsage = new ASN1ObjectIdentifier("2.5.29.37"); 149b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 150b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 151b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Freshest CRL 1526e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 153b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1546e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier FreshestCRL = new ASN1ObjectIdentifier("2.5.29.46"); 155b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 156b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 157b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Inhibit Any Policy 1586e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 159b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1606e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier InhibitAnyPolicy = new ASN1ObjectIdentifier("2.5.29.54"); 161b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 162b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 163b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Authority Info Access 1646e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 165b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1666e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier AuthorityInfoAccess = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.1"); 167b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 168b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 169b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Subject Info Access 1706e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 171b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1726e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier SubjectInfoAccess = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.11"); 173b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 174b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 175c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * Logo Type 1766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 177c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 1786e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier LogoType = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.12"); 179c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 180c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 181b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * BiometricInfo 1826e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 183b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1846e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier BiometricInfo = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.2"); 185b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 186b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 187b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * QCStatements 1886e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 189b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 1906e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier QCStatements = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.3"); 191b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 192c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 193c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * Audit identity extension in attribute certificates. 1946e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 195c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 1966e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier AuditIdentity = new ASN1ObjectIdentifier("1.3.6.1.5.5.7.1.4"); 197c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 198c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 199c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * NoRevAvail extension in attribute certificates. 2006e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 201c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 2026e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier NoRevAvail = new ASN1ObjectIdentifier("2.5.29.56"); 203c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 204c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 205c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * TargetInformation extension in attribute certificates. 2066e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated use X509Extension value. 207c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 2086e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static final ASN1ObjectIdentifier TargetInformation = new ASN1ObjectIdentifier("2.5.29.55"); 209c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 210db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom private Hashtable extensions = new Hashtable(); 211db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom private Vector ordering = new Vector(); 212b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 213b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static X509Extensions getInstance( 214b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1TaggedObject obj, 215b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam boolean explicit) 216b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 217b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return getInstance(ASN1Sequence.getInstance(obj, explicit)); 218b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 219b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 220b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static X509Extensions getInstance( 221b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Object obj) 222b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 223b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (obj == null || obj instanceof X509Extensions) 224b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 225b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return (X509Extensions)obj; 226b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 227b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 228b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (obj instanceof ASN1Sequence) 229b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 230b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new X509Extensions((ASN1Sequence)obj); 231b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 232b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 2334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (obj instanceof Extensions) 2344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 2354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return new X509Extensions((ASN1Sequence)((Extensions)obj).toASN1Primitive()); 2364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 2374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 238b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (obj instanceof ASN1TaggedObject) 239b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 240b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return getInstance(((ASN1TaggedObject)obj).getObject()); 241b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 242b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 243b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName()); 244b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 245b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 246b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 247b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Constructor from ASN1Sequence. 248b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 249b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * the extensions are a list of constructed sequences, either with (OID, OctetString) or (OID, Boolean, OctetString) 250b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 251b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 252b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1Sequence seq) 253b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 254b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Enumeration e = seq.getObjects(); 255b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 256b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam while (e.hasMoreElements()) 257b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 258b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1Sequence s = ASN1Sequence.getInstance(e.nextElement()); 259b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 260db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (s.size() == 3) 261b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 262db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom extensions.put(s.getObjectAt(0), new X509Extension(DERBoolean.getInstance(s.getObjectAt(1)), ASN1OctetString.getInstance(s.getObjectAt(2)))); 263b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 264db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom else if (s.size() == 2) 265b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 266db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom extensions.put(s.getObjectAt(0), new X509Extension(false, ASN1OctetString.getInstance(s.getObjectAt(1)))); 267b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 268b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam else 269b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 270db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom throw new IllegalArgumentException("Bad sequence size: " + s.size()); 271b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 272b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 273db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom ordering.addElement(s.getObjectAt(0)); 274b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 275b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 276b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 277b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 278b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * constructor from a table of extensions. 279b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <p> 280b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * it's is assumed the table contains OID/String pairs. 281b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 282b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 283b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Hashtable extensions) 284b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 285b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam this(null, extensions); 286b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 287b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 288b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 289b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Constructor from a table of extensions with ordering. 290b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <p> 291b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * It's is assumed the table contains OID/String pairs. 29270c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom * @deprecated use Extensions 293b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 294b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 295b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Vector ordering, 296b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Hashtable extensions) 297b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 298b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Enumeration e; 299b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 300b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (ordering == null) 301b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 302b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam e = extensions.keys(); 303b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 304b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam else 305b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 306b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam e = ordering.elements(); 307b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 308b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 309db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom while (e.hasMoreElements()) 310db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 3114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this.ordering.addElement(ASN1ObjectIdentifier.getInstance(e.nextElement())); 312db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 313db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 314db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom e = this.ordering.elements(); 3156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 316b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam while (e.hasMoreElements()) 317b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 3184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(e.nextElement()); 319b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam X509Extension ext = (X509Extension)extensions.get(oid); 3206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 321db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom this.extensions.put(oid, ext); 322b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 323b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 324b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 325b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 326b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Constructor from two vectors 327b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 328b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @param objectIDs a vector of the object identifiers. 329b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @param values a vector of the extension values. 33070c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom * @deprecated use Extensions 331b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 332b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extensions( 333b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Vector objectIDs, 334b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Vector values) 335b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 336b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Enumeration e = objectIDs.elements(); 337b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 338db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom while (e.hasMoreElements()) 339db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 340db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom this.ordering.addElement(e.nextElement()); 341db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 3426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 343b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam int count = 0; 344b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 345db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom e = this.ordering.elements(); 3466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 347b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam while (e.hasMoreElements()) 348b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 3496e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1ObjectIdentifier oid = (ASN1ObjectIdentifier)e.nextElement(); 350b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam X509Extension ext = (X509Extension)values.elementAt(count); 351b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 352db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom this.extensions.put(oid, ext); 353b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam count++; 354b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 355b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 356b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 357b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 358b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * return an Enumeration of the extension field's object ids. 359b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 360b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public Enumeration oids() 361b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 362db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return ordering.elements(); 363b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 364b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 365b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 366b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * return the extension represented by the object identifier 367b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * passed in. 368b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 369b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @return the extension if it's present, null otherwise. 370b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 371b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public X509Extension getExtension( 3724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom DERObjectIdentifier oid) 3736e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 374db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return (X509Extension)extensions.get(oid); 3756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 3766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 3776e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom /** 3786e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @deprecated 3796e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @param oid 3806e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @return 3816e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom */ 3826e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X509Extension getExtension( 3834c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier oid) 384b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 385db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return (X509Extension)extensions.get(oid); 386b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 387b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 388b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 389b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <pre> 390b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension 391b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 392b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Extension ::= SEQUENCE { 393b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * extnId EXTENSION.&id ({ExtensionSet}), 394b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * critical BOOLEAN DEFAULT FALSE, 395b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * extnValue OCTET STRING } 396b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * </pre> 397b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 3984c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 399b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 400c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom ASN1EncodableVector vec = new ASN1EncodableVector(); 401db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Enumeration e = ordering.elements(); 402b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 403db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom while (e.hasMoreElements()) 404c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 4054c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier oid = (ASN1ObjectIdentifier)e.nextElement(); 406db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom X509Extension ext = (X509Extension)extensions.get(oid); 407b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1EncodableVector v = new ASN1EncodableVector(); 408b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 409b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(oid); 410b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 411b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (ext.isCritical()) 412b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 413b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(DERBoolean.TRUE); 414b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 415b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 416b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(ext.getValue()); 417b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 418b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam vec.add(new DERSequence(v)); 419b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 420c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 421b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new DERSequence(vec); 422b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 423b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 424c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom public boolean equivalent( 425c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom X509Extensions other) 426b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 427db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (extensions.size() != other.extensions.size()) 428b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 429b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return false; 430b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 431b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 432db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Enumeration e1 = extensions.keys(); 433b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 434c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom while (e1.hasMoreElements()) 435b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 436db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Object key = e1.nextElement(); 437c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 438db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (!extensions.get(key).equals(other.extensions.get(key))) 439b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 440b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return false; 441b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 442b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 443b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 444b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return true; 445b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 4466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 447db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom public ASN1ObjectIdentifier[] getExtensionOIDs() 448db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 449db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return toOidArray(ordering); 450db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 451db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 452db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom public ASN1ObjectIdentifier[] getNonCriticalExtensionOIDs() 453db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 454db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return getExtensionOIDs(false); 455db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 456db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 457db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom public ASN1ObjectIdentifier[] getCriticalExtensionOIDs() 458db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 459db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return getExtensionOIDs(true); 460db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 461db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 462db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom private ASN1ObjectIdentifier[] getExtensionOIDs(boolean isCritical) 463db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 464db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Vector oidVec = new Vector(); 465db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 466db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom for (int i = 0; i != ordering.size(); i++) 467db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 468db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom Object oid = ordering.elementAt(i); 469db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 470db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom if (((X509Extension)extensions.get(oid)).isCritical() == isCritical) 471db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom { 472db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom oidVec.addElement(oid); 473db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 474db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 475db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom 476db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom return toOidArray(oidVec); 477db9f6e2562dff550a3c62aeb7c96e72fc40d1a06Brian Carlstrom } 4786e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 4796e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private ASN1ObjectIdentifier[] toOidArray(Vector oidVec) 4806e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 4816e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1ObjectIdentifier[] oids = new ASN1ObjectIdentifier[oidVec.size()]; 4826e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 4836e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom for (int i = 0; i != oids.length; i++) 4846e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 4856e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom oids[i] = (ASN1ObjectIdentifier)oidVec.elementAt(i); 4866e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 4876e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return oids; 4886e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 489b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 490