Class CertPathValidator
java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.validationService.CertPathValidator
public class CertPathValidator extends Object
Esta classe é responsável pela validação do caminho de
certificação de um certificado
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CertPathValidator.AttributeIssuerValidator
-
Constructor Summary
Constructors Constructor Description CertPathValidator()
-
Method Summary
Modifier and Type Method Description static void
addRevocationInfo(SignatureReport signatureReport, ToValidateAttributeCertPath toValidateAttributeCertPath, ValidationDataReport attributeReport, SignaturePolicyInterface policyInterface)
static void
addRevocationInfo(SignaturePolicyInterface signaturePolicyInterface, SignatureReport sigReport, StdToValidateCertPath toValidateCertPath, ValidationDataReport attributeValidation)
Adiciona itens da validação de LCRs e OCSP no relatórioprotected static void
buildValidationDataReport(StdToValidateCertPath toValidateCertPath, SignatureReport sigReport, ValidationDataReport attributeValidation)
Adiciona os relatórios de validação dos certificados ao relatório da assinatura.static void
buildValidationDataReport(SignatureReport signatureReport, ToValidateAttributeCertPath toValidateAttributeCertPath, ValidationResult validationResult, ValidationDataReport emptyAttributeReport)
Adiciona os relatórios de validação dos certificados ao relatório da assinatura.static Integer
getACAlgorithmKeySize(PublicKey publicKey)
Retorna o tamanho necessário da chave pública do certificado de AC de acordo com o algoritmo que a chave foi gerada conforme o DOC ICP-01.01 versão 5.0static Integer
getFinalAlgorithmKeySize(Object certificate, PublicKey publicKey)
Retorna o tamanho necessário da chave pública do certificado de usuário final de acordo com o algoritmo que a chave foi gerada conforme o DOC ICP-01.01 versão 5.0static int
getKeyLength(PublicKey pk)
Retorna o tamanho da chave públicastatic ValidationDataReport
getValidationData(X509Certificate subjectCert, X509Certificate issuerCert)
Gera um relatório da validação dos certificados dadosstatic CertificationPathException
packValidationResultReason(CertPathValidatorException certPathValidatorException, Time timeReference)
static CertificationPathException
packValidationResultReason(InvalidAlgorithmParameterException invalidAlgorithmParameterException)
static CertificationPathException
packValidationResultReason(InvalidAlgorithmParameterException invalidAlgorithmParameterException, CertPath certPath)
static CertificationPathException
packValidationResultReason(NoSuchAlgorithmException noSuchAlgorithmException)
static CertificationPathException
packValidationResultReason(NoSuchAlgorithmException noSuchAlgorithmException, CertPath certPath)
static void
validateAttributeOIDs(org.bouncycastle.cert.X509AttributeCertificateHolder attributeCertificate, Object issuer, Database database, ValidationDataReport report, boolean docICP16)
static void
validateAttributes(org.bouncycastle.cert.X509AttributeCertificateHolder attributeCertificate, ValidationDataReport report, boolean rfc5755)
static void
validateCertificateAttributeExtensions(org.bouncycastle.cert.X509AttributeCertificateHolder attributeCertificate, ValidationDataReport report, boolean rfc5755, boolean docIcp16)
static void
validateCertPath(CertPath certPath, CertStore certStore, Time timeReference, SignaturePolicyInterface signaturePolicyInterface, CertificateValidation.Validate validate, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPBRAlgorithms)
Valida o caminho de certificação de um certificado.static void
validateCertPath(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors, CertRevReq revocationRequirements, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms)
Valida o caminho de certificação de um certificadostatic void
validateCertPathPolicies(CertPath certPath, String[] acceptablePolicySet, TrustAnchor trustPoint)
Valida as políticas de certificação de um cadeia de certificadosprotected static void
validateEndCertWithCrlAndCasWithOcsp(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms)
Valida o caminho de certificação do certificado final através de LCRs e os certificados de ACs através de servidor OCSPprotected static void
validateEndCertWithOcspAndCasWithCrls(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms)
Valida o caminho de certificação do certificado final através de servidor OCSP e os certificados de ACs através de LCRsprotected static void
validateWithCrls(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors)
Valida o caminho de certificação de um certificado através de LCRs (Lista de Certificados Revogados)protected static void
validateWithOcsp(CertPath certPath, Time timeReference, Set<TrustAnchor> trustAnchors, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms)
Valida o caminho de certificação de um certificado através de servidor OCSP
-
Constructor Details
-
CertPathValidator
public CertPathValidator()
-
-
Method Details
-
validateCertPath
public static void validateCertPath(CertPath certPath, CertStore certStore, Time timeReference, SignaturePolicyInterface signaturePolicyInterface, CertificateValidation.Validate validate, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPBRAlgorithms) throws CertificationPathException, OcspException, LCRExceptionValida o caminho de certificação de um certificado. Caso seja feita verificação por OCSP então os parâmetros ocspRespList e ocspServerCertificate NÃO PODEM ser nulos. Se for apenas por CRLs, então tais parâmetros DEVEM ser nulos- Parameters:
certPath
- Certificado final do caminho de certificaçãocertStore
- Objeto que contêm os certificados e as LCRs para a construção do caminho de certificaçãotimeReference
- Data para validaçãosignaturePolicyInterface
- interface com política que permite obter âncoras de confiânça e informações de revogaçãoocspResponses
- Lista de pares de certificado e suas respostas OCSPverifyICPBRAlgorithms
- se vai ser verificado restrições de algoritmos e chaves da ICP-Brasil nos certificados- Throws:
CertificationPathException
- Exceção no caminho do certificadoOcspException
- Exceção na verificação por OCSPSignerCertificationPathException
- Exceção no caminho de certificação do certificado do assinanteLCRException
-
buildValidationDataReport
protected static void buildValidationDataReport(StdToValidateCertPath toValidateCertPath, SignatureReport sigReport, ValidationDataReport attributeValidation)Adiciona os relatórios de validação dos certificados ao relatório da assinatura.- Parameters:
toValidateCertPath
- Builder representando como a verificação está no momentosigReport
- O relatório de verificaçao da assinaturaattributeValidation
- O relatório de verificação de certificados e CRLs. Se este for nulo, estamos fazendo a validação de um certificado de atributo.
-
validateCertificateAttributeExtensions
public static void validateCertificateAttributeExtensions(org.bouncycastle.cert.X509AttributeCertificateHolder attributeCertificate, ValidationDataReport report, boolean rfc5755, boolean docIcp16) -
validateAttributeOIDs
public static void validateAttributeOIDs(org.bouncycastle.cert.X509AttributeCertificateHolder attributeCertificate, Object issuer, Database database, ValidationDataReport report, boolean docICP16) -
validateAttributes
public static void validateAttributes(org.bouncycastle.cert.X509AttributeCertificateHolder attributeCertificate, ValidationDataReport report, boolean rfc5755) -
buildValidationDataReport
public static void buildValidationDataReport(SignatureReport signatureReport, ToValidateAttributeCertPath toValidateAttributeCertPath, ValidationResult validationResult, ValidationDataReport emptyAttributeReport)Adiciona os relatórios de validação dos certificados ao relatório da assinatura.- Parameters:
signatureReport
- relatório de assinaturatoValidateAttributeCertPath
- Builder representando como a verificação está no momentovalidationResult
- resultado da validaçãoemptyAttributeReport
- relatório de validação do certificado de atributo
-
getACAlgorithmKeySize
Retorna o tamanho necessário da chave pública do certificado de AC de acordo com o algoritmo que a chave foi gerada conforme o DOC ICP-01.01 versão 5.0- Parameters:
publicKey
- O certificado de AC a ser verificado- Returns:
- O tamanho necessário para a chave pública, ou null se a chave foi gerada com um algoritmo inválido
-
getFinalAlgorithmKeySize
Retorna o tamanho necessário da chave pública do certificado de usuário final de acordo com o algoritmo que a chave foi gerada conforme o DOC ICP-01.01 versão 5.0- Parameters:
certificate
- O certificado de AC a ser verificado.publicKey
- chave públic do certificado.- Returns:
- O tamanho necessário para a chave pública, ou null se a chave foi gerada com um algoritmo inválido
-
getKeyLength
Retorna o tamanho da chave pública- Parameters:
pk
- A chave pública- Returns:
- O tamanho da chave ou -1 se a chave não for suportada
-
addRevocationInfo
public static void addRevocationInfo(SignaturePolicyInterface signaturePolicyInterface, SignatureReport sigReport, StdToValidateCertPath toValidateCertPath, ValidationDataReport attributeValidation)Adiciona itens da validação de LCRs e OCSP no relatório- Parameters:
signaturePolicyInterface
- Interface de política de assinaturasigReport
- O relatório da assinturatoValidateCertPath
- O caminho de certificação a ser validadoattributeValidation
- O relatório de validação do certificado de atributo
-
addRevocationInfo
public static void addRevocationInfo(SignatureReport signatureReport, ToValidateAttributeCertPath toValidateAttributeCertPath, ValidationDataReport attributeReport, SignaturePolicyInterface policyInterface) -
getValidationData
public static ValidationDataReport getValidationData(X509Certificate subjectCert, X509Certificate issuerCert)Gera um relatório da validação dos certificados dados- Parameters:
subjectCert
- Certificado do assinanteissuerCert
- Certificado do emissor- Returns:
- Relatório da validação dos certificados
-
validateCertPath
public static void validateCertPath(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors, CertRevReq revocationRequirements, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms) throws CertificationPathException, OcspException, LCRExceptionValida o caminho de certificação de um certificado- Parameters:
certPath
- Caminho de certificação a ser validadocertStore
- Objeto que contêm os certificados e as LCRs para a construção do caminho de certificaçãotimeReference
- Data para validaçãotrustAnchors
- Possíveis âncoras de confiança para o caminho de certificaçãorevocationRequirements
- Requisitos para verificação do status de revogação dos certificadosocspResponses
- Lista de pares de certificado e suas respostas OCSP- Throws:
CertificationPathException
- Exceção em caso de erro ao validar o caminho de certificaçãoOcspException
- Exceção em caso de erro com o OCSPSignerCertificationPathException
- Exceção no caminho de certificação do certificado do assinanteLCRException
-
validateWithCrls
protected static void validateWithCrls(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors) throws CertificationPathExceptionValida o caminho de certificação de um certificado através de LCRs (Lista de Certificados Revogados)- Parameters:
certPath
- Caminho de certificação a ser validadocertStore
- Oobjeto que contêm os certificados e as LCRs do caminho de certificaçãotimeReference
- Data para validaçãotrustAnchors
- Possíveis âncoras de confiança para o caminho de certificação- Throws:
CertificationPathException
- Exceção no caminho de certificação
-
packValidationResultReason
public static CertificationPathException packValidationResultReason(NoSuchAlgorithmException noSuchAlgorithmException) -
packValidationResultReason
public static CertificationPathException packValidationResultReason(NoSuchAlgorithmException noSuchAlgorithmException, CertPath certPath) -
packValidationResultReason
public static CertificationPathException packValidationResultReason(InvalidAlgorithmParameterException invalidAlgorithmParameterException) -
packValidationResultReason
public static CertificationPathException packValidationResultReason(InvalidAlgorithmParameterException invalidAlgorithmParameterException, CertPath certPath) -
packValidationResultReason
public static CertificationPathException packValidationResultReason(CertPathValidatorException certPathValidatorException, Time timeReference) -
validateWithOcsp
protected static void validateWithOcsp(CertPath certPath, Time timeReference, Set<TrustAnchor> trustAnchors, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms) throws CertificationPathException, OcspExceptionValida o caminho de certificação de um certificado através de servidor OCSP- Parameters:
certPath
- Caminho de certificação a ser validadotimeReference
- Data para validaçãotrustAnchors
- Possíveis âncoras de confiança para o caminho de certificaçãoocspResponses
- Lista de pares de certificado e suas respostas OCSP- Throws:
OcspException
- Erro na validação a uma resposta OCSPCertificationPathException
- Exceção no caminho de certificação
-
validateEndCertWithOcspAndCasWithCrls
protected static void validateEndCertWithOcspAndCasWithCrls(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms) throws OcspException, CertificationPathExceptionValida o caminho de certificação do certificado final através de servidor OCSP e os certificados de ACs através de LCRs- Parameters:
certPath
- Caminho de certificação a ser validadocertStore
- Objeto que contêm os certificados e LCRs do caminho de certificaçãotimeReference
- Data para validaçãotrustAnchors
- Possíveis âncoras de confiança para o caminho de certificaçãoocspResponses
- Lista de pares de certificado e suas respostas OCSP- Throws:
OcspException
- Erro na validação a uma resposta ocspCertificationPathException
- Exceção no caminho de certificação
-
validateEndCertWithCrlAndCasWithOcsp
protected static void validateEndCertWithCrlAndCasWithOcsp(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors, List<org.apache.commons.lang3.tuple.Pair<Object,org.bouncycastle.cert.ocsp.OCSPResp>> ocspResponses, boolean verifyICPAlgorithms) throws OcspException, CertificationPathException, LCRExceptionValida o caminho de certificação do certificado final através de LCRs e os certificados de ACs através de servidor OCSP- Parameters:
certPath
- Caminho de certificação a ser validadocertStore
- Objeto que contêm os certificados e LCRs do caminho de certificaçãotimeReference
- Data para validaçãotrustAnchors
- Possíveis âncoras de confiança para o caminho de certificaçãoocspResponses
- Lista de pares de certificado e suas respostas OCSP- Throws:
OcspException
- Erro na validação a uma resposta ocspCertificationPathException
- Exceção no caminho de certificaçãoSignerCertificationPathException
- Exceção no caminho de certificação do certificado do assinanteLCRException
-
validateCertPathPolicies
public static void validateCertPathPolicies(CertPath certPath, String[] acceptablePolicySet, TrustAnchor trustPoint) throws CertificationPathException, CertificationPolicyExceptionValida as políticas de certificação de um cadeia de certificados- Parameters:
certPath
- Caminho de certificaçãoacceptablePolicySet
- Conjunto de políticas de certificação aceitáveistrustPoint
- Possíveis âncoras de confiança para o caminho de certificação- Throws:
CertificationPathException
- Exceção caminho de certificaçãoCertificationPolicyException
- Exceção na validação das políticas de certificação
-