Ejemplo n.º 1
0
  public String getSecurityProviders() {
    StringBuilder sb = new StringBuilder();
    Provider[] p = Security.getProviders();

    for (Provider provider : p) {
      sb.append(provider.getName())
          .append("   ")
          .append(provider.getVersion())
          .append("   ")
          .append(provider.getInfo())
          .append("<br>");
    }

    Set<String> s = Security.getAlgorithms("MessageDigest");
    for (String string : s) {
      sb.append(string).append("   ");
    }

    sb.append(Integer.toBinaryString(7))
        .append("   ")
        .append(Integer.toOctalString(15))
        .append("   ")
        .append(Integer.toHexString(17));

    return sb.toString();
  }
Ejemplo n.º 2
0
 private static void checkProviderInfoEntries(Provider p) throws Exception {
   String value = (String) p.get("Provider.id name");
   if (!SampleProvider.NAME.equalsIgnoreCase(value) || !p.getName().equalsIgnoreCase(value)) {
     throw new Exception("Test Failed: incorrect name!");
   }
   value = (String) p.get("Provider.id info");
   if (!SampleProvider.INFO.equalsIgnoreCase(value) || !p.getInfo().equalsIgnoreCase(value)) {
     throw new Exception("Test Failed: incorrect info!");
   }
   value = (String) p.get("Provider.id className");
   if (!p.getClass().getName().equalsIgnoreCase(value)) {
     throw new Exception("Test Failed: incorrect className!");
   }
   double dvalue = Double.parseDouble((String) p.get("Provider.id version"));
   if ((SampleProvider.VERSION != dvalue) || p.getVersion() != dvalue) {
     throw new Exception("Test Failed: incorrect version!");
   }
   System.out.println("Test Passed");
 }
Ejemplo n.º 3
0
  /**
   * Makes sure all provider properties either point to a class implementation that exists or are
   * aliases to known algorithms.
   */
  public void test_Provider_Properties() throws Exception {
    /*
     * A useful reference on Provider properties
     * <a href="http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/HowToImplAProvider.html>
     * How to Implement a Provider in the Java &trade; Cryptography Architecture
     * </a>
     */

    Provider[] providers = Security.getProviders();
    for (Provider provider : providers) {
      // check Provider.id proprieties
      assertEquals(provider.getName(), provider.get("Provider.id name"));
      assertEquals(String.valueOf(provider.getVersion()), provider.get("Provider.id version"));
      assertEquals(provider.getInfo(), provider.get("Provider.id info"));
      assertEquals(provider.getClass().getName(), provider.get("Provider.id className"));

      // build map of all known aliases and implementations
      Map<String, String> aliases = new HashMap<String, String>();
      Map<String, String> implementations = new HashMap<String, String>();
      for (Entry<Object, Object> entry : provider.entrySet()) {
        Object k = entry.getKey();
        Object v = entry.getValue();
        assertEquals(String.class, k.getClass());
        assertEquals(String.class, v.getClass());
        String key = (String) k;
        String value = (String) v;

        // skip Provider.id keys, we check well known ones values above
        if (key.startsWith("Provider.id ")) {
          continue;
        }

        // skip property settings such as: "Signature.SHA1withDSA ImplementedIn" "Software"
        if (key.indexOf(' ') != -1) {
          continue;
        }

        Matcher m = alias.matcher(key);
        if (m.find()) {
          String type = m.group(1);
          aliases.put(key, type + "." + value);
        } else {
          implementations.put(key, value);
        }
      }

      // verify implementation classes are available
      for (Entry<String, String> entry : implementations.entrySet()) {
        String typeAndAlgorithm = entry.getKey();
        String className = entry.getValue();
        try {
          assertNotNull(Class.forName(className, true, provider.getClass().getClassLoader()));
        } catch (ClassNotFoundException e) {
          // Sun forgot their own class
          if (!className.equals("sun.security.pkcs11.P11MAC")) {
            fail("Could not find class " + className + " for " + typeAndAlgorithm);
          }
        }
      }

      // make sure all aliases point to some known implementation
      for (Entry<String, String> entry : aliases.entrySet()) {
        String alias = entry.getKey();
        String actual = entry.getValue();
        assertTrue(
            "Could not find implementation " + actual + " for alias " + alias,
            implementations.containsKey(actual));
      }
    }
  }
Ejemplo n.º 4
0
  public static void main(String[] args) throws Exception {

    // Dynamically register the SunMSCAPI provider
    Security.addProvider(new sun.security.mscapi.SunMSCAPI());

    Provider p = Security.getProvider("SunMSCAPI");

    System.out.println("SunMSCAPI provider classname is " + p.getClass().getName());
    System.out.println("SunMSCAPI provider name is " + p.getName());
    System.out.println("SunMSCAPI provider version # is " + p.getVersion());
    System.out.println("SunMSCAPI provider info is " + p.getInfo());

    /*
     * Secure Random
     */
    SecureRandom random = SecureRandom.getInstance("Windows-PRNG", p);
    System.out.println("    Windows-PRNG is implemented by: " + random.getClass().getName());

    /*
     * Key Store
     */
    KeyStore keystore = KeyStore.getInstance("Windows-MY", p);
    System.out.println("    Windows-MY is implemented by: " + keystore.getClass().getName());

    keystore = KeyStore.getInstance("Windows-ROOT", p);
    System.out.println("    Windows-ROOT is implemented by: " + keystore.getClass().getName());

    /*
     * Signature
     */
    Signature signature = Signature.getInstance("SHA1withRSA", p);
    System.out.println("    SHA1withRSA is implemented by: " + signature.getClass().getName());

    signature = Signature.getInstance("MD5withRSA", p);
    System.out.println("    MD5withRSA is implemented by: " + signature.getClass().getName());

    signature = Signature.getInstance("MD2withRSA", p);
    System.out.println("    MD2withRSA is implemented by: " + signature.getClass().getName());

    /*
     * Key Pair Generator
     */
    KeyPairGenerator keypairGenerator = KeyPairGenerator.getInstance("RSA", p);
    System.out.println("    RSA is implemented by: " + keypairGenerator.getClass().getName());

    /*
     * Cipher
     */
    Cipher cipher = null;

    try {
      cipher = Cipher.getInstance("RSA", p);
      System.out.println("    RSA is implemented by: " + cipher.getClass().getName());

      cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", p);
      System.out.println(
          "    RSA/ECB/PKCS1Padding is implemented by: " + cipher.getClass().getName());

    } catch (GeneralSecurityException e) {
      System.out.println("Cipher not supported by provider, skipping...");
    }
  }