diff options
author | Endi S. Dewata <edewata@redhat.com> | 2017-06-15 04:00:52 +0200 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2017-06-17 00:37:45 +0200 |
commit | 8803f28aca4d0b4b55825d13c29772b87aa0de92 (patch) | |
tree | 6a0f4208eb34e88eb0d4fa97ba0dca33c70306be /base/ca | |
parent | d2e247798a36225880ef6050716cc7576fe2ad7f (diff) | |
download | pki-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.java | 31 |
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); } |