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

public class XadesVerifier
extends AbstractXadesSigner
implements 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
    • 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
    • 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
    • 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