home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / security / UnresolvedPermission.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.7 KB  |  273 lines

  1. package java.security;
  2.  
  3. import java.io.ByteArrayInputStream;
  4. import java.io.IOException;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. import java.io.Serializable;
  8. import java.lang.reflect.Constructor;
  9. import java.security.cert.Certificate;
  10. import java.security.cert.CertificateEncodingException;
  11. import java.security.cert.CertificateException;
  12. import java.security.cert.CertificateFactory;
  13. import java.security.cert.X509Certificate;
  14. import java.util.ArrayList;
  15. import java.util.Hashtable;
  16.  
  17. public final class UnresolvedPermission extends Permission implements Serializable {
  18.    private String type;
  19.    private String name;
  20.    private String actions;
  21.    private transient Certificate[] certs;
  22.    private static final Class[] PARAMS;
  23.    // $FF: synthetic field
  24.    static Class class$java$lang$String;
  25.  
  26.    public UnresolvedPermission(String var1, String var2, String var3, Certificate[] var4) {
  27.       super(var1);
  28.       if (var1 == null) {
  29.          throw new NullPointerException("type can't be null");
  30.       } else {
  31.          this.type = var1;
  32.          this.name = var2;
  33.          this.actions = var3;
  34.          if (var4 != null) {
  35.             for(int var5 = 0; var5 < var4.length; ++var5) {
  36.                if (!(var4[var5] instanceof X509Certificate)) {
  37.                   this.certs = (Certificate[])var4.clone();
  38.                   break;
  39.                }
  40.             }
  41.  
  42.             if (this.certs == null) {
  43.                int var6 = 0;
  44.  
  45.                int var7;
  46.                for(var7 = 0; var6 < var4.length; ++var6) {
  47.                   ++var7;
  48.  
  49.                   while(var6 + 1 < var4.length && ((X509Certificate)var4[var6]).getIssuerDN().equals(((X509Certificate)var4[var6 + 1]).getSubjectDN())) {
  50.                      ++var6;
  51.                   }
  52.                }
  53.  
  54.                if (var7 == var4.length) {
  55.                   this.certs = (Certificate[])var4.clone();
  56.                }
  57.  
  58.                if (this.certs == null) {
  59.                   ArrayList var8 = new ArrayList();
  60.  
  61.                   for(int var9 = 0; var9 < var4.length; ++var9) {
  62.                      var8.add(var4[var9]);
  63.  
  64.                      while(var9 + 1 < var4.length && ((X509Certificate)var4[var9]).getIssuerDN().equals(((X509Certificate)var4[var9 + 1]).getSubjectDN())) {
  65.                         ++var9;
  66.                      }
  67.                   }
  68.  
  69.                   this.certs = new Certificate[var8.size()];
  70.                   var8.toArray(this.certs);
  71.                }
  72.             }
  73.          }
  74.  
  75.       }
  76.    }
  77.  
  78.    Permission resolve(Permission var1, Certificate[] var2) {
  79.       if (this.certs != null) {
  80.          if (var2 == null) {
  81.             return null;
  82.          }
  83.  
  84.          for(int var4 = 0; var4 < this.certs.length; ++var4) {
  85.             boolean var3 = false;
  86.  
  87.             for(int var5 = 0; var5 < var2.length; ++var5) {
  88.                if (this.certs[var4].equals(var2[var5])) {
  89.                   var3 = true;
  90.                   break;
  91.                }
  92.             }
  93.  
  94.             if (!var3) {
  95.                return null;
  96.             }
  97.          }
  98.       }
  99.  
  100.       try {
  101.          Class var7 = var1.getClass();
  102.          Constructor var8 = var7.getConstructor(PARAMS);
  103.          return (Permission)var8.newInstance(this.name, this.actions);
  104.       } catch (Exception var6) {
  105.          return null;
  106.       }
  107.    }
  108.  
  109.    public boolean implies(Permission var1) {
  110.       return false;
  111.    }
  112.  
  113.    public boolean equals(Object var1) {
  114.       if (var1 == this) {
  115.          return true;
  116.       } else if (!(var1 instanceof UnresolvedPermission)) {
  117.          return false;
  118.       } else {
  119.          UnresolvedPermission var2 = (UnresolvedPermission)var1;
  120.          if (this.type.equals(var2.type) && this.name.equals(var2.name) && this.actions.equals(var2.actions)) {
  121.             if (this.certs.length != var2.certs.length) {
  122.                return false;
  123.             } else {
  124.                for(int var3 = 0; var3 < this.certs.length; ++var3) {
  125.                   boolean var5 = false;
  126.  
  127.                   for(int var4 = 0; var4 < var2.certs.length; ++var4) {
  128.                      if (this.certs[var3].equals(var2.certs[var4])) {
  129.                         var5 = true;
  130.                         break;
  131.                      }
  132.                   }
  133.  
  134.                   if (!var5) {
  135.                      return false;
  136.                   }
  137.                }
  138.  
  139.                for(int var6 = 0; var6 < var2.certs.length; ++var6) {
  140.                   boolean var8 = false;
  141.  
  142.                   for(int var7 = 0; var7 < this.certs.length; ++var7) {
  143.                      if (var2.certs[var6].equals(this.certs[var7])) {
  144.                         var8 = true;
  145.                         break;
  146.                      }
  147.                   }
  148.  
  149.                   if (!var8) {
  150.                      return false;
  151.                   }
  152.                }
  153.  
  154.                return true;
  155.             }
  156.          } else {
  157.             return false;
  158.          }
  159.       }
  160.    }
  161.  
  162.    public int hashCode() {
  163.       int var1 = this.type.hashCode();
  164.       if (this.name != null) {
  165.          var1 ^= this.name.hashCode();
  166.       }
  167.  
  168.       if (this.actions != null) {
  169.          var1 ^= this.actions.hashCode();
  170.       }
  171.  
  172.       return var1;
  173.    }
  174.  
  175.    public String getActions() {
  176.       return "";
  177.    }
  178.  
  179.    public String toString() {
  180.       return "(unresolved " + this.type + " " + this.name + " " + this.actions + ")";
  181.    }
  182.  
  183.    public PermissionCollection newPermissionCollection() {
  184.       return new UnresolvedPermissionCollection();
  185.    }
  186.  
  187.    private synchronized void writeObject(ObjectOutputStream var1) throws IOException {
  188.       var1.defaultWriteObject();
  189.       if (this.certs != null && this.certs.length != 0) {
  190.          var1.writeInt(this.certs.length);
  191.  
  192.          for(int var2 = 0; var2 < this.certs.length; ++var2) {
  193.             Certificate var3 = this.certs[var2];
  194.  
  195.             try {
  196.                var1.writeUTF(var3.getType());
  197.                byte[] var4 = var3.getEncoded();
  198.                var1.writeInt(var4.length);
  199.                var1.write(var4);
  200.             } catch (CertificateEncodingException var5) {
  201.                throw new IOException(((Throwable)var5).getMessage());
  202.             }
  203.          }
  204.       } else {
  205.          var1.writeInt(0);
  206.       }
  207.  
  208.    }
  209.  
  210.    private synchronized void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  211.       Hashtable var3 = null;
  212.       var1.defaultReadObject();
  213.       if (this.type == null) {
  214.          throw new NullPointerException("type can't be null");
  215.       } else {
  216.          int var4 = var1.readInt();
  217.          if (var4 > 0) {
  218.             var3 = new Hashtable(3);
  219.             this.certs = new Certificate[var4];
  220.          }
  221.  
  222.          for(int var5 = 0; var5 < var4; ++var5) {
  223.             String var6 = var1.readUTF();
  224.             CertificateFactory var2;
  225.             if (var3.containsKey(var6)) {
  226.                var2 = (CertificateFactory)var3.get(var6);
  227.             } else {
  228.                try {
  229.                   var2 = CertificateFactory.getInstance(var6);
  230.                } catch (CertificateException var12) {
  231.                   throw new ClassNotFoundException("Certificate factory for " + var6 + " not found");
  232.                }
  233.  
  234.                var3.put(var6, var2);
  235.             }
  236.  
  237.             Object var7 = null;
  238.  
  239.             try {
  240.                var13 = new byte[var1.readInt()];
  241.             } catch (OutOfMemoryError var11) {
  242.                throw new IOException("Certificate too big");
  243.             }
  244.  
  245.             var1.readFully(var13);
  246.             ByteArrayInputStream var8 = new ByteArrayInputStream(var13);
  247.  
  248.             try {
  249.                this.certs[var5] = var2.generateCertificate(var8);
  250.             } catch (CertificateException var10) {
  251.                throw new IOException(((Throwable)var10).getMessage());
  252.             }
  253.  
  254.             var8.close();
  255.          }
  256.  
  257.       }
  258.    }
  259.  
  260.    // $FF: synthetic method
  261.    static Class class$(String var0) {
  262.       try {
  263.          return Class.forName(var0);
  264.       } catch (ClassNotFoundException var2) {
  265.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  266.       }
  267.    }
  268.  
  269.    static {
  270.       PARAMS = new Class[]{class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String, class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String};
  271.    }
  272. }
  273.