Class AbstractVerifier

java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.cades.AbstractVerifier
Direct Known Subclasses:
SignatureVerifier, TimeStampVerifier

public abstract class AbstractVerifier
extends Object
Esta classe trata as partes de verificação comuns entre assinaturas CAdES e carimbos do tempo.
  • Field Details

    • mandatedAttributes

      protected AttributeList mandatedAttributes
    • optionalAttributes

      protected AttributeList optionalAttributes
    • prohibitedAttributes

      protected AttributeList prohibitedAttributes
    • signature

      protected CadesSignature signature
      Assinatura a ser verificada
    • certPath

      protected CertPath certPath
      Caminho de certificação do assinante
    • ocspServerCertificate

      protected X509Certificate ocspServerCertificate
      Certificado da autoridade de OCSP
    • exceptions

      protected List<PbadException> exceptions
      Lista de erros de validação
    • ocspRespList

      protected List<org.bouncycastle.cert.ocsp.OCSPResp> ocspRespList
      Repositório de respostas OCSP
    • signerCert

      protected X509Certificate signerCert
      Certificado do assinante
    • proofOfExistence

      protected boolean proofOfExistence
      Define se a referência de tempo foi definida com prova de existência
    • component

      protected CadesSignatureComponent component
      Componente de assinautra CAdES
  • Constructor Details

    • AbstractVerifier

      public AbstractVerifier()
  • Method Details

    • initialize

      public void initialize​(CadesSignature signature) throws SignatureVerifierException
      Método para inicializar um CAdES Verifier
      Throws:
      SignatureVerifierException
    • initialize

      public void initialize​(CadesSignature signature, SignatureVerifierParams param) throws SignatureVerifierException
      Método para inicializar um CAdES Verifier
      Throws:
      SignatureVerifierException
    • initialize

      public void initialize​(CadesSignature signature, boolean isTimeStamp) throws SignatureVerifierException
      Inicializa os valores de atributos da classe
      Parameters:
      signature - A assinatura a ser verificada
      isTimeStamp - Indica se a assinatura a ser verificada é um carimbo de tempo
      Throws:
      SignatureVerifierException
    • initialize

      public void initialize​(CadesSignature signature, SignatureVerifierParams params, boolean isTimeStamp) throws SignatureVerifierException
      Inicializa os valores de atributos da classe
      Parameters:
      signature - A assinatura a ser verificada
      params - Os parâmetros de validação
      isTimeStamp - Indica se a assinatura a ser verificada é um carimbo de tempo
      Throws:
      SignatureVerifierException
    • verifyAttributesInMandatedList

      public void verifyAttributesInMandatedList​(List<PbadException> warnings, List<PbadException> exceptions, List<String> signatureAttributeList, List<String> mandatedAttributeList, List<String> attributesToExclude, SignatureReport sigReport)
      Os atributos da assinatura que tem o seu identificador presente na lista de atributos obrigatórios passados aqui serão verificados. Na lista errors serão retornados os erros que comprometem a assinatura, já na lista de warnings seram retornados os erros que aconteceram mas não infuenciam na validade da assinatura. Os atributos que tem seu identificador presente na lista attributesToExclude não serão verificados mesmo que presentes na lista de atributos obrigatórios. O resultado da verificação será adicionado ao relatório dado.
      Parameters:
      warnings - - Lista de alertas. Irá ser atualizada com a lista de erros, que poderão ocorrer ao validar a assinatura, mas que não a tornam inválida
      exceptions - Lista de erros da verificação. Será atualizada com a lista de erros que tornam a assinatura inválida
      signatureAttributeList - Lista de atributos presentes na assinatura que devem ser levados em conta
      mandatedAttributeList - Lista de atributos que devem ser considerados obrigatórios
      attributesToExclude - Lista de atributos que devem ser desconsiderados
      sigReport - O relatório da verificação da assinatura
    • verifyOnlyUnmandatedAttributes

      public void verifyOnlyUnmandatedAttributes​(List<PbadException> warnings, List<PbadException> exceptions, List<String> signatureAttributeList, List<String> mandatedAttributeList, List<String> optionalAttributeList, List<String> attributesToExclude, SignatureReport sigReport)
      Verifica apenas os atributos que não são obrigatórios segundo a lista passada. A lista de atributos que não devem ser verificados mesmo que não sejam obrigatórios será levada em conta.
      Parameters:
      signatureAttributeList - Lista de atributos da assinatura
      mandatedAttributeList - Lista de atributo obrigatórios, de acordo com a política de assinatura
      attributesToExclude - Atributos a serem ignorados
    • buildCertPath

      protected void buildCertPath​(Set<TrustAnchor> trustAnchors) throws SignerCertificationPathException, SignatureAttributeException
      Constrói o caminho de certificação do signatário.
      Parameters:
      trustAnchors - As âncoras de confiança do caminho
      Throws:
      SignerCertificationPathException - Exceção em caso de erro na construção do caminho de certificação
      SignatureAttributeException
    • setSignerCert

      protected void setSignerCert() throws SignerCertificationPathException
      Define o certificado do signatário
      Throws:
      SignerCertificationPathException - Exceção em caso de erro durante a busca pelo certificado
    • getSignature

      public CadesSignature getSignature()
      Retorna a assinatura que foi passada na construção da classe.
      Returns:
      A assinatura CAdES
    • getTimeReference

      public Time getTimeReference()
      Retorna o tempo em que o carimbo do tempo foi criado pela ACT. Caso nenhum carimbo do tempo existir na assinatura, retorna-se o tempo atual.
      Returns:
      Horário em que o camrimbo do tempo foi criado pela ACT ou horário atual.
    • getTSTimeReference

      public Time getTSTimeReference()
      Retorna o tempo em que o carimbo do tempo foi criado pela ACT. Caso nenhum carimbo do tempo existir na assinatura, retorna-se nulo.
      Returns:
      Horário em que o camrimbo do tempo foi criado pela ACT.
    • getCurrentTimeReference

      public Time getCurrentTimeReference()
      Retorna o tempo atual definido pelo verificador. Caso o tempo atual não ter sido definido previamente, retorna-se nulo.
      Returns:
      Horário de tempo atual.
    • setCurrentTimeReference

      public void setCurrentTimeReference​(Time currentTimeReference)
      Define o tempo atual à ser utilizado pelo verificador.
    • hasProofOfExistence

      public boolean hasProofOfExistence()
      Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.
      Returns:
      Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.
    • setTimeReference

      public void setTimeReference​(Time timeReference)
      Atribui uma refêrencia de tempo criado por alguma ACT confiável. Esta referência será utilizada na validação dos caminhos de certificação. Portanto, deve-se atribuir somente referências de tempo válidas, que foneça prova de existência à assinatura.
      Parameters:
      timeReference - O horário criado por alguma ACT confiável que será usado na validação do caminho de certificação
    • getOcspList

      public List<org.bouncycastle.cert.ocsp.OCSPResp> getOcspList()
      Retorna uma lista de respostas OCSP conhecida pelo verificador
      Returns:
      A lista de respostas OCSP
    • getOcspServerCertificate

      public X509Certificate getOcspServerCertificate()
      Retorna o certificado do servidor OCSP
      Returns:
      O certificado do servidor OCSP
    • setOcsps

      public void setOcsps​(List<org.bouncycastle.cert.ocsp.OCSPResp> ocsps)
      Informa a lista de OCSPs que devem ser usadas pelo verificador
      Parameters:
      ocsps - A lista de respostas OCSP
    • setOcspServerCertificate

      public void setOcspServerCertificate​(X509Certificate ocspServerCertificate)
      Define o certificado do servidor OCSP
      Parameters:
      ocspServerCertificate - O certificado do servidor
    • getTimeStampPriorityList

      public List<String> getTimeStampPriorityList()
      Retorna a lista de prioridades dos carimbos do tempo
      Returns:
      A lista de prioridades dos carimbos
    • getParams

      public SignatureVerifierParams getParams()
      Retorna os paramêtros passados para esse verificador
      Returns:
      Os parâmetros do verificador
    • getCadesSignatureComponent

      public CadesSignatureComponent getCadesSignatureComponent()
      Retorna o componente de assinaturas CAdES
      Returns:
      O componente de assinaturas CAdES
    • verify

      public abstract boolean verify​(SignatureReport report) throws PbadException, VerificationException
      Verifica apenas os atributos obrigatórios e valida a assinatura. Independente do resultado desse método, o método getSignatureValidationErrors deve ser chamado.
      Parameters:
      report - O relatório de verificação da assinatura
      Returns:
      Indica se a assinatura é válida
      Throws:
      PbadException - Exceção em caso de erro durante a validação
      VerificationException - Exceção em caso de erro durante a validação
    • getSignaturePolicy

      public abstract SignaturePolicyInterface getSignaturePolicy()
      Obtém a política de assinatura que define a verificação desse verificador
      Returns:
      A política de assinatura
    • getCertPath

      public CertPath getCertPath()
      Retorna o caminho de certificação
      Returns:
      O caminho de certificação
    • getSignerCert

      public X509Certificate getSignerCert()
      Retorna o certificado do assinante
      Returns:
      O certificado do assinante
    • isTimeStamp

      public boolean isTimeStamp()
      Informa se a assinatura a ser verificada é um carimbo de tempo
      Returns:
      Indica se a assinatura a ser verificada é um carimbo
    • setComponent

      public void setComponent​(CadesSignatureComponent component)
      Define o componente de assinaturas cades.
      Parameters:
      component - Componente de assinatura cades.
    • checkTimeStampAlgorithmsConstraints

      protected void checkTimeStampAlgorithmsConstraints​(SignatureReport sigReport, List<PbadException> errors)
      Verifica se os algoritmos utilizados para assinatura e resumo criptográfico de carimbos de tempo são válidos de acordo com o DOC ICP-01.01. Caso sejam inválidos, um erro é adicionado ao relatório de assinatura
      Parameters:
      sigReport - Relatório do carimbo de tempo
      errors - Lista de exceções
    • verifyConformity

      protected void verifyConformity​(CertPath certPath, boolean advanced, SignatureReport report)
      Verifica se a assinatura pertence a ICP-Brasil e adiciona a InitialSignatureReport a legislação ou âncoro de confiança que é respeitada pelo certificado do assinante
      Parameters:
      certPath - caminho de certificação
      advanced - se a assinatura é avançada