1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
package com.netscape.cms.servlet.test;
import java.net.URISyntaxException;
import java.util.Collection;
import java.util.Iterator;
import org.jboss.resteasy.client.ClientResponse;
import org.jboss.resteasy.client.ProxyFactory;
import com.netscape.certsrv.dbs.keydb.KeyId;
import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.admin.SystemCertificateResource;
import com.netscape.cms.servlet.cert.model.CertificateData;
import com.netscape.cms.servlet.csadmin.CMSRestClient;
import com.netscape.cms.servlet.key.KeyResource;
import com.netscape.cms.servlet.key.model.KeyData;
import com.netscape.cms.servlet.key.model.KeyDataInfo;
import com.netscape.cms.servlet.key.model.KeyDataInfos;
import com.netscape.cms.servlet.request.KeyRequestResource;
import com.netscape.cms.servlet.request.model.ArchivalRequestData;
import com.netscape.cms.servlet.request.model.KeyRequestInfo;
import com.netscape.cms.servlet.request.model.KeyRequestInfos;
import com.netscape.cms.servlet.request.model.RecoveryRequestData;
import com.netscape.cmsutil.util.Utils;
public class DRMRestClient extends CMSRestClient {
private KeyResource keyClient;
private KeyRequestResource keyRequestClient;
private SystemCertificateResource systemCertClient;
public DRMRestClient(String baseUri, String clientCertNick) throws URISyntaxException {
super(baseUri,clientCertNick);
systemCertClient = ProxyFactory.create(SystemCertificateResource.class, uri, executor, providerFactory);
keyRequestClient = ProxyFactory.create(KeyRequestResource.class, uri, executor, providerFactory);
keyClient = ProxyFactory.create(KeyResource.class, uri, executor, providerFactory);
}
public String getTransportCert() {
@SuppressWarnings("unchecked")
ClientResponse<CertificateData> response = (ClientResponse<CertificateData>) systemCertClient
.getTransportCert();
CertificateData certData = getEntity(response);
String transportCert = certData.getEncoded();
return transportCert;
}
public Collection<KeyRequestInfo> listRequests(String requestState, String requestType) {
KeyRequestInfos infos = keyRequestClient.listRequests(
requestState, requestType, null, new RequestId(0), 100, 100, 10
);
Collection<KeyRequestInfo> list = infos.getRequests();
return list;
}
public KeyRequestInfo archiveSecurityData(byte[] encoded, String clientId, String dataType) {
// create archival request
ArchivalRequestData data = new ArchivalRequestData();
String req1 = Utils.base64encode(encoded);
data.setWrappedPrivateData(req1);
data.setClientId(clientId);
data.setDataType(dataType);
KeyRequestInfo info = keyRequestClient.archiveKey(data);
return info;
}
public KeyDataInfo getKeyData(String clientId, String status) {
KeyDataInfos infos = keyClient.listKeys(clientId, status, 100, 10);
Collection<KeyDataInfo> list = infos.getKeyInfos();
Iterator<KeyDataInfo> iter = list.iterator();
while (iter.hasNext()) {
KeyDataInfo info = iter.next();
if (info != null) {
// return the first one
return info;
}
}
return null;
}
public KeyRequestInfo requestRecovery(KeyId keyId, byte[] rpwd, byte[] rkey, byte[] nonceData) {
// create recovery request
RecoveryRequestData data = new RecoveryRequestData();
data.setKeyId(keyId);
if (rpwd != null) {
data.setSessionWrappedPassphrase(Utils.base64encode(rpwd));
}
if (rkey != null) {
data.setTransWrappedSessionKey(Utils.base64encode(rkey));
}
if (nonceData != null) {
data.setNonceData(Utils.base64encode(nonceData));
}
KeyRequestInfo info = keyRequestClient.recoverKey(data);
return info;
}
public void approveRecovery(RequestId recoveryId) {
keyRequestClient.approveRequest(recoveryId);
}
public KeyData retrieveKey(KeyId keyId, RequestId requestId, byte[] rpwd, byte[] rkey, byte[] nonceData) {
// create recovery request
RecoveryRequestData data = new RecoveryRequestData();
data.setKeyId(keyId);
data.setRequestId(requestId);
if (rkey != null) {
data.setTransWrappedSessionKey(Utils.base64encode(rkey));
}
if (rpwd != null) {
data.setSessionWrappedPassphrase(Utils.base64encode(rpwd));
}
if (nonceData != null) {
data.setNonceData(Utils.base64encode(nonceData));
}
KeyData key = keyClient.retrieveKey(data);
return key;
}
public KeyRequestInfo getRequest(RequestId id) {
return keyRequestClient.getRequestInfo(id);
}
}
|