package eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.consistency; import java.util.HashMap; import java.util.List; import java.util.Map; import eu.europa.esig.dss.utils.Utils; import eu.europa.esig.dss.validation.process.qmatrix.AdditionalServiceInformation; import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.ServiceQualification; import eu.europa.esig.dss.validation.reports.wrapper.TrustedServiceWrapper; public class TrustedServiceQualifierAndAdditionalServiceInfoConsistency implements TrustedServiceCondition { private static final Map<String, String> CORRESPONDANCE_MAP_QUALIFIER_ASI; static { CORRESPONDANCE_MAP_QUALIFIER_ASI = new HashMap<String, String>(); CORRESPONDANCE_MAP_QUALIFIER_ASI.put(ServiceQualification.QC_FOR_ESIG, AdditionalServiceInformation.FOR_ESIGNATURES); CORRESPONDANCE_MAP_QUALIFIER_ASI.put(ServiceQualification.QC_FOR_ESEAL, AdditionalServiceInformation.FOR_ESEALS); CORRESPONDANCE_MAP_QUALIFIER_ASI.put(ServiceQualification.QC_FOR_WSA, AdditionalServiceInformation.FOR_WEB_AUTHENTICATION); } public TrustedServiceQualifierAndAdditionalServiceInfoConsistency() { } @Override public boolean isConsistent(TrustedServiceWrapper trustedService) { List<String> asis = trustedService.getAdditionalServiceInfos(); List<String> qualifiers = ServiceQualification.getUsageQualifiers(trustedService.getCapturedQualifiers()); return isQualifierInAdditionServiceInfos(qualifiers, asis); } private boolean isQualifierInAdditionServiceInfos(List<String> qualifiers, List<String> asis) { if (Utils.collectionSize(asis) >= 1) { if (Utils.collectionSize(qualifiers) == 1) { // Cannot have more than 1 usage String currentUsage = qualifiers.get(0); String expectedASI = CORRESPONDANCE_MAP_QUALIFIER_ASI.get(currentUsage); return asis.contains(expectedASI); } } return true; } }