ListAlgorithmsBC.java Source code

Java tutorial

Introduction

Here is the source code for ListAlgorithmsBC.java

Source

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);
    }
}