diff options
author | Andrew Wnuk <awnuk@redhat.com> | 2013-11-15 18:35:01 -0800 |
---|---|---|
committer | Andrew Wnuk <awnuk@redhat.com> | 2013-11-18 14:29:22 -0800 |
commit | 3e413200912690b4680f65efc2c9dc11f3a18fab (patch) | |
tree | be4ade39c3f3ba5370fabd2dfaf63228c9007d14 /base/common/src | |
parent | 7893dac9736701f4e6bd518328e24c0fa5e83ef3 (diff) | |
download | pki-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/src')
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; + } } |