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
  • 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, LCRException
      Valida 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ção
      certStore - Objeto que contêm os certificados e as LCRs para a construção do caminho de certificação
      timeReference - Data para validação
      signaturePolicyInterface - interface com política que permite obter âncoras de confiânça e informações de revogação
      ocspResponses - Lista de pares de certificado e suas respostas OCSP
      verifyICPBRAlgorithms - se vai ser verificado restrições de algoritmos e chaves da ICP-Brasil nos certificados
      Throws:
      CertificationPathException - Exceção no caminho do certificado
      OcspException - Exceção na verificação por OCSP
      SignerCertificationPathException - Exceção no caminho de certificação do certificado do assinante
      LCRException
    • 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 momento
      sigReport - O relatório de verificaçao da assinatura
      attributeValidation - 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 assinatura
      toValidateAttributeCertPath - Builder representando como a verificação está no momento
      validationResult - resultado da validação
      emptyAttributeReport - relatório de validação do certificado de atributo
    • getACAlgorithmKeySize

      public 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.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

      public static 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.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

      public static int getKeyLength​(PublicKey pk)
      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 assinatura
      sigReport - O relatório da assintura
      toValidateCertPath - O caminho de certificação a ser validado
      attributeValidation - 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 assinante
      issuerCert - 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, LCRException
      Valida o caminho de certificação de um certificado
      Parameters:
      certPath - Caminho de certificação a ser validado
      certStore - Objeto que contêm os certificados e as LCRs para a construção do caminho de certificação
      timeReference - Data para validação
      trustAnchors - Possíveis âncoras de confiança para o caminho de certificação
      revocationRequirements - Requisitos para verificação do status de revogação dos certificados
      ocspResponses - Lista de pares de certificado e suas respostas OCSP
      Throws:
      CertificationPathException - Exceção em caso de erro ao validar o caminho de certificação
      OcspException - Exceção em caso de erro com o OCSP
      SignerCertificationPathException - Exceção no caminho de certificação do certificado do assinante
      LCRException
    • validateWithCrls

      protected static void validateWithCrls​(CertPath certPath, CertStore certStore, Time timeReference, Set<TrustAnchor> trustAnchors) throws CertificationPathException
      Valida o caminho de certificação de um certificado através de LCRs (Lista de Certificados Revogados)
      Parameters:
      certPath - Caminho de certificação a ser validado
      certStore - Oobjeto que contêm os certificados e as LCRs do caminho de certificação
      timeReference - Data para validação
      trustAnchors - 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, OcspException
      Valida o caminho de certificação de um certificado através de servidor OCSP
      Parameters:
      certPath - Caminho de certificação a ser validado
      timeReference - Data para validação
      trustAnchors - Possíveis âncoras de confiança para o caminho de certificação
      ocspResponses - Lista de pares de certificado e suas respostas OCSP
      Throws:
      OcspException - Erro na validação a uma resposta OCSP
      CertificationPathException - 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, CertificationPathException
      Valida 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 validado
      certStore - Objeto que contêm os certificados e LCRs do caminho de certificação
      timeReference - Data para validação
      trustAnchors - Possíveis âncoras de confiança para o caminho de certificação
      ocspResponses - Lista de pares de certificado e suas respostas OCSP
      Throws:
      OcspException - Erro na validação a uma resposta ocsp
      CertificationPathException - 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, LCRException
      Valida 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 validado
      certStore - Objeto que contêm os certificados e LCRs do caminho de certificação
      timeReference - Data para validação
      trustAnchors - Possíveis âncoras de confiança para o caminho de certificação
      ocspResponses - Lista de pares de certificado e suas respostas OCSP
      Throws:
      OcspException - Erro na validação a uma resposta ocsp
      CertificationPathException - Exceção no caminho de certificação
      SignerCertificationPathException - Exceção no caminho de certificação do certificado do assinante
      LCRException
    • validateCertPathPolicies

      public static void validateCertPathPolicies​(CertPath certPath, String[] acceptablePolicySet, TrustAnchor trustPoint) throws CertificationPathException, CertificationPolicyException
      Valida as políticas de certificação de um cadeia de certificados
      Parameters:
      certPath - Caminho de certificação
      acceptablePolicySet - Conjunto de políticas de certificação aceitáveis
      trustPoint - Possíveis âncoras de confiança para o caminho de certificação
      Throws:
      CertificationPathException - Exceção caminho de certificação
      CertificationPolicyException - Exceção na validação das políticas de certificação