summaryrefslogtreecommitdiffstats
path: root/base/server/cms/src
diff options
context:
space:
mode:
authorAde Lee <alee@redhat.com>2016-05-12 00:35:41 +0200
committerAde Lee <alee@redhat.com>2016-05-12 17:16:26 +0200
commit6efedf46bfba0d9199bffb27e7a50afbf97e5bd5 (patch)
treedd32ac51c89f9b6f89b7f208291547cf0035f1a1 /base/server/cms/src
parentc5d9d3ac288045045aa387dfc53f1157c3a7e4b5 (diff)
Fix existing ca setup to work with HSM
If the existing CA keys are in an HSM, the code fails to load the keys becauseit does not take into account the full nickname. This small fix addresses this bug.
Diffstat (limited to 'base/server/cms/src')
-rw-r--r--base/server/cms/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java7
-rw-r--r--base/server/cms/src/org/dogtagpki/server/rest/SystemConfigService.java2
2 files changed, 7 insertions, 2 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java b/base/server/cms/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java
index c0f0ce1f4..527ed826e 100644
--- a/base/server/cms/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java
+++ b/base/server/cms/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java
@@ -2268,12 +2268,17 @@ public class ConfigurationUtils {
certObj.setCertChain(certChainStr);
}
- public static KeyPair loadKeyPair(String nickname) throws Exception {
+ public static KeyPair loadKeyPair(String nickname, String token) throws Exception {
CMS.debug("ConfigurationUtils: loadKeyPair(" + nickname + ")");
CryptoManager cm = CryptoManager.getInstance();
+ if (token != null) {
+ if (!token.equals("internal") && !token.equals("Internal Key Storage Token"))
+ nickname = token + ":" + nickname;
+ }
+
X509Certificate cert = cm.findCertByNickname(nickname);
PublicKey publicKey = cert.getPublicKey();
PrivateKey privateKey = cm.findPrivKeyByCert(cert);
diff --git a/base/server/cms/src/org/dogtagpki/server/rest/SystemConfigService.java b/base/server/cms/src/org/dogtagpki/server/rest/SystemConfigService.java
index f9415f520..3ed28bc72 100644
--- a/base/server/cms/src/org/dogtagpki/server/rest/SystemConfigService.java
+++ b/base/server/cms/src/org/dogtagpki/server/rest/SystemConfigService.java
@@ -424,7 +424,7 @@ public class SystemConfigService extends PKIService implements SystemConfigResou
if (request.isExternal() && tag.equals("signing")) { // external/existing CA
// load key pair for existing and externally-signed signing cert
CMS.debug("SystemConfigService: loading signing cert key pair");
- KeyPair pair = ConfigurationUtils.loadKeyPair(certData.getNickname());
+ KeyPair pair = ConfigurationUtils.loadKeyPair(certData.getNickname(), certData.getToken());
ConfigurationUtils.storeKeyPair(cs, tag, pair);
} else if (!request.getStepTwo()) {