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

public class XadesVerifier
extends Object
implements Verifier
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()
      Specified by:
      getContainerBytes in interface Verifier
    • signatureContainerChanged

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

      public Certificate getSignerCertificate​(XadesSignature sig)
      Tenta encontrar o certificado do assinante, buscando primeiro no KeyInfo e depois no atributo SiningCertificate.
      Parameters:
      sig - Assinatura contendo KeyInfo ou SigningCertificate
      Returns:
      Certificado do assinante
    • addValidationData

      public void addValidationData​(XadesSignature xadesSignature)
      Adiciona novos certificados e CRLs ao SignatureIdentityInformation da assinatura de acordo com a presença dos atributos CertificateValues e RevocationValues
      Parameters:
      xadesSignature - A assinatura XAdES
    • selectSignatures

      public void selectSignatures​(boolean isComplete) 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
      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()
      Specified by:
      getComponent in interface Verifier
    • getAvailableAttributes

      public List<String> getAvailableAttributes()
      Retorna os atributos que podem ser inseridos na assinatura selecionada
      Specified by:
      getAvailableAttributes in interface Verifier
      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
      Specified by:
      clear in interface Verifier
      Returns:
      Indica se a limpeza foi bem sucedida
    • report

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

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

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

      public void 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
      Specified by:
      needSignedContent in interface Verifier
      Returns:
      Indica se a assinatura possui conteúdo destacado
    • getMandatedAttributes

      public List<String> getMandatedAttributes()
      Retorna uma lista de atributos obrigatórios
      Specified by:
      getMandatedAttributes in interface Verifier
      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
      Specified by:
      supports in interface Verifier
      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)
      Specified by:
      getCertPath in interface Verifier
    • 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.
      Specified by:
      hasSignedData in interface Verifier
      Returns:
      true se os dados assinados estiverem presentes ou se o tipo da assinatura não for detached; false caso contrário.