Red Hat Application Migration Toolkit
package iaik.x509;
import iaik.asn1.ASN1Object;
import iaik.asn1.BOOLEAN;
import iaik.asn1.CodingException;
import iaik.asn1.DerCoder;
import iaik.asn1.OCTET_STRING;
import iaik.asn1.ObjectID;
import iaik.asn1.SEQUENCE;
import iaik.utils.InternalErrorException;
import iaik.utils.Util;
import iaik.x509.UnknownExtension;
import iaik.x509.V3Extension;
import iaik.x509.X509ExtensionException;
import iaik.x509.X509ExtensionInitException;
import iaik.x509.a;
import iaik.x509.extensions.AuthorityInfoAccess;
import iaik.x509.extensions.AuthorityKeyIdentifier;
import iaik.x509.extensions.BasicConstraints;
import iaik.x509.extensions.CRLDistributionPoints;
import iaik.x509.extensions.CRLNumber;
import iaik.x509.extensions.CertificateIssuer;
import iaik.x509.extensions.CertificatePolicies;
import iaik.x509.extensions.DeltaCRLIndicator;
import iaik.x509.extensions.ErrorExtension;
import iaik.x509.extensions.ExtendedKeyUsage;
import iaik.x509.extensions.FreshestCRL;
import iaik.x509.extensions.HoldInstructionCode;
import iaik.x509.extensions.InhibitAnyPolicy;
import iaik.x509.extensions.InvalidityDate;
import iaik.x509.extensions.IssuerAltName;
import iaik.x509.extensions.IssuingDistributionPoint;
import iaik.x509.extensions.KeyUsage;
import iaik.x509.extensions.NameConstraints;
import iaik.x509.extensions.PolicyConstraints;
import iaik.x509.extensions.PolicyMappings;
import iaik.x509.extensions.PrivateKeyUsagePeriod;
import iaik.x509.extensions.ReasonCode;
import iaik.x509.extensions.SubjectAltName;
import iaik.x509.extensions.SubjectDirectoryAttributes;
import iaik.x509.extensions.SubjectInfoAccess;
import iaik.x509.extensions.SubjectKeyIdentifier;
import iaik.x509.extensions.netscape.NetscapeBaseUrl;
import iaik.x509.extensions.netscape.NetscapeCaPolicyUrl;
import iaik.x509.extensions.netscape.NetscapeCaRevocationUrl;
import iaik.x509.extensions.netscape.NetscapeCertRenewalUrl;
import iaik.x509.extensions.netscape.NetscapeCertType;
import iaik.x509.extensions.netscape.NetscapeComment;
import iaik.x509.extensions.netscape.NetscapeRevocationUrl;
import iaik.x509.extensions.netscape.NetscapeSSLServerName;
import iaik.x509.extensions.ocsp.NoCheck;
import iaik.x509.extensions.qualified.BiometricInfo;
import iaik.x509.extensions.qualified.QCStatements;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Set;
import java.util.Vector;
public class X509Extensions {
// $FF: synthetic field
static Class lb;
// $FF: synthetic field
static Class d;
// $FF: synthetic field
static Class a;
// $FF: synthetic field
static Class c;
// $FF: synthetic field
static Class e;
// $FF: synthetic field
static Class f;
// $FF: synthetic field
static Class g;
// $FF: synthetic field
static Class h;
// $FF: synthetic field
static Class i;
// $FF: synthetic field
static Class j;
// $FF: synthetic field
static Class k;
// $FF: synthetic field
static Class l;
// $FF: synthetic field
static Class fb;
// $FF: synthetic field
static Class y;
// $FF: synthetic field
static Class ab;
// $FF: synthetic field
static Class q;
// $FF: synthetic field
static Class w;
// $FF: synthetic field
static Class db;
// $FF: synthetic field
static Class gb;
// $FF: synthetic field
static Class bb;
// $FF: synthetic field
static Class z;
// $FF: synthetic field
static Class n;
// $FF: synthetic field
static Class kb;
// $FF: synthetic field
static Class o;
// $FF: synthetic field
static Class m;
// $FF: synthetic field
static Class p;
// $FF: synthetic field
static Class r;
// $FF: synthetic field
static Class s;
// $FF: synthetic field
static Class t;
// $FF: synthetic field
static Class u;
// $FF: synthetic field
static Class v;
// $FF: synthetic field
static Class x;
// $FF: synthetic field
static Class cb;
// $FF: synthetic field
static Class hb;
// $FF: synthetic field
static Class eb;
// $FF: synthetic field
static Class ib;
// $FF: synthetic field
static Class jb;
protected Hashtable noncritical_extensions;
protected Hashtable critical_extensions;
private static a b = new a();
static Class a(String var0) {
try {
return Class.forName(var0);
} catch (ClassNotFoundException var2) {
throw new NoClassDefFoundError(var2.getMessage());
}
}
public String toString() {
StringBuffer var1 = new StringBuffer();
V3Extension var2 = null;
Enumeration var3 = this.listExtensions();
for(int var4 = 1; var3.hasMoreElements(); ++var4) {
var2 = (V3Extension)var3.nextElement();
var1.append("Extension " + var4 + ": ");
if(var2.isCritical()) {
var1.append("critical ");
} else {
var1.append("not critical ");
}
String var5 = var2.getName();
if(var5 != null && var5.trim().length() != 0) {
var1.append(var5);
} else {
var1.append("Unknown Extension");
}
var1.append("\n");
var1.append(var2 + "\n\n");
}
return var1.toString();
}
public ASN1Object toASN1Object() throws X509ExtensionException {
SEQUENCE var1 = null;
SEQUENCE var2 = null;
var2 = new SEQUENCE();
Enumeration var3 = this.critical_extensions.keys();
while(var3.hasMoreElements()) {
var1 = new SEQUENCE();
ObjectID var4 = (ObjectID)var3.nextElement();
var1.addComponent(var4);
var1.addComponent(new BOOLEAN(true));
byte[] var5 = (byte[])this.critical_extensions.get(var4);
if(var5 == null) {
throw new InternalErrorException("Extension value = null!");
}
var1.addComponent(new OCTET_STRING(var5));
var2.addComponent(var1);
}
Enumeration var7 = this.noncritical_extensions.keys();
while(var7.hasMoreElements()) {
var1 = new SEQUENCE();
ObjectID var8 = (ObjectID)var7.nextElement();
var1.addComponent(var8);
byte[] var6 = (byte[])this.noncritical_extensions.get(var8);
if(var6 == null) {
throw new InternalErrorException("Extension value = null!");
}
var1.addComponent(new OCTET_STRING(var6));
var2.addComponent(var1);
}
return var2;
}
public boolean removeExtension(ObjectID var1) {
return this.critical_extensions.remove(var1) != null?true:(this.noncritical_extensions.remove(var1) != null?true:true);
}
public void removeAllExtensions() {
this.critical_extensions.clear();
this.noncritical_extensions.clear();
}
public static void register(ObjectID var0, Class var1) {
b.register(lb != null?lb:(lb = a("iaik.x509.V3Extension")), var0, var1);
}
protected void parseExtensions(ASN1Object var1) throws X509ExtensionException {
try {
for(int var2 = 0; var2 < var1.countComponents(); ++var2) {
boolean var3 = false;
ASN1Object var4 = var1.getComponentAt(var2);
ObjectID var5 = (ObjectID)var4.getComponentAt(0);
int var6 = var4.countComponents();
if(var6 == 3) {
var3 = ((Boolean)var4.getComponentAt(1).getValue()).booleanValue();
}
byte[] var7 = (byte[])var4.getComponentAt(var6 - 1).getValue();
if(var3) {
this.critical_extensions.put(var5, var7);
} else {
this.noncritical_extensions.put(var5, var7);
}
}
} catch (CodingException var8) {
throw new X509ExtensionException(var8.getMessage());
}
}
public Enumeration listExtensions() {
Vector var1 = new Vector();
Enumeration var2 = this.critical_extensions.keys();
ObjectID var3;
while(var2.hasMoreElements()) {
var3 = (ObjectID)var2.nextElement();
try {
var1.addElement(this.getExtension(var3));
} catch (X509ExtensionInitException var6) {
var1.addElement(new ErrorExtension(var3, true, var6.getMessage()));
}
}
var2 = this.noncritical_extensions.keys();
while(var2.hasMoreElements()) {
var3 = (ObjectID)var2.nextElement();
try {
var1.addElement(this.getExtension(var3));
} catch (X509ExtensionInitException var5) {
var1.addElement(new ErrorExtension(var3, false, var5.getMessage()));
}
}
return var1.elements();
}
public boolean hasUnsupportedCriticalExtension() {
try {
Enumeration var1 = this.critical_extensions.keys();
while(var1.hasMoreElements()) {
V3Extension var2 = this.getExtension((ObjectID)var1.nextElement());
if(var2 instanceof UnknownExtension) {
return true;
}
}
return false;
} catch (X509ExtensionInitException var3) {
return true;
}
}
public boolean hasExtensions() {
return !this.critical_extensions.isEmpty() || !this.noncritical_extensions.isEmpty();
}
public Set getNonCriticalExtensionOIDs() {
HashSet var1 = new HashSet();
Enumeration var2 = this.noncritical_extensions.keys();
while(var2.hasMoreElements()) {
ObjectID var3 = (ObjectID)var2.nextElement();
var1.add(var3.getID());
}
return var1;
}
public byte[] getExtensionValue(String var1) {
Object var3 = this.critical_extensions.get(new ObjectID(var1));
byte[] var2;
if(var3 != null) {
var2 = (byte[])var3;
} else {
var2 = (byte[])this.noncritical_extensions.get(new ObjectID(var1));
}
return var2 != null?DerCoder.encode(new OCTET_STRING(var2)):null;
}
public V3Extension getExtension(ObjectID var1) throws X509ExtensionInitException {
boolean var3 = true;
byte[] var2 = (byte[])this.critical_extensions.get(var1);
if(var2 == null) {
var2 = (byte[])this.noncritical_extensions.get(var1);
if(var2 == null) {
return null;
}
var3 = false;
}
Object var4 = null;
try {
var4 = create(var1);
} catch (InstantiationException var8) {
var4 = new UnknownExtension(var1);
}
((V3Extension)var4).setCritical(var3);
try {
ASN1Object var5 = DerCoder.decode(var2);
((V3Extension)var4).init(var5);
return (V3Extension)var4;
} catch (X509ExtensionException var6) {
throw new X509ExtensionInitException(var1, var3, var6.toString());
} catch (CodingException var7) {
throw new X509ExtensionInitException(var1, var3, var7.toString());
}
}
public Set getCriticalExtensionOIDs() {
HashSet var1 = new HashSet();
Enumeration var2 = this.critical_extensions.keys();
while(var2.hasMoreElements()) {
ObjectID var3 = (ObjectID)var2.nextElement();
var1.add(var3.getID());
}
return var1;
}
public static V3Extension create(ObjectID var0) throws InstantiationException {
return (V3Extension)b.create(lb != null?lb:(lb = a("iaik.x509.V3Extension")), var0, false);
}
public int countExtensions() {
return this.critical_extensions.size() + this.noncritical_extensions.size();
}
public boolean addExtension(V3Extension var1) throws X509ExtensionException {
byte[] var2 = DerCoder.encode(var1.toASN1Object());
return var1.isCritical()?this.critical_extensions.put(var1.getObjectID(), var2) != null:this.noncritical_extensions.put(var1.getObjectID(), var2) != null;
}
public X509Extensions(ASN1Object var1) throws X509ExtensionException {
this();
this.parseExtensions(var1);
}
public X509Extensions() {
this.critical_extensions = new Hashtable(20);
this.noncritical_extensions = new Hashtable(20);
}
static {
register(AuthorityKeyIdentifier.oid, jb != null?jb:(jb = a("iaik.x509.extensions.AuthorityKeyIdentifier")));
register(BasicConstraints.oid, ib != null?ib:(ib = a("iaik.x509.extensions.BasicConstraints")));
register(CertificatePolicies.oid, eb != null?eb:(eb = a("iaik.x509.extensions.CertificatePolicies")));
register(CRLDistributionPoints.oid, hb != null?hb:(hb = a("iaik.x509.extensions.CRLDistributionPoints")));
register(ExtendedKeyUsage.oid, cb != null?cb:(cb = a("iaik.x509.extensions.ExtendedKeyUsage")));
register(IssuerAltName.oid, x != null?x:(x = a("iaik.x509.extensions.IssuerAltName")));
register(KeyUsage.oid, v != null?v:(v = a("iaik.x509.extensions.KeyUsage")));
register(NameConstraints.oid, u != null?u:(u = a("iaik.x509.extensions.NameConstraints")));
register(PolicyConstraints.oid, t != null?t:(t = a("iaik.x509.extensions.PolicyConstraints")));
register(PolicyMappings.oid, s != null?s:(s = a("iaik.x509.extensions.PolicyMappings")));
register(PrivateKeyUsagePeriod.oid, r != null?r:(r = a("iaik.x509.extensions.PrivateKeyUsagePeriod")));
register(SubjectAltName.oid, p != null?p:(p = a("iaik.x509.extensions.SubjectAltName")));
register(SubjectKeyIdentifier.oid, m != null?m:(m = a("iaik.x509.extensions.SubjectKeyIdentifier")));
register(SubjectDirectoryAttributes.oid, o != null?o:(o = a("iaik.x509.extensions.SubjectDirectoryAttributes")));
register(AuthorityInfoAccess.oid, kb != null?kb:(kb = a("iaik.x509.extensions.AuthorityInfoAccess")));
register(SubjectInfoAccess.oid, n != null?n:(n = a("iaik.x509.extensions.SubjectInfoAccess")));
register(InhibitAnyPolicy.oid, z != null?z:(z = a("iaik.x509.extensions.InhibitAnyPolicy")));
register(FreshestCRL.oid, bb != null?bb:(bb = a("iaik.x509.extensions.FreshestCRL")));
register(CRLNumber.oid, gb != null?gb:(gb = a("iaik.x509.extensions.CRLNumber")));
register(DeltaCRLIndicator.oid, db != null?db:(db = a("iaik.x509.extensions.DeltaCRLIndicator")));
register(IssuingDistributionPoint.oid, w != null?w:(w = a("iaik.x509.extensions.IssuingDistributionPoint")));
register(ReasonCode.oid, q != null?q:(q = a("iaik.x509.extensions.ReasonCode")));
register(HoldInstructionCode.oid, ab != null?ab:(ab = a("iaik.x509.extensions.HoldInstructionCode")));
register(InvalidityDate.oid, y != null?y:(y = a("iaik.x509.extensions.InvalidityDate")));
register(CertificateIssuer.oid, fb != null?fb:(fb = a("iaik.x509.extensions.CertificateIssuer")));
register(NetscapeBaseUrl.oid, l != null?l:(l = a("iaik.x509.extensions.netscape.NetscapeBaseUrl")));
register(NetscapeCaPolicyUrl.oid, k != null?k:(k = a("iaik.x509.extensions.netscape.NetscapeCaPolicyUrl")));
register(NetscapeCaRevocationUrl.oid, j != null?j:(j = a("iaik.x509.extensions.netscape.NetscapeCaRevocationUrl")));
register(NetscapeCertRenewalUrl.oid, i != null?i:(i = a("iaik.x509.extensions.netscape.NetscapeCertRenewalUrl")));
register(NetscapeCertType.oid, h != null?h:(h = a("iaik.x509.extensions.netscape.NetscapeCertType")));
register(NetscapeComment.oid, g != null?g:(g = a("iaik.x509.extensions.netscape.NetscapeComment")));
register(NetscapeRevocationUrl.oid, f != null?f:(f = a("iaik.x509.extensions.netscape.NetscapeRevocationUrl")));
register(NetscapeSSLServerName.oid, e != null?e:(e = a("iaik.x509.extensions.netscape.NetscapeSSLServerName")));
register(BiometricInfo.oid, c != null?c:(c = a("iaik.x509.extensions.qualified.BiometricInfo")));
register(QCStatements.oid, a != null?a:(a = a("iaik.x509.extensions.qualified.QCStatements")));
register(NoCheck.oid, d != null?d:(d = a("iaik.x509.extensions.ocsp.NoCheck")));
Util.toString((byte[])null, -1, 1);
}
}