/**
* Simple class to interface the user side of ABC4Trust
* into the IRMA add-on of Future ID.
*/
package org.openecard.sal.protocol.irmaprover;
import java.io.File;
import java.util.List;
import java.io.FileWriter;
import java.io.StringWriter;
import java.lang.Process;
//import java.nio.file.Files;
//import java.nio.file.Paths;
//import java.nio.charset.Charset;
public class TokenGenerator {
private String serialPolicy;
private String generationScript;
private String generationScriptPath;
public TokenGenerator(String serialPolicy, String generationScript, String generationScriptPath) {
this.serialPolicy = serialPolicy;
this.generationScript = generationScript;
this.generationScriptPath = generationScriptPath;
}
public void generatePolicyToken(String presentationPolicyDest) {
StringWriter sw = new StringWriter();
sw.write(this.serialPolicy);
try {
FileWriter fw = new FileWriter(presentationPolicyDest);
fw.write(sw.toString());
fw.close();
Process pr = Runtime.getRuntime().exec(this.generationScript, null, new File(this.generationScriptPath));
} catch (Exception e) {
e.printStackTrace();
}
}
public void selfTest(String verificationScript, String generationScriptPath) {
try {
Process pr = Runtime.getRuntime().exec(verificationScript, null, new File(generationScriptPath));
} catch (Exception e) {
e.printStackTrace();
}
}
/* This function is used in the response of the DIDAuthenticate.
XXXX: Add support for java.nio in the client of replace by
java.io*/
public String getPresentationToken(String pathToPresentationToken) {
byte[] encoded = null;
// try {
// encoded = Files.readAllBytes(Paths.get(pathToPresentationToken));
// } catch(Exception e) {
// e.printStackTrace();
// }
// return new String(encoded, Charset.defaultCharset());
return new String("");
}
public static void main( String[] args ) {
String testPolicy = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><PresentationPolicyAlternatives xmlns=\"http://abc4trust.eu/wp2/abcschemav1.0\" Version=\"1.0\"><PresentationPolicy PolicyUID=\"http://MyFavoriteSoccerTeam/policies/match/842/vip\"><Message><Nonce>2Hkb+I0tbst/dA==</Nonce><TokenGeneratorlicationData> MyFavoriteSoccerTeam vs. OtherTeam </TokenGeneratorlicationData></Message><Credential Alias=\"#ticket\"><CredentialSpecAlternatives><CredentialSpecUID>http://MyFavoriteSoccerTeam/tickets/vip</CredentialSpecUID></CredentialSpecAlternatives><IssuerAlternatives><IssuerParametersUID RevocationInformationUID=\"urn:abc4trust:1.0:revocation:information/4hjqwl0htcw1hbc\">http://ticketcompany/MyFavoriteSoccerTeam/issuance:idemix</IssuerParametersUID></IssuerAlternatives><DisclosedAttribute AttributeType=\"City\" DataHandlingPolicy=\"http://www.sweetdreamsuites.com/policies/creditcards\"/><DisclosedAttribute AttributeType=\"State\" DataHandlingPolicy=\"http://www.sweetdreamsuites.com/policies/creditcards\"/></Credential><AttributePredicate Function=\"urn:oasis:names:tc:xacml:1.0:function:date-equal\"><Attribute CredentialAlias=\"#ticket\" AttributeType=\"IDValidFrom\"/><ConstantValue xmlns:abc=\"http://abc4trust.eu/wp2/abcschemav1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">2002-11-01Z</ConstantValue></AttributePredicate></PresentationPolicy></PresentationPolicyAlternatives>";
String testGenerationScript = "/home/vmr/second_future_id_abc_4_trust/p2abcengine-master/Code/core-abce/abce-services/future_id/genPresentationToken.sh";
String testGenerationScriptPath = "/home/vmr/second_future_id_abc_4_trust/p2abcengine-master/Code/core-abce/abce-services/future_id/";
String testVerificationScript = "/home/vmr/second_future_id_abc_4_trust/p2abcengine-master/Code/core-abce/abce-services/future_id/verify.sh";
String testVerificationScriptPath = "/home/vmr/second_future_id_abc_4_trust/p2abcengine-master/Code/core-abce/abce-services/future_id/";
String testPresentationPolicyDest = "/home/vmr/second_future_id_abc_4_trust/p2abcengine-master/Code/core-abce/abce-services/tutorial-resources/future_id_to_abc4_trust/my-app/src/main/java/com/mycompany/app/presentationPolicyAlternatives.xml";
TokenGenerator abcUser = new TokenGenerator(testPolicy, testGenerationScript, testGenerationScriptPath);
abcUser.generatePolicyToken(testPresentationPolicyDest);
abcUser.selfTest(testVerificationScript, testVerificationScriptPath);
System.out.println(abcUser.getPresentationToken("/home/vmr/second_future_id_abc_4_trust/p2abcengine-master/Code/core-abce/abce-services/future_id/presentationPolicyAlternativesAndPresentationToken.xml"));
}
}