Skip to content

Commit

Permalink
Move ClientCertValidateCLI.verifySystemCertByNickname() to CertUtil
Browse files Browse the repository at this point in the history
  • Loading branch information
edewata committed May 8, 2023
1 parent 4aef116 commit 2f5c67c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 30 deletions.
21 changes: 21 additions & 0 deletions base/common/src/main/java/org/dogtag/util/cert/CertUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -388,4 +388,25 @@ public static Set<CertificateUsage> getCertificateUsages(String nickname) throws

return usages;
}

/**
* Verify certificate usage.
*/
public static void verifyCertificateUsage(String nickname, String certUsage) throws Exception {

CryptoManager cm = CryptoManager.getInstance();
CertificateUsage cu = CertUtil.toCertificateUsage(certUsage);

if (cu.getUsage() == CertificateUsage.CheckAllUsages.getUsage()) {
// check all possible usages
int currentUsages = cm.isCertValid(nickname, true);
if (currentUsages == CertificateUsage.basicCertificateUsages) {
throw new Exception("Certificate is unusable");
}
return;
}

// check the specified usage
cm.verifyCertificate(nickname, true, cu);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

package com.netscape.cmstools.client;

import java.security.cert.CertificateException;
import java.util.Set;

import org.apache.commons.cli.CommandLine;
Expand All @@ -27,7 +26,6 @@
import org.dogtag.util.cert.CertUtil;
import org.dogtagpki.cli.CommandCLI;
import org.mozilla.jss.CertificateUsage;
import org.mozilla.jss.CryptoManager;

import com.netscape.cmstools.cli.MainCLI;

Expand Down Expand Up @@ -84,36 +82,13 @@ public void execute(CommandLine cmd) throws Exception {
return;
}

boolean isValid = verifySystemCertByNickname(nickname, certusage);

if (isValid) {
System.exit(0);
} else {
System.exit(1);
}
}

public boolean verifySystemCertByNickname(String nickname, String certusage) throws Exception {
CertificateUsage cu = CertUtil.toCertificateUsage(certusage);
CryptoManager cm = CryptoManager.getInstance();
if (cu.getUsage() == CertificateUsage.CheckAllUsages.getUsage()) {
// check all possible usages
int ccu = cm.isCertValid(nickname, true);
if (ccu == CertificateUsage.basicCertificateUsages) {
/* cert is good for nothing */
System.out.println("Cert is good for nothing: " + nickname);
return false;
}
return true;
}
try {
cm.verifyCertificate(nickname, true, cu);
System.out.println("Valid certificate: " + nickname);
return true;
} catch (CertificateException e) {
// Invalid certificate: (<code>) <message>
CertUtil.verifyCertificateUsage(nickname, certusage);
System.out.println("Certificate is valid");

} catch (Exception e) {
System.out.println(e.getMessage());
return false;
System.exit(1);
}
}
}

0 comments on commit 2f5c67c

Please sign in to comment.