summaryrefslogtreecommitdiff
path: root/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java
diff options
context:
space:
mode:
Diffstat (limited to 'bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java')
-rw-r--r--bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java65
1 files changed, 54 insertions, 11 deletions
diff --git a/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java b/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java
index 61d0d480..0f054cf0 100644
--- a/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java
+++ b/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java
@@ -36,9 +36,13 @@ import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
+import javax.xml.crypto.dsig.SignatureMethod;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.gv.egiz.stal.BulkSignRequest;
+import at.gv.egiz.stal.BulkSignResponse;
import at.gv.egiz.stal.ErrorResponse;
import at.gv.egiz.stal.InfoboxReadRequest;
import at.gv.egiz.stal.InfoboxReadResponse;
@@ -47,6 +51,7 @@ import at.gv.egiz.stal.STALRequest;
import at.gv.egiz.stal.STALResponse;
import at.gv.egiz.stal.SignRequest;
import at.gv.egiz.stal.SignResponse;
+import iaik.xml.crypto.XmldsigMore;
public class DummySTAL implements STAL {
@@ -58,11 +63,9 @@ public class DummySTAL implements STAL {
public DummySTAL() {
try {
KeyStore ks = KeyStore.getInstance("pkcs12");
- InputStream ksStream = getClass().getClassLoader().getResourceAsStream(
- "at/gv/egiz/bku/slcommands/impl/Cert.p12");
+ InputStream ksStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/impl/Cert.p12");
ks.load(ksStream, "1622".toCharArray());
- for (Enumeration<String> aliases = ks.aliases(); aliases
- .hasMoreElements();) {
+ for (Enumeration<String> aliases = ks.aliases(); aliases.hasMoreElements();) {
String alias = aliases.nextElement();
log.debug("Found alias " + alias + " in keystore");
if (ks.isKeyEntry(alias)) {
@@ -78,25 +81,28 @@ public class DummySTAL implements STAL {
}
+ public X509Certificate getCert() {
+ return cert;
+ }
+
@Override
public List<STALResponse> handleRequest(List<? extends STALRequest> requestList) {
List<STALResponse> responses = new ArrayList<STALResponse>();
for (STALRequest request : requestList) {
- log.debug("Got STALRequest " + request + ".");
+ log.info("Got STALRequest " + request + ".");
if (request instanceof InfoboxReadRequest) {
- String infoboxIdentifier = ((InfoboxReadRequest) request)
- .getInfoboxIdentifier();
+ String infoboxIdentifier = ((InfoboxReadRequest) request).getInfoboxIdentifier();
InputStream stream = getClass().getClassLoader().getResourceAsStream(
"at/gv/egiz/stal/dummy/infoboxes4/" + infoboxIdentifier + ".bin");
STALResponse response;
if (stream != null) {
- log.debug("Infobox " + infoboxIdentifier + " found.");
+ log.info("Infobox " + infoboxIdentifier + " found.");
byte[] infobox;
try {
@@ -114,7 +120,8 @@ public class DummySTAL implements STAL {
infoboxReadResponse.setInfoboxValue(infobox);
response = infoboxReadResponse;
- } else if ((infoboxIdentifier.equals("SecureSignatureKeypair")) ||(infoboxIdentifier.equals("CertifiedKeypair"))) {
+ } else if ((infoboxIdentifier.equals("SecureSignatureKeypair"))
+ || (infoboxIdentifier.equals("CertifiedKeypair"))) {
try {
InfoboxReadResponse infoboxReadResponse = new InfoboxReadResponse();
infoboxReadResponse.setInfoboxValue(cert.getEncoded());
@@ -135,7 +142,13 @@ public class DummySTAL implements STAL {
try {
SignRequest signReq = (SignRequest) request;
- Signature s = Signature.getInstance("SHA1withRSA");
+ String signatureMethod = ((SignRequest) request).getSignatureMethod();
+ Signature s = null;
+ if (SignatureMethod.RSA_SHA1.equals(signatureMethod)) {
+ s = Signature.getInstance("SHA1withRSA");
+ } else if (XmldsigMore.SIGNATURE_RSA_SHA256.equals(signatureMethod)) {
+ s = Signature.getInstance("SHA256withRSA");
+ }
s.initSign(privateKey);
s.update(signReq.getSignedInfo().getValue());
byte[] sigVal = s.sign();
@@ -147,7 +160,37 @@ public class DummySTAL implements STAL {
responses.add(new ErrorResponse());
}
- } else {
+ }
+
+ //dummy handler for BulkSignRequest
+ else if (request instanceof BulkSignRequest) {
+
+ try {
+ BulkSignRequest bulkSignReq = (BulkSignRequest) request;
+
+ BulkSignResponse bulkSignResp = new BulkSignResponse();
+
+ for (int i = 0; i < bulkSignReq.getSignRequests().size(); i++) {
+
+ Signature s = Signature.getInstance("SHA1withRSA");
+ s.initSign(privateKey);
+ s.update(bulkSignReq.getSignRequests().get(i).getSignedInfo().getValue());
+ byte[] sigVal = s.sign();
+ SignResponse resp = new SignResponse();
+ resp.setSignatureValue(sigVal);
+ bulkSignResp.getSignResponse().add(resp);
+ }
+
+ responses.add(bulkSignResp);
+
+ } catch (Exception e) {
+ log.error("Failed to create signature.", e);
+ responses.add(new ErrorResponse());
+ }
+
+ }
+
+ else {
log.debug("Request not implemented.");