summaryrefslogtreecommitdiffstats
path: root/base/ca
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2017-06-15 04:00:52 +0200
committerEndi S. Dewata <edewata@redhat.com>2017-06-17 00:37:45 +0200
commit8803f28aca4d0b4b55825d13c29772b87aa0de92 (patch)
tree6a0f4208eb34e88eb0d4fa97ba0dca33c70306be /base/ca
parentd2e247798a36225880ef6050716cc7576fe2ad7f (diff)
downloadpki-8803f28aca4d0b4b55825d13c29772b87aa0de92.tar.gz
pki-8803f28aca4d0b4b55825d13c29772b87aa0de92.tar.xz
pki-8803f28aca4d0b4b55825d13c29772b87aa0de92.zip
Added search filter for pki ca-authority-find.
The pki ca-authority-find CLI has been modified to provide search filter based on the authority ID, parent ID, authority DN, and issuer DN. https://pagure.io/dogtagpki/issue/2652 Change-Id: I563a0b93eb7a00ae4771069812455ecc552f407c
Diffstat (limited to 'base/ca')
-rw-r--r--base/ca/src/org/dogtagpki/server/ca/rest/AuthorityService.java31
1 files changed, 28 insertions, 3 deletions
diff --git a/base/ca/src/org/dogtagpki/server/ca/rest/AuthorityService.java b/base/ca/src/org/dogtagpki/server/ca/rest/AuthorityService.java
index 7ba95963a..8502f44ca 100644
--- a/base/ca/src/org/dogtagpki/server/ca/rest/AuthorityService.java
+++ b/base/ca/src/org/dogtagpki/server/ca/rest/AuthorityService.java
@@ -60,6 +60,8 @@ import com.netscape.certsrv.logging.ILogger;
import com.netscape.cms.servlet.base.SubsystemService;
import com.netscape.cmsutil.util.Utils;
+import netscape.security.x509.X500Name;
+
/**
* @author ftweedal
*/
@@ -72,13 +74,36 @@ public class AuthorityService extends SubsystemService implements AuthorityResou
}
@Override
- public Response listCAs() {
+ public Response findCAs(String id, String parentID, String dn, String issuerDN) throws Exception {
+
+ X500Name x500dn = dn == null ? null : new X500Name(dn);
+ X500Name x500issuerDN = issuerDN == null ? null : new X500Name(issuerDN);
+
List<AuthorityData> results = new ArrayList<>();
- for (ICertificateAuthority ca : hostCA.getCAs())
- results.add(readAuthorityData(ca));
+
+ for (ICertificateAuthority ca : hostCA.getCAs()) {
+
+ AuthorityData authority = readAuthorityData(ca);
+
+ if (id != null && !id.equalsIgnoreCase(authority.getID())) continue;
+ if (parentID != null && !parentID.equalsIgnoreCase(authority.getParentID())) continue;
+
+ if (x500dn != null) {
+ X500Name caDN = new X500Name(authority.getDN());
+ if (!x500dn.equals(caDN)) continue;
+ }
+
+ if (x500issuerDN != null) {
+ X500Name caIssuerDN = new X500Name(authority.getIssuerDN());
+ if (!x500issuerDN.equals(caIssuerDN)) continue;
+ }
+
+ results.add(authority);
+ }
GenericEntity<List<AuthorityData>> entity =
new GenericEntity<List<AuthorityData>>(results) {};
+
return createOKResponse(entity);
}