+package org.argeo.security.crypto;\r
+\r
+import java.security.Provider;\r
+import java.security.Security;\r
+import java.util.Iterator;\r
+\r
+import org.bouncycastle.jce.provider.BouncyCastleProvider;\r
+\r
+/**\r
+ * List the available capabilities for ciphers, key agreement, macs, message\r
+ * digests, signatures and other objects in the BC provider.\r
+ */\r
+public class ListBCCapabilities {\r
+ public static void main(String[] args) {\r
+ Security.addProvider(new BouncyCastleProvider());\r
+\r
+ Provider[] providers = Security.getProviders();\r
+ for (Provider provider : providers) {\r
+ System.out.println(provider.getName());\r
+ System.out.println(" " + provider.getVersion());\r
+ System.out.println(" " + provider.getInfo());\r
+ }\r
+ Provider provider = Security.getProvider("BC");\r
+ // Provider provider = Security.getProvider(null);\r
+\r
+ Iterator it = provider.keySet().iterator();\r
+\r
+ while (it.hasNext()) {\r
+ String entry = (String) it.next();\r
+\r
+ // this indicates the entry refers to another entry\r
+\r
+ if (entry.startsWith("Alg.Alias.")) {\r
+ entry = entry.substring("Alg.Alias.".length());\r
+ }\r
+\r
+ String factoryClass = entry.substring(0, entry.indexOf('.'));\r
+ String name = entry.substring(factoryClass.length() + 1);\r
+\r
+ System.out.println(factoryClass + ": " + name);\r
+ }\r
+ }\r
+}\r