summaryrefslogtreecommitdiffstats
path: root/base/common/examples/java
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2017-02-16 06:09:15 +0100
committerEndi S. Dewata <edewata@redhat.com>2017-02-16 23:50:50 +0100
commit3f58c06aa938f007688fd4992508fff4076e6406 (patch)
treeef15ded6213bafcfc8726a92db71813ed645b45b /base/common/examples/java
parentab3737e6c8367e691c7deda33b1ff8ed9cc5c408 (diff)
downloadpki-3f58c06aa938f007688fd4992508fff4076e6406.tar.gz
pki-3f58c06aa938f007688fd4992508fff4076e6406.tar.xz
pki-3f58c06aa938f007688fd4992508fff4076e6406.zip
Added CAClientExample.
A sample program has been added to show how to use CAClient. https://fedorahosted.org/pki/ticket/2584
Diffstat (limited to 'base/common/examples/java')
-rw-r--r--base/common/examples/java/CAClientExample.java86
1 files changed, 86 insertions, 0 deletions
diff --git a/base/common/examples/java/CAClientExample.java b/base/common/examples/java/CAClientExample.java
new file mode 100644
index 000000000..38d11637d
--- /dev/null
+++ b/base/common/examples/java/CAClientExample.java
@@ -0,0 +1,86 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2017 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+
+import java.io.File;
+import java.net.InetAddress;
+
+import org.mozilla.jss.CryptoManager;
+import org.mozilla.jss.crypto.CryptoToken;
+import org.mozilla.jss.util.Password;
+
+import com.netscape.certsrv.account.AccountInfo;
+import com.netscape.certsrv.ca.CAClient;
+import com.netscape.certsrv.client.ClientConfig;
+import com.netscape.certsrv.client.PKIClient;
+
+/**
+ * First, create an NSS database:
+ * $ pki -c Secret.123 client-init
+ *
+ * Then import CA admin certificate and key from PKCS #12 file:
+ * $ pki -c Secret.123 client-cert-import --pkcs12 &lt;file&gt; --pkcs12-password &lt;password&gt;
+ *
+ * To compile the program:
+ * $ javac -cp "/usr/lib/java/jss4.jar:../../lib/*" CAClientExample.java
+ *
+ * To run the program:
+ * $ java -cp "../../lib/*:." CAClientExample
+ */
+public class CAClientExample {
+
+ public static void main(String args[]) throws Exception {
+
+ String home = System.getProperty("user.home");
+
+ String nssDatabasePath = home + File.separator + ".dogtag" + File.separator + "nssdb";
+ String nssDatabasePassword = "Secret.123";
+
+ String protocol = "https";
+ String hostname = InetAddress.getLocalHost().getHostName();
+ int port = 8443;
+
+ String nickname = "caadmin";
+
+ CryptoManager.initialize(nssDatabasePath);
+
+ CryptoManager manager = CryptoManager.getInstance();
+ CryptoToken token = manager.getInternalKeyStorageToken();
+ Password password = new Password(nssDatabasePassword.toCharArray());
+ token.login(password);
+
+ ClientConfig config = new ClientConfig();
+ config.setServerURL(protocol, hostname, port);
+ config.setCertNickname(nickname);
+
+ PKIClient client = new PKIClient(config);
+ CAClient caClient = new CAClient(client);
+
+ AccountInfo accountInfo = caClient.login();
+
+ System.out.println("User ID: " + accountInfo.getID());
+ System.out.println("Full name: " + accountInfo.getFullName());
+ System.out.println();
+ System.out.println("Roles:");
+
+ for (String role : accountInfo.getRoles()) {
+ System.out.println(" - " + role);
+ }
+
+ caClient.logout();
+ }
+}