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
    • getUpdatedSignatureBytes

      public byte[] getUpdatedSignatureBytes()
      Specified by:
      getUpdatedSignatureBytes in interface Verifier
    • 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
    • addMissingAttributes

      public void addMissingAttributes​(SignatureVerifier verifier, XadesSignature verifiedSignature, XadesSignatureComponent signatureComponent) throws SignatureAttributeException, EncodingException, IOException
      Adiciona os atributos ausentes obrigatórios à assinatura selecionada. Caso os atributos ausentes sejam adicionados, a assinatura atualizada será armazenada em updatedSignatureBytes.
      Parameters:
      verifier - Verificador da assinatura.
      verifiedSignature - Assinatura XAdES verificada.
      signatureComponent - Componente de assinatura XAdES.
      Throws:
      SignatureAttributeException - Exceção caso haja erro nos atributos da assinatura.
      EncodingException - Exceção caso haja erro na codificação.
      IOException - Exceção caso haja erro na manipulação de arquivos.
    • generateFileToBeSigned

      public FileToBeSigned<?> generateFileToBeSigned​(XadesSignature verifiedSignature)
      Gera um objeto FileToBeSigned com as informações necessárias.
      Parameters:
      verifiedSignature - Assinatura XAdES verificada.
      Returns:
      Um objeto FileToBeSigned contendo informações da assinatura e arquivo.
    • 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.