summaryrefslogtreecommitdiffstats
path: root/base/common
diff options
context:
space:
mode:
authorAndrew Wnuk <awnuk@redhat.com>2013-11-15 18:35:01 -0800
committerAndrew Wnuk <awnuk@redhat.com>2013-11-18 14:29:22 -0800
commit3e413200912690b4680f65efc2c9dc11f3a18fab (patch)
treebe4ade39c3f3ba5370fabd2dfaf63228c9007d14 /base/common
parent7893dac9736701f4e6bd518328e24c0fa5e83ef3 (diff)
downloadpki-3e413200912690b4680f65efc2c9dc11f3a18fab.tar.gz
pki-3e413200912690b4680f65efc2c9dc11f3a18fab.tar.xz
pki-3e413200912690b4680f65efc2c9dc11f3a18fab.zip
REST interface extension
This patch provides REST interface extension allowing recovery of asymmetric keys. Ticket #439.
Diffstat (limited to 'base/common')
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyData.java16
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java33
-rw-r--r--base/common/src/com/netscape/certsrv/kra/KRAClient.java22
3 files changed, 71 insertions, 0 deletions
diff --git a/base/common/src/com/netscape/certsrv/key/KeyData.java b/base/common/src/com/netscape/certsrv/key/KeyData.java
index 2ee7d1b92..b71861470 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyData.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyData.java
@@ -39,6 +39,9 @@ public class KeyData {
@XmlElement
String nonceData;
+ @XmlElement
+ String p12Data;
+
public KeyData() {
// required for JAXB (defaults)
}
@@ -73,4 +76,17 @@ public class KeyData {
this.nonceData = nonceData;
}
+ /**
+ * @return the p12Data
+ */
+ public String getP12Data() {
+ return p12Data;
+ }
+
+ /**
+ * @param p12Data the p12Data to set
+ */
+ public void setP12Data(String p12Data) {
+ this.p12Data = p12Data;
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java b/base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java
index d14f61241..aa69d8336 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java
@@ -64,6 +64,12 @@ public class KeyRecoveryRequest {
@XmlElement
protected String nonceData;
+ @XmlElement
+ protected String certificate;
+
+ @XmlElement
+ protected String passphrase;
+
public KeyRecoveryRequest() {
// required for JAXB (defaults)
}
@@ -152,4 +158,31 @@ public class KeyRecoveryRequest {
this.nonceData = nonceData;
}
+ /**
+ * @return the certificate
+ */
+ public String getCertificate() {
+ return certificate;
+ }
+
+ /**
+ * @param certificate the certificate to set
+ */
+ public void setCertificate(String certificate) {
+ this.certificate = certificate;
+ }
+
+ /**
+ * @return the passphrase
+ */
+ public String getPassphrase() {
+ return passphrase;
+ }
+
+ /**
+ * @param passphrase the passphrase to set
+ */
+ public void setPassphrase(String passphrase) {
+ this.passphrase = passphrase;
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/kra/KRAClient.java b/base/common/src/com/netscape/certsrv/kra/KRAClient.java
index 21f1a957d..81d600c33 100644
--- a/base/common/src/com/netscape/certsrv/kra/KRAClient.java
+++ b/base/common/src/com/netscape/certsrv/kra/KRAClient.java
@@ -144,4 +144,26 @@ public class KRAClient extends SubsystemClient {
public KeyRequestInfo getRequest(RequestId id) {
return keyRequestClient.getRequestInfo(id);
}
+
+ public RequestId requestKeyRecovery(String keyId, String b64Certificate) {
+ // create key recovery request
+ KeyRecoveryRequest data = new KeyRecoveryRequest();
+ data.setKeyId(new KeyId(keyId));
+ data.setCertificate(b64Certificate);
+
+ @SuppressWarnings("unchecked")
+ ClientResponse<KeyRequestInfo> response = (ClientResponse<KeyRequestInfo>)
+ keyRequestClient.recoverKey(data);
+ return client.getEntity(response).getRequestId();
+ }
+
+ public KeyData recoverKey(RequestId requestId, String passphrase) {
+ // recover key based on approved request
+ KeyRecoveryRequest data = new KeyRecoveryRequest();
+ data.setRequestId(requestId);
+ data.setPassphrase(passphrase);
+
+ KeyData key = keyClient.retrieveKey(data);
+ return key;
+ }
}