//* Licensed Materials - Property of * //* IBM * //* Miracle A/S * //* Alexandra Instituttet A/S * //* * //* eu.abc4trust.pabce.1.34 * //* * //* (C) Copyright IBM Corp. 2014. All Rights Reserved. * //* (C) Copyright Miracle A/S, Denmark. 2014. All Rights Reserved. * //* (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.abce.testharness; import java.net.URI; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import eu.abc4trust.returnTypes.SitdReturn; import eu.abc4trust.returnTypes.SptdReturn; import eu.abc4trust.ui.idSelection.IdentitySelection; import eu.abc4trust.xml.Attribute; import eu.abc4trust.xml.CredentialDescription; import eu.abc4trust.xml.InspectorDescription; import eu.abc4trust.xml.IssuanceTokenDescription; import eu.abc4trust.xml.PolicyDescription; import eu.abc4trust.xml.PresentationTokenDescription; import eu.abc4trust.xml.PseudonymDescription; import eu.abc4trust.xml.PseudonymMetadata; public class PolicySelector implements IdentitySelection { private final int chosenPresentationToken; List<URI> chosenInspectors; private final int selectedPseudonymNumber; private final boolean debug; private URI selectedCredential = null; public PolicySelector(boolean debug, int selectedPolicyNumber, int selectedPseudonymNumber) { this.debug = debug; this.chosenPresentationToken = selectedPolicyNumber; this.chosenInspectors = new LinkedList<URI>(); this.selectedPseudonymNumber = selectedPseudonymNumber; } public PolicySelector(boolean debug, int selectedPolicyNumber, int selectedPseudonymNumber, URI selectedCredential) { this.debug = debug; this.selectedCredential = selectedCredential; this.chosenPresentationToken = selectedPolicyNumber; this.chosenInspectors = new LinkedList<URI>(); this.selectedPseudonymNumber = selectedPseudonymNumber; } public PolicySelector(boolean debug, URI selectedCredential, int selectedPseudonymNumber) { this.debug = debug; this.selectedCredential = selectedCredential; this.chosenPresentationToken = 0; this.chosenInspectors = new LinkedList<URI>(); this.selectedPseudonymNumber = selectedPseudonymNumber; } public PolicySelector(int selectedPolicyNumber, int selectedPseudonymNumber) { this.debug = false; this.chosenPresentationToken = selectedPolicyNumber; this.chosenInspectors = new LinkedList<URI>(); this.selectedPseudonymNumber = selectedPseudonymNumber; } public PolicySelector(int selectedPolicyNumber, List<URI> chosenInspectors, int selectedPseudonymNumber) { this.debug = false; this.chosenPresentationToken = selectedPolicyNumber; this.chosenInspectors = chosenInspectors; this.selectedPseudonymNumber = selectedPseudonymNumber; } public PolicySelector(int selectedPolicyNumber, List<URI> chosenInspectors, int selectedPseudonymNumber, URI selectedCredential) { this.debug = false; this.chosenPresentationToken = selectedPolicyNumber; this.chosenInspectors = chosenInspectors; this.selectedCredential = selectedCredential; this.selectedPseudonymNumber = selectedPseudonymNumber; } public SptdReturn selectPresentationTokenDescription(Map<URI, PolicyDescription> policies, Map<URI, CredentialDescription> credentialDescriptions, Map<URI, PseudonymDescription> pseudonyms, Map<URI, InspectorDescription> inspectors, List<PresentationTokenDescription> tokens, List<List<URI>> credentialUids, List<Set<List<URI>>> pseudonymChoice, List<List<Set<URI>>> inspectorChoice) { if (this.debug) { System.out.println("### selectPresentationTokenDescription"); System.out.println("*** - policies : " + policies.size()); System.out.println("*** - credentialDescriptions : " + credentialDescriptions.size()); System.out.println("*** - pseudonyms : " + pseudonyms.size()); System.out.println("*** - inspectors : " + inspectors.size()); System.out.println("### - tokens : " + tokens.size()); System.out.println("*** - credentialUids : " + credentialUids.size()); System.out.println("*** - pseudonymChoice : " + pseudonymChoice.size()); System.out.println("*** - inspectorChoice : " + inspectorChoice.size()); } Map<URI, PseudonymMetadata> metaDataToChange = new HashMap<URI, PseudonymMetadata>(); List<URI> chosenPseudonyms = null; Set<List<URI>> pseudonymChoices = pseudonymChoice .get(this.chosenPresentationToken); for (int inx = 0; inx < (this.selectedPseudonymNumber + 1); inx++) { chosenPseudonyms = pseudonymChoices.iterator().next(); } if (this.chosenInspectors.isEmpty()) { for (List<Set<URI>> uris : inspectorChoice) { for (Set<URI> uriset : uris) { this.chosenInspectors.addAll(uriset); } } } // chosenInspectors.addAll(inspectorChoice.get(0).get(0).iterator()); if(this.selectedCredential != null){ for(int i = 0; i< credentialUids.size(); i++){ if(this.selectedCredential.equals(credentialUids.get(i).get(0))) return new SptdReturn(i, metaDataToChange, chosenPseudonyms, this.chosenInspectors); } throw new RuntimeException("Cannot choose credential, URI does not exist!"); } SptdReturn r = new SptdReturn(this.chosenPresentationToken, metaDataToChange, chosenPseudonyms, this.chosenInspectors); return r; } @Override public SitdReturn selectIssuanceTokenDescription(Map<URI, PolicyDescription> policies, Map<URI, CredentialDescription> credentialDescriptions, Map<URI, PseudonymDescription> pseudonyms, Map<URI, InspectorDescription> inspectors, List<IssuanceTokenDescription> tokens, List<List<URI>> credentialUids, List<Attribute> selfClaimedAttributes, List<Set<List<URI>>> pseudonymChoice, List<List<Set<URI>>> inspectorChoice) { throw new UnsupportedOperationException(); } }