Skip to content

Instantly share code, notes, and snippets.

@xuyang2
Created July 16, 2014 04:33
Show Gist options
  • Save xuyang2/110d77dcce2216561440 to your computer and use it in GitHub Desktop.
Save xuyang2/110d77dcce2216561440 to your computer and use it in GitHub Desktop.
/**
* @see http://www.java2s.com/Code/Java/Security/JCEalgorithmsinBrowser.htm
*/
import java.awt.Dimension;
import java.security.Provider;
import java.security.Security;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;
public class ListAlgorithmsBC extends JFrame {
private void getNodes(DefaultMutableTreeNode providerNode, Provider provider, Set<Provider.Service> used, String title, String target) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(title);
for (Provider.Service service : provider.getServices()) {
if (!used.contains(service) && target.equalsIgnoreCase(service.getType())) {
used.add(service);
DefaultMutableTreeNode algNode = new DefaultMutableTreeNode(service.getAlgorithm());
node.add(algNode);
algNode.add(new DefaultMutableTreeNode("class : " + service.getClassName()));
}
}
if (node.getChildCount() != 0) {
providerNode.add(node);
}
}
private ListAlgorithmsBC() {
super("JCE Algorithms");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Providers");
DefaultTreeModel treeModel = new DefaultTreeModel(root);
for (Provider provider : java.security.Security.getProviders()) {
DefaultMutableTreeNode providerNode = new DefaultMutableTreeNode(provider);
root.add(providerNode);
Set<Provider.Service> used = new HashSet<Provider.Service>();
getNodes(providerNode, provider, used, "Cipher", "cipher");
getNodes(providerNode, provider, used, "Key Agreement", "keyagreement");
getNodes(providerNode, provider, used, "Key Generator", "keygenerator");
getNodes(providerNode, provider, used, "Key Pair Generator", "keypairgenerator");
getNodes(providerNode, provider, used, "Key Factory", "keyfactory");
getNodes(providerNode, provider, used, "Secret Key Factory", "secretkeyfactory");
getNodes(providerNode, provider, used, "Mac", "mac");
getNodes(providerNode, provider, used, "Message Digest", "messagedigest");
getNodes(providerNode, provider, used, "Signature", "signature");
getNodes(providerNode, provider, used, "Algorithm Paramater", "algorithmparameters");
getNodes(providerNode, provider, used, "Algorithm Paramater Generator", "algorithmparametergenerator");
getNodes(providerNode, provider, used, "Key Store", "keystore");
getNodes(providerNode, provider, used, "Secure Random", "securerandom");
getNodes(providerNode, provider, used, "Certificate Factory", "certificatefactory");
getNodes(providerNode, provider, used, "Certificate Store", "certstore");
getNodes(providerNode, provider, used, "Key Manager Factory", "KeyManagerFactory");
getNodes(providerNode, provider, used, "Trust Manager Factory", "TrustManagerFactory");
getNodes(providerNode, provider, used, "SSL Context", "SSLContext");
getNodes(providerNode, provider, used, "Sasl Server Factory", "SaslServerFactory");
getNodes(providerNode, provider, used, "Sasl Client Factory", "SaslClientFactory");
{
DefaultMutableTreeNode node = new DefaultMutableTreeNode("Other");
for (Provider.Service service : provider.getServices()) {
if (!used.contains(service)) {
DefaultMutableTreeNode serviceNode = new DefaultMutableTreeNode(service.getType() + " : " + service.getAlgorithm());
node.add(serviceNode);
serviceNode.add(new DefaultMutableTreeNode("class : " + service.getClassName()));
}
}
if (node.getChildCount() != 0)
providerNode.add(node);
}
}
JTree tree = new JTree(treeModel);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setEditable(false);
JScrollPane pane = new JScrollPane(tree);
pane.setPreferredSize(new Dimension(200, 200));
getContentPane().add(pane);
pack();
}
public static void main(String[] args) {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
new ListAlgorithmsBC().setVisible(true);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment