//* Licensed Materials - Property of *
//* Alexandra Instituttet A/S *
//* *
//* eu.abc4trust.pabce.1.34 *
//* *
//* (C) Copyright Alexandra Instituttet A/S, Denmark. 2014. All *
//* Rights Reserved. *
//* US Government Users Restricted Rights - Use, duplication or *
//* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. *
//* *
//* This file is licensed under the Apache License, Version 2.0 (the *
//* "License"); you may not use this file except in compliance with *
//* the License. You may obtain a copy of the License at: *
//* http://www.apache.org/licenses/LICENSE-2.0 *
//* Unless required by applicable law or agreed to in writing, *
//* software distributed under the License is distributed on an *
//* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
//* KIND, either express or implied. See the License for the *
//* specific language governing permissions and limitations *
//* under the License. *
//*/**/****************************************************************
package eu.abc4trust.services.revocation;
import static org.junit.Assert.assertTrue;
import java.math.BigInteger;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import com.sun.jersey.api.client.WebResource.Builder;
import eu.abc4trust.cryptoEngine.util.SystemParametersUtil;
import eu.abc4trust.services.AbstractTestFactory;
import eu.abc4trust.xml.ABCEBoolean;
import eu.abc4trust.xml.Attribute;
import eu.abc4trust.xml.AttributeDescription;
import eu.abc4trust.xml.AttributeList;
import eu.abc4trust.xml.NonRevocationEvidence;
import eu.abc4trust.xml.NonRevocationEvidenceUpdate;
import eu.abc4trust.xml.ObjectFactory;
import eu.abc4trust.xml.Reference;
import eu.abc4trust.xml.RevocationAuthorityParameters;
import eu.abc4trust.xml.RevocationInformation;
import eu.abc4trust.xml.RevocationReferences;
import eu.abc4trust.xml.SystemParameters;
public class RevocationServiceFactory extends AbstractTestFactory {
static ObjectFactory of = new ObjectFactory();
final String baseUrl = "http://localhost:9200/abce-services/revocation";
public void storeSystemParameters(SystemParameters systemParameters) {
String requestString = "/storeSystemParameters/";
Builder resource = this.getHttpBuilder(requestString, this.baseUrl);
ABCEBoolean b = resource.post(ABCEBoolean.class,
of.createSystemParameters(systemParameters));
assertTrue(b.isValue());
}
public RevocationAuthorityParameters getRevocationAuthorityParameters(
String revocationAuthorityParametersUid) throws Exception{
SystemParameters systemParameters = SystemParametersUtil.getDefaultSystemParameters_1024();
this.storeSystemParameters(systemParameters);
String requestString = "/setupRevocationAuthorityParameters?keyLength=1024&uid="+revocationAuthorityParametersUid;
Builder resource = this.getHttpBuilder(requestString, this.baseUrl);
RevocationReferences revocationReferences = of.createRevocationReferences();
Reference nonRevocationEvidenceReference = of.createReference();
nonRevocationEvidenceReference.getReferences().add(URI.create("http://localhost:9200/something-nre"));
nonRevocationEvidenceReference.setReferenceType(URI.create("http"));
Reference nonRevocationEvidenceUpdateReference = of.createReference();
nonRevocationEvidenceUpdateReference.getReferences().add(URI.create("http://localhost:9200/something-update"));
nonRevocationEvidenceUpdateReference.setReferenceType(URI.create("http"));
Reference revocationInfoReference = of.createReference();
revocationInfoReference.getReferences().add(URI.create("http://localhost:9200/something-rev-info"));
revocationInfoReference.setReferenceType(URI.create("http"));
revocationReferences.setNonRevocationEvidenceReference(nonRevocationEvidenceReference);
revocationReferences.setNonRevocationEvidenceUpdateReference(nonRevocationEvidenceUpdateReference);
revocationReferences.setRevocationInfoReference(revocationInfoReference);
RevocationAuthorityParameters revocationAuthorityParameters = resource
.post(
RevocationAuthorityParameters.class, of.createRevocationReferences(revocationReferences));
return revocationAuthorityParameters;
}
public NonRevocationEvidence generateNonRevocationEvidence(
String revocationAuthorityParametersUid, List<Attribute> attributes) throws Exception {
setupRevocationAuthority(revocationAuthorityParametersUid);
String requestString = "/generatenonrevocationevidence/"+revocationAuthorityParametersUid;
AttributeList attributeList = of.createAttributeList();
attributeList.getAttributes().addAll(attributes);
Builder resource = this.getHttpBuilder(requestString, this.baseUrl);
return resource.post(
NonRevocationEvidence.class, of.createAttributeList(attributeList));
}
public NonRevocationEvidenceUpdate generateNonRevocationEvidenceUpdate(
String revocationAuthorityParametersUid, int epoch) throws Exception {
setupRevocationAuthority(revocationAuthorityParametersUid);
String requestString = "/generatenonrevocationevidenceupdate/"+revocationAuthorityParametersUid+"?epoch="+epoch;
Builder resource = this.getHttpBuilder(requestString, this.baseUrl);
return resource.post(
NonRevocationEvidenceUpdate.class);
}
public RevocationInformation getRevocationInformation(
String revocationAuthorityParametersUid) throws Exception {
setupRevocationAuthority(revocationAuthorityParametersUid);
String requestString = "/getrevocationinformation/"+revocationAuthorityParametersUid;
Builder resource = this.getHttpBuilder(requestString, this.baseUrl);
return resource.post(
RevocationInformation.class);
}
public RevocationInformation updateRevocationInformation(
String revocationAuthorityParametersUid) throws Exception {
setupRevocationAuthority(revocationAuthorityParametersUid);
String requestString = "/updaterevocationinformation/"+revocationAuthorityParametersUid;
Builder resource = this.getHttpBuilder(requestString, this.baseUrl);
return resource.get(
RevocationInformation.class);
}
public RevocationInformation revoke(
String revocationAuthorityParametersUid) throws Exception {
List<Attribute> attributes = new ArrayList<Attribute>(1);
Attribute attribute1 = of.createAttribute();
attribute1.setAttributeUID(new URI("urn:abc4trust:1.0:attribute/NOT_USED"));
AttributeDescription attrDesc = of.createAttributeDescription();
attrDesc.setEncoding(new URI("urn:abc4trust:1.0:encoding:integer:unsigned"));
attrDesc.setDataType(new URI("xs:integer"));
attrDesc.setType(new URI("http://abc4trust.eu/wp2/abcschemav1.0/revocationhandle"));
attribute1.setAttributeDescription(attrDesc);
attribute1.setAttributeValue(new BigInteger("2222"));
attributes.add(attribute1);
AttributeList attributeList = of.createAttributeList();
attributeList.getAttributes().addAll(attributes);
NonRevocationEvidence nre = generateNonRevocationEvidence(revocationAuthorityParametersUid, attributes);
attributes = nre.getAttribute();
attributeList = of.createAttributeList();
attributeList.getAttributes().addAll(attributes);
String requestString = "/revoke/"+revocationAuthorityParametersUid;
Builder resource = this.getHttpBuilder(requestString, this.baseUrl);
return resource.post(
RevocationInformation.class, of.createAttributeList(attributeList));
}
private void setupRevocationAuthority(String revocationAuthorityParametersUid) throws Exception{
deleteStorageDirectory();
getRevocationAuthorityParameters(revocationAuthorityParametersUid);
}
}