package eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.type.cert;
import eu.europa.esig.dss.validation.process.QCStatementPolicyIdentifiers;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.QCTypeIdentifiers;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.type.Type;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.type.TypeStrategy;
import eu.europa.esig.dss.validation.reports.wrapper.CertificateWrapper;
public class TypeByCertificatePostEIDAS implements TypeStrategy {
private final CertificateWrapper signingCertificate;
public TypeByCertificatePostEIDAS(CertificateWrapper signingCertificate) {
this.signingCertificate = signingCertificate;
}
@Override
public Type getType() {
boolean qcCompliant = QCStatementPolicyIdentifiers.isQCCompliant(signingCertificate);
boolean esign = QCTypeIdentifiers.isQCTypeEsign(signingCertificate);
boolean eseal = QCTypeIdentifiers.isQCTypeEseal(signingCertificate);
boolean web = QCTypeIdentifiers.isQCTypeWeb(signingCertificate);
boolean noneType = !(esign || eseal || web);
if (qcCompliant && (noneType || esign)) {
return Type.ESIGN;
} else if (qcCompliant && (eseal || web)) {
return Type.ESEAL;
} else {
return Type.UNKNOWN;
}
}
}