home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2001 February / maximum-cd-2001-02.iso / PowerWare / Opera / Opera5_final_java.exe / OPERA.JAR / opera / CertificateHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-07-04  |  1.6 KB  |  74 lines

  1. package opera;
  2.  
  3. import java.security.CodeSource;
  4. import java.security.Principal;
  5. import java.security.cert.Certificate;
  6. import java.security.cert.CertificateEncodingException;
  7. import java.security.cert.X509Certificate;
  8.  
  9. class CertificateHandler {
  10.    private static native boolean acceptCertificateChain(CodeSource var0, String var1, byte[][] var2, int[] var3, int var4);
  11.  
  12.    protected static boolean checkCertificates(CodeSource var0) {
  13.       try {
  14.          Certificate[] var1 = var0.getCertificates();
  15.          if (var1.length == 0) {
  16.             return false;
  17.          } else {
  18.             int var2 = 0;
  19.  
  20.             for(int var3 = 0; var3 < var1.length; var2 = var3) {
  21.                int var4;
  22.                for(var4 = var2; var4 + 1 < var1.length && var1[var4] instanceof X509Certificate && var1[var4 + 1] instanceof X509Certificate && isIssuerOf((X509Certificate)var1[var4], (X509Certificate)var1[var4 + 1]); ++var4) {
  23.                }
  24.  
  25.                var3 = var4 + 1;
  26.                byte[][] var5 = makeChain(var1, var2, var3);
  27.                if (var5 != null) {
  28.                   int[] var6 = new int[var5.length];
  29.  
  30.                   for(int var7 = 0; var7 < var5.length; ++var7) {
  31.                      var6[var7] = var5[var7].length;
  32.                   }
  33.  
  34.                   synchronized(var0){}
  35.  
  36.                   try {
  37.                      if (acceptCertificateChain(var0, var0.getLocation().toString(), var5, var6, var5.length)) {
  38.                         boolean var8 = true;
  39.                         return var8;
  40.                      }
  41.                   } catch (Throwable var13) {
  42.                      throw var13;
  43.                   }
  44.                }
  45.             }
  46.  
  47.             return false;
  48.          }
  49.       } catch (CertificateEncodingException var14) {
  50.          return false;
  51.       }
  52.    }
  53.  
  54.    private static boolean isIssuerOf(X509Certificate var0, X509Certificate var1) {
  55.       Principal var2 = var0.getIssuerDN();
  56.       Principal var3 = var1.getSubjectDN();
  57.       return var2.equals(var3);
  58.    }
  59.  
  60.    private static byte[][] makeChain(Certificate[] var0, int var1, int var2) throws CertificateEncodingException {
  61.       if (var1 == var2) {
  62.          return null;
  63.       } else {
  64.          byte[][] var3 = new byte[var2 - var1][];
  65.  
  66.          for(int var4 = var1; var4 < var2; ++var4) {
  67.             var3[var4 - var1] = var0[var4].getEncoded();
  68.          }
  69.  
  70.          return var3;
  71.       }
  72.    }
  73. }
  74.