Information

0
Story Points

Technologies

Decompiled Java File
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);
   }
}
Page generated: Oct 19, 2017 2:35:08 PM