home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / security / Security.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  7.0 KB  |  293 lines

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