Class AbstractVerifier

java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.xades.AbstractVerifier
Direct Known Subclasses:
SignatureVerifier

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

    • mandatedAttributes

      protected AttributeList mandatedAttributes
    • optionalAttributes

      protected AttributeList optionalAttributes
    • prohibitedAttributes

      protected AttributeList prohibitedAttributes
    • signature

      protected XadesSignature signature
      Assinatura a ser verificada.
    • certStore

      protected CertStore certStore
      Repositório de certificados que serão usados na validação
    • 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 Certificate signerCert
      Certificado do assinante
    • component

      protected XadesSignatureComponent component
      Componente de assinatura XAdES
  • Constructor Details

    • AbstractVerifier

      public AbstractVerifier()
  • Method Details

    • initialize

      public void initialize​(XadesSignature signature, SignatureVerifierParams params) throws SignatureVerifierException
      Inicializa o Verifier de acodo com os parâmetros
      Parameters:
      signature - A assinatura a ser verificada
      params - Os parâmetros de verificação
      Throws:
      SignatureVerifierException - Exceção caso a assinatura seja nula
    • verifyAttributesInMandatedList

      protected void verifyAttributesInMandatedList​(List<PbadException> warnings, List<String> signatureAttributeList, 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

      Parameters:
      warnings - será atualizada com a lista de erros, que poderão ocorrer ao validar a assinatura, mas que não a tornam inválida
      signatureAttributeList - lista de atributos presentes na assinatura que devem ser levados em conta
      attributesToExclude - lista de atributos que devem ser desconsiderados
      sigReport - o relatório de verificação
    • verifyOnlyUnmandatedAttributes

      protected void verifyOnlyUnmandatedAttributes​(List<String> signatureAttributeList, 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
      attributesToExclude - atributos a serem ignorados
    • checkAcceptablePolicies

      protected void checkAcceptablePolicies​(CertificateTrustPoint trustPoint) throws CertificationPathException
      Executa o algoritmo responsável pela verificação das políticas de certificação aceitáveis
      Parameters:
      trustPoint - certificado da âncora de confiança
      Throws:
      CertificationPathException - exceção em caso de erro no caminho de certificação
    • setSignerCert

      protected void setSignerCert() throws SignerCertificationPathException
      Define o certificado do signatário
      Throws:
      SignerCertificationPathException - exceção em caso de erro ao obter o certificado do assinante
    • getCertStore

      public CertStore getCertStore()
      Retorna o repositório de certificados conhecido pelo verificador
      Returns:
      CertStore repositório de certificados conhecido pelo verificador
    • getSignature

      public XadesSignature getSignature()
      Retorna a assinatura que foi passada na construção da classe
      Returns:
      a assinatura que é verificada
    • getTimeReference

      public Time getTimeReference()
      Retorna o tempo em que o carimbo do tempo foi criado pela ACT ou, caso o carimbo do tempo não existir no conjunto de atributos usados na assinatura, então retorna o tempo atual.
      Returns:
      Time tempo em que o camrimbo do tempo foi criado pela ACT
    • getCurrentTimeReference

      public Time getCurrentTimeReference()
    • getTSTimeReference

      public Time getTSTimeReference()
    • hasProofOfExistence

      public boolean hasProofOfExistence()
    • setTimeReference

      public void setTimeReference​(Time timeReference)
      Atribue uma refêrencia de tempo que será utilizada no algoritmo de validação dos caminhos de certificação
      Parameters:
      timeReference - tempo que será usado como referência para a validação do caminho de certificação
    • setCurrentTimeReference

      public void setCurrentTimeReference​(Time currentTimeReference)
    • setTemporaryTimeReference

      public void setTemporaryTimeReference​(Time timeReference)
      Atribue uma refêrencia de tempo que será utilizada no algoritmo de validação dos caminho de certificação caso uma assinatura RT esteja valida.
      Parameters:
      timeReference - tempo que será usado como referência para a validação do caminho de certificação
    • getSignerCertPath

      public CertPath getSignerCertPath()
      Retorna o caminho de certificação do assinante
      Returns:
      o caminho de certificação do assinante
    • getOcspList

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

      public X509Certificate getOcspServerCertificate()
      Obtém certificado do servidor OCSP
      Returns:
      o certificado do servidor OCSP
    • setCertStore

      public void setCertStore​(CertStore certStore)
      Atribue um repositório de certificados
      Parameters:
      certStore - o repositório de certificados
    • 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 OCSPs que devem ser utilizadas
    • setOcspServerCertificate

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

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

      public Time getTemporaryTimeReference()
      Retorna o tempo em que o carimbo do tempo foi criado pela ACT ou caso o carimbo do tempo não existir no conjunto de atributos usados na assinatura, então retorna o tempo atual.
      Returns:
      Time tempo em que o camrimbo do tempo foi criado pela ACT
    • getParams

      public SignatureVerifierParams getParams()
      Retorna os paramêtros passados para esse verificador
      Returns:
      os paramêtros de inicialização
    • getXadesSignatureComponent

      public XadesSignatureComponent getXadesSignatureComponent()
      Retorna o componente de assinatura XAdES
      Returns:
      o componente de assinatura XAdES
    • getSignerCertificate

      public Certificate getSignerCertificate()
      Retorna o certificado do assinante
      Returns:
      o certificado do assinante
    • verify

      public abstract boolean verify​(SignatureReport sigReport)
      Verifica apenas os atributos obrigatórios e valida a assinatura.

      Independente do resultado desse método, o método getSignatureValidationErrors deve ser chamado.

      Parameters:
      sigReport - o relatório de verificação de uma assinatura
      Returns:
      indica se a assinatura é válida
    • getSignaturePolicy

      public abstract SignaturePolicyInterface getSignaturePolicy()
      Retorna a política de assinatura utilizada na assinatura
      Returns:
      a política de assinatura utilizada
    • checkAlgorithmsConstraints

      protected void checkAlgorithmsConstraints​(SignatureReport sigReport, List<PbadException> errors)
      Verifica se os algoritmos utilizados para assinatura e resumo criptográfico são válidos conforme o DOC ICP-01.01. Caso sejam inválidos, um erro é adicionado ao relatório de assinatura.
      Parameters:
      sigReport - Relatório da assinatura
      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