diff options
author | Endi S. Dewata <edewata@redhat.com> | 2015-06-13 11:43:40 -0400 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2015-06-16 17:51:27 -0400 |
commit | ff4d4f19cad6d2d99003cfb0d7219b82307f15fa (patch) | |
tree | b9dd6f523aa00d8a2ff8f7b08b0fff7cca783b6a /base/java-tools | |
parent | f5001994ab3947581426c94051bd4c0a88fb6697 (diff) | |
download | pki-ff4d4f19cad6d2d99003cfb0d7219b82307f15fa.tar.gz pki-ff4d4f19cad6d2d99003cfb0d7219b82307f15fa.tar.xz pki-ff4d4f19cad6d2d99003cfb0d7219b82307f15fa.zip |
CRMFPopClient improvements.
The CRMFPopClient has been modified to use the HttpClient library
to connect to the server, to show the HTTP status code if an error
occurs, and to show the NSS database directory in verbose mode.
Diffstat (limited to 'base/java-tools')
-rw-r--r-- | base/java-tools/src/com/netscape/cmstools/CRMFPopClient.java | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/base/java-tools/src/com/netscape/cmstools/CRMFPopClient.java b/base/java-tools/src/com/netscape/cmstools/CRMFPopClient.java index 81b9c4370..76d8f51d1 100644 --- a/base/java-tools/src/com/netscape/cmstools/CRMFPopClient.java +++ b/base/java-tools/src/com/netscape/cmstools/CRMFPopClient.java @@ -21,12 +21,9 @@ import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileWriter; -import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringWriter; -import java.net.URL; -import java.net.URLConnection; import java.net.URLEncoder; import java.security.KeyPair; import java.security.MessageDigest; @@ -40,6 +37,11 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; import org.apache.commons.io.FileUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.util.EntityUtils; import org.mozilla.jss.CryptoManager; import org.mozilla.jss.asn1.ASN1Util; import org.mozilla.jss.asn1.BIT_STRING; @@ -382,7 +384,7 @@ public class CRMFPopClient { } try { - if (verbose) System.out.println("Initializing security database"); + if (verbose) System.out.println("Initializing security database: " + databaseDir); CryptoManager.initialize(databaseDir); CryptoManager manager = CryptoManager.getInstance(); @@ -717,7 +719,7 @@ public class CRMFPopClient { String profileID, String requestor) throws Exception { - String s = "http://" + hostPort + "/ca/ee/ca/profileSubmit" + String url = "http://" + hostPort + "/ca/ee/ca/profileSubmit" + "?cert_request_type=crmf" + "&cert_request=" + URLEncoder.encode(request, "UTF-8") + "&renewal=false" @@ -726,20 +728,37 @@ public class CRMFPopClient { + "&SubId=profile"; if (username != null) { - s += "&uid=" + URLEncoder.encode(username, "UTF-8"); - s += "&sn_uid=" + URLEncoder.encode(username, "UTF-8"); + url += "&uid=" + URLEncoder.encode(username, "UTF-8"); + url += "&sn_uid=" + URLEncoder.encode(username, "UTF-8"); } if (requestor != null) { - s += "&requestor_name=" + URLEncoder.encode(requestor, "UTF-8"); + url += "&requestor_name=" + URLEncoder.encode(requestor, "UTF-8"); } - URL url = new URL(s); if (verbose) System.out.println("Opening " + url); - URLConnection conn = url.openConnection(); - InputStream is = conn.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + DefaultHttpClient client = new DefaultHttpClient(); + HttpGet method = new HttpGet(url); + try { + HttpResponse response = client.execute(method); + + if (response.getStatusLine().getStatusCode() != 200) { + throw new Exception("Error: " + response.getStatusLine()); + } + + processResponse(response); + + } finally { + method.releaseConnection(); + } + } + + public void processResponse(HttpResponse response) throws Exception { + + HttpEntity entity = response.getEntity(); + + BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); if (verbose) System.out.println("--------------------"); String line = null; @@ -794,6 +813,8 @@ public class CRMFPopClient { if (reason != null) { System.out.println("Reason: " + reason); } + + EntityUtils.consume(entity); } public boolean isEncoded(String elementValue) { |