home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / java / security / Security.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  6.9 KB  |  289 lines

  1. package java.security;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.util.Enumeration;
  7. import java.util.Properties;
  8. import java.util.Vector;
  9.  
  10. public final class Security {
  11.    static boolean debug;
  12.    static boolean error = true;
  13.    private static Properties props;
  14.    private static Properties propCache;
  15.    private static Vector providers;
  16.  
  17.    private static void initialize() {
  18.       props = new Properties();
  19.       propCache = new Properties();
  20.       providers = new Vector();
  21.       File var0 = securityPropFile("java.security");
  22.       if (!var0.exists()) {
  23.          System.err.println("security properties not found. using defaults.");
  24.          initializeStatic();
  25.       } else {
  26.          try {
  27.             FileInputStream var1 = new FileInputStream(var0);
  28.             props.load(var1);
  29.          } catch (IOException var2) {
  30.             error("could not load security properties file from " + var0 + ". using defaults.");
  31.             initializeStatic();
  32.          }
  33.       }
  34.  
  35.       loadProviders();
  36.    }
  37.  
  38.    private static void initializeStatic() {
  39.       props.put("security.provider.1", "sun.security.provider.Sun");
  40.       props.put("system.scope", "sun.security.provider.IdentityDatabase");
  41.    }
  42.  
  43.    private Security() {
  44.    }
  45.  
  46.    private static void loadProviders() {
  47.       int var0 = 1;
  48.  
  49.       while(true) {
  50.          String var1 = props.getProperty("security.provider." + var0++);
  51.          if (var1 == null) {
  52.             return;
  53.          }
  54.  
  55.          Provider var2 = Provider.loadProvider(var1);
  56.          if (var2 != null) {
  57.             providers.addElement(var2);
  58.          }
  59.       }
  60.    }
  61.  
  62.    static File securityPropFile(String var0) {
  63.       String var1 = File.separator;
  64.       return new File(System.getProperty("java.home") + var1 + "lib" + var1 + "security" + var1 + var0);
  65.    }
  66.  
  67.    static String getProviderProperty(String var0) {
  68.       String var1 = propCache.getProperty(var0);
  69.       if (var1 != null) {
  70.          return var1;
  71.       } else {
  72.          for(int var2 = 0; var2 < providers.size(); ++var2) {
  73.             Provider var3 = (Provider)providers.elementAt(var2);
  74.             var1 = ((Properties)var3).getProperty(var0);
  75.             if (var1 != null) {
  76.                propCache.put(var0, var1);
  77.                return var1;
  78.             }
  79.          }
  80.  
  81.          return var1;
  82.       }
  83.    }
  84.  
  85.    static String getStandardName(String var0, String var1) {
  86.       return getProviderProperty("Alg.Alias." + var1 + "." + var0);
  87.    }
  88.  
  89.    public static String getAlgorithmProperty(String var0, String var1) {
  90.       return getProviderProperty("Alg." + var1 + "." + var0);
  91.    }
  92.  
  93.    static String getPublicKeyClassName(String var0, String var1) {
  94.       String var2 = getStandardName(var0, "Key");
  95.       if (var2 == null) {
  96.          var2 = var0;
  97.       }
  98.  
  99.       String var3 = "PublicKey." + var1 + "." + var2;
  100.       return getProviderProperty(var3);
  101.    }
  102.  
  103.    static String getPrivateKeyClassName(String var0, String var1) {
  104.       String var2 = getStandardName(var0, "Key");
  105.       if (var2 == null) {
  106.          var2 = var0;
  107.       }
  108.  
  109.       return getProviderProperty("PrivateKey." + var1 + "." + var2);
  110.    }
  111.  
  112.    static String getEngineClassName(String var0, String var1) throws NoSuchAlgorithmException {
  113.       String var2 = getStandardName(var0, var1);
  114.       if (var2 == null) {
  115.          var2 = var0;
  116.       }
  117.  
  118.       providers.elements();
  119.       String var3 = getProviderProperty(var1 + "." + var2);
  120.       if (var3 != null) {
  121.          return var3;
  122.       } else {
  123.          throw new NoSuchAlgorithmException("algorithm " + var0 + " not available.");
  124.       }
  125.    }
  126.  
  127.    private static String getEngineClassName(String var0, String var1, String var2) throws NoSuchAlgorithmException, NoSuchProviderException {
  128.       if (var1 == null) {
  129.          return getEngineClassName(var0, var2);
  130.       } else {
  131.          String var3 = getStandardName(var0, var2);
  132.          if (var3 == null) {
  133.             var3 = var0;
  134.          }
  135.  
  136.          Provider var4 = getProvider(var1);
  137.          if (var4 == null) {
  138.             throw new NoSuchProviderException("no such provider: " + var1);
  139.          } else {
  140.             String var5 = ((Properties)var4).getProperty(var2 + "." + var3);
  141.             if (var5 == null) {
  142.                throw new NoSuchAlgorithmException("no such algorithm: " + var0 + " for provider " + var1);
  143.             } else {
  144.                return var5;
  145.             }
  146.          }
  147.       }
  148.    }
  149.  
  150.    public static int insertProviderAt(Provider var0, int var1) {
  151.       check();
  152.       Provider var2 = getProvider(var0.getName());
  153.       if (var2 != null) {
  154.          return -1;
  155.       } else {
  156.          --var1;
  157.          if (var1 < 0) {
  158.             var1 = 0;
  159.          }
  160.  
  161.          int var3 = providers.size();
  162.          if (var1 > var3) {
  163.             var1 = var3;
  164.          }
  165.  
  166.          providers.insertElementAt(var0, var1);
  167.          propCache = new Properties();
  168.          return var1;
  169.       }
  170.    }
  171.  
  172.    public static int addProvider(Provider var0) {
  173.       return insertProviderAt(var0, providers.size() + 1);
  174.    }
  175.  
  176.    public static void removeProvider(String var0) {
  177.       check();
  178.       Provider var1 = getProvider(var0);
  179.       if (var1 != null) {
  180.          providers.removeElement(var1);
  181.       }
  182.  
  183.    }
  184.  
  185.    public static Provider[] getProviders() {
  186.       check();
  187.       Provider[] var0 = new Provider[providers.size()];
  188.       providers.copyInto(var0);
  189.       return var0;
  190.    }
  191.  
  192.    public static Provider getProvider(String var0) {
  193.       check();
  194.       Enumeration var1 = providers.elements();
  195.  
  196.       while(var1.hasMoreElements()) {
  197.          Provider var2 = (Provider)var1.nextElement();
  198.          if (var2.getName().equals(var0)) {
  199.             return var2;
  200.          }
  201.       }
  202.  
  203.       return null;
  204.    }
  205.  
  206.    private static boolean checkSuperclass(Class var0, Class var1) {
  207.       while(!var0.equals(var1)) {
  208.          var0 = var0.getSuperclass();
  209.          if (var0 == null) {
  210.             return false;
  211.          }
  212.       }
  213.  
  214.       return true;
  215.    }
  216.  
  217.    static Object getImpl(String var0, String var1, String var2) throws NoSuchAlgorithmException, NoSuchProviderException {
  218.       String var3 = getEngineClassName(var0, var2, var1);
  219.  
  220.       try {
  221.          Class var4 = Class.forName("java.security." + var1);
  222.          Class var5 = Class.forName(var3);
  223.          if (checkSuperclass(var5, var4)) {
  224.             return var5.newInstance();
  225.          } else {
  226.             throw new NoSuchAlgorithmException("class configured for " + var1 + ": " + var3 + " not a " + var1);
  227.          }
  228.       } catch (ClassNotFoundException var6) {
  229.          throw new NoSuchAlgorithmException("class configured for " + var1 + "(provider: " + var2 + ")" + "cannot be found.\n" + ((Throwable)var6).getMessage());
  230.       } catch (InstantiationException var7) {
  231.          throw new NoSuchAlgorithmException("class " + var3 + " configured for " + var1 + "(provider: " + var2 + ") cannot be instantiated.\n" + ((Throwable)var7).getMessage());
  232.       } catch (IllegalAccessException var8) {
  233.          throw new NoSuchAlgorithmException("class " + var3 + " configured for " + var1 + "(provider: " + var2 + ") cannot be accessed.\n" + ((Throwable)var8).getMessage());
  234.       }
  235.    }
  236.  
  237.    public static String getProperty(String var0) {
  238.       check();
  239.       return props.getProperty(var0);
  240.    }
  241.  
  242.    public static void setProperty(String var0, String var1) {
  243.       check();
  244.       props.put(var0, var1);
  245.    }
  246.  
  247.    private static void check() {
  248.       SecurityManager var0 = System.getSecurityManager();
  249.       if (var0 != null) {
  250.          var0.checkSecurityAccess("java");
  251.       }
  252.  
  253.    }
  254.  
  255.    static void error(String var0) {
  256.       if (debug) {
  257.          System.err.println(var0);
  258.       }
  259.  
  260.    }
  261.  
  262.    static void error(String var0, Throwable var1) {
  263.       error(var0);
  264.       if (debug) {
  265.          var1.printStackTrace();
  266.       }
  267.  
  268.    }
  269.  
  270.    static void debug(String var0) {
  271.       if (debug) {
  272.          System.err.println(var0);
  273.       }
  274.  
  275.    }
  276.  
  277.    static void debug(String var0, Throwable var1) {
  278.       if (debug) {
  279.          var1.printStackTrace();
  280.          System.err.println(var0);
  281.       }
  282.  
  283.    }
  284.  
  285.    static {
  286.       initialize();
  287.    }
  288. }
  289.