java.lang.Object
br.ufsc.labsec.signature.AbstractSignatureVerifier<XadesSignature>
br.ufsc.labsec.signature.conformanceVerifier.xades.XadesVerifier
All Implemented Interfaces:
Verifier

public class XadesVerifier
extends AbstractSignatureVerifier<XadesSignature>
Esta classe implementa os métodos para verificação de um documento assinado XAdES. Implementa Verifier. Esta classe implementa os métodos para verificação de um documento assinado XAdES. Estende AbstractXadesSigner e implementa Verifier.
  • Field Details

  • Constructor Details

    • XadesVerifier

      public XadesVerifier​(XadesSignatureComponent xadesSignatureComponent)
      Construtor
      Parameters:
      xadesSignatureComponent - Componente de assinatura XAdES
  • Method Details

    • getSelectedSignature

      public XadesSignature getSelectedSignature()
      Retorna a assinatura selecionada
      Returns:
      A assinatura XAdES selecionada
    • getContainerBytes

      public byte[] getContainerBytes()
    • signatureContainerChanged

      public boolean signatureContainerChanged()
      Description copied from interface: Verifier
      Verifica se o container de assinatura foi alterado para verificação
      Returns:
      true se o container de assinatura foi alterado, false caso contrário
    • getSigningCertificate

      public X509Certificate getSigningCertificate​(XadesSignature sig)
      Tenta encontrar o certificado do assinante, buscando primeiro no KeyInfo e depois no atributo SiningCertificate.
      Specified by:
      getSigningCertificate in class AbstractSignatureVerifier<XadesSignature>
      Parameters:
      sig - Assinatura contendo KeyInfo ou SigningCertificate
      Returns:
      Certificado do assinante
    • addValidationData

      public void addValidationData​(XadesSignature xadesSignature)
      Description copied from class: AbstractSignatureVerifier
      Captura e adiciona artefatos presentes na assinatura (como certificados e CRLs) ao SignatureIdentityInformation da assinatura conforme a presença dos atributos CertificateValues e RevocationValues
      Specified by:
      addValidationData in class AbstractSignatureVerifier<XadesSignature>
      Parameters:
      xadesSignature - A assinatura
    • selectSignatures

      public void selectSignatures​(boolean isComplete, boolean bypassAddValidationData) throws InterruptedException
      Carrega as informações das assinaturas presentes no contâiner XAdEs
      Parameters:
      isComplete - Se o relatório deve ser completo ou não
      bypassAddValidationData - Se deve ser realizada a captura e adição de artefatos da assinatura ao seu SignatureIdentityInformation durante a execução deste método ou não.
      Throws:
      InterruptedException
    • getCertificateValues

      public List<Certificate> getCertificateValues​(XadesSignature xadesSignature)
      Retorna a lista de certificados do atributo CertificateValues
      Parameters:
      xadesSignature - A assinatura XAdES
      Returns:
      A lista de certificados presente no atributo da assinatura CertificateValues
    • getComponent

      public XadesSignatureComponent getComponent()
    • getAvailableAttributes

      public List<String> getAvailableAttributes()
      Retorna os atributos que podem ser inseridos na assinatura selecionada
      Returns:
      Os atributos que podem ser inseridos na assinatura
    • getPolicyType

      public Profile.AdESType getPolicyType()
      Retorna o tipo da política de assinatura
      Returns:
      O tipo da política
    • setPolicyType

      public void setPolicyType​(Profile.AdESType policyType)
      Atribue o tipo da política de assinatura
      Parameters:
      policyType - O tipo da política
    • clear

      public boolean clear()
      Limpa as informações do verificador
      Returns:
      Indica se a limpeza foi bem sucedida
    • report

      public void report​(Report report, SignatureContainer<XadesSignature> signatureContainer) throws InterruptedException
      Constrói um objeto Report com as informações da verificação
      Specified by:
      report in class AbstractSignatureVerifier<XadesSignature>
      Parameters:
      report - O relatório a ser preenchido
      signatureContainer - Contêiner com as assinaturas
      Throws:
      InterruptedException
    • report

      public void report​(Report report, SignatureBytesWrapper wrapper) throws InterruptedException, VerificationException
      Constrói um objeto Report com as informações da verificação
      Parameters:
      report - O relatório a ser preenchido
      wrapper - Wrapper com a assinatura e o conteúdo assinado
      Throws:
      InterruptedException
      VerificationException
    • getSigningCertificateSigReport

      public X509Certificate getSigningCertificateSigReport​(SignatureReport sigReport)
      Busca certificado do assinante de um relatório de assinatura
      Parameters:
      sigReport - Relatório da assinatura que deseja descobrir o assinante
      Returns:
      Certificado do assinate
    • selectTarget

      public XadesSignatureContainer selectTarget​(SignatureBytesWrapper wrapper) throws VerificationException
      Throws:
      VerificationException
    • selectTarget

      public XadesSignatureContainer selectTarget​(byte[] target, byte[] content) throws VerificationException
      Inicializa os bytes do documento XAdES assinado
      Parameters:
      target - Os bytes do documento XAdES assinado
      content - Os bytes do conteúdo assinado no documento
      Throws:
      VerificationException - Exceção caso os bytes não sejam uma assinatura válida
    • addCounterSignatureToSignatureReport

      public void addCounterSignatureToSignatureReport​(SignatureReport signatureReport)
      Adiciona o relatório de contra-assinatura passado ao relatório da assinatura
      Parameters:
      signatureReport - O relatório de contra-assinatura a ser adicionado
    • needSignedContent

      public boolean needSignedContent()
      Verifica se a assinatura possui conteúdo destacado
      Returns:
      Indica se a assinatura possui conteúdo destacado
    • getMandatedAttributes

      public List<String> getMandatedAttributes()
      Retorna uma lista de atributos obrigatórios
      Returns:
      Uma lista de atributos obrigatórios
    • supports

      public boolean supports​(byte[] sig, byte[] detached) throws SignatureNotICPBrException
      Verifica se o documento assinado é uma assinatura XAdES
      Parameters:
      sig - Os bytes do documento assinado
      detached - Os bytes do arquivo destacado
      Returns:
      Indica se o documento assinado é uma assinatura XAdES
      Throws:
      SignatureNotICPBrException - Exceção caso a assinatura não seja feita com um certificado ICP-Brasil
    • getCertPath

      public CertPath getCertPath​(Certificate certificate)
    • validSignature

      protected boolean validSignature​(XadesSignature s) throws SignatureNotICPBrException
      Verifica se a assinatura foi feita com um certificado ICP-Brasil e se é uma assinatura XAdES
      Parameters:
      s - A assinatura a ser verificada
      Returns:
      Indica se a assinatura é uma assinatura XAdES e ICP-Brasil
      Throws:
      SignatureNotICPBrException - Exceção caso a assinatura não seja feita com um certificado ICP-Brasil
    • getSignatureContainer

      public XadesSignatureContainer getSignatureContainer()
      Retorna o contâiner das assinaturas
      Returns:
      Contâiner das assinaturas
    • hasSignedData

      public boolean hasSignedData()
      Verifica se a assinatura selecionada possui dados assinados.
      Returns:
      true se os dados assinados estiverem presentes ou se o tipo da assinatura não for detached; false caso contrário.