package no.difi.sdp.client2.internal;
import no.difi.sdp.client2.domain.Databehandler;
import no.difi.sdp.client2.domain.Miljo;
import no.difi.sdp.client2.domain.exceptions.SertifikatException;
import no.digipost.security.cert.CertStatus;
import no.digipost.security.cert.CertificateValidatorConfig;
import no.digipost.security.cert.Trust;
import java.security.cert.X509Certificate;
import java.text.MessageFormat;
import static no.digipost.security.cert.OcspSetting.NO_OCSP;
public class CertificateValidator {
public static void validate(Miljo miljo, X509Certificate certificate) {
if (miljo.getGodkjenteKjedeSertifikater() == null) {
return;
}
Trust trusteChainCertificates = miljo.getGodkjenteKjedeSertifikater();
CertificateValidatorConfig certificateValidatorConfig = CertificateValidatorConfig.MOST_STRICT.with(NO_OCSP);
no.digipost.security.cert.CertificateValidator certificateValidator = new no.digipost.security.cert.CertificateValidator(certificateValidatorConfig, trusteChainCertificates, null);
CertStatus certStatus = certificateValidator.validateCert(certificate);
if (certStatus != CertStatus.OK) {
String message = MessageFormat
.format("Sertifikatet som brukes for {0} er ikke gyldig. Prøver du å sende med et testsertifikat i produksjonsmiljø eller omvendt, eller er sertifikatet utgått?", Databehandler.class.getSimpleName());
throw new SertifikatException(message);
}
}
}