java.lang.Object
br.ufsc.labsec.signature.AbstractSignatureVerifier<JadesSignature>
br.ufsc.labsec.signature.conformanceVerifier.jades.JadesVerifier
All Implemented Interfaces:
Verifier

public class JadesVerifier
extends AbstractSignatureVerifier<JadesSignature>
Esta classe implementa os métodos para verificação de uma assinatura JAdES. Estende Verifier.
  • Field Details

    • certPath

      protected CertPath certPath
      Caminho de certificação do assinante
  • Constructor Details

    • JadesVerifier

      public JadesVerifier​(JadesSignatureComponent jadesSignatureComponent)
      Construtor
      Parameters:
      jadesSignatureComponent - Componente de assinatura JAdES
  • Method Details

    • getJadesSignatureComponent

      public JadesSignatureComponent getJadesSignatureComponent()
      Obtém o componente de assinaturas JAdES
      Returns:
      Componente de assinatura JAdES
    • selectTarget

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

      public void selectSignatures​(boolean isComplete, boolean bypassAddValidationData)
      Carrega as informações das assinaturas presentes no contâiner JAdES
      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.
    • 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
      report - O relatório de verificação da assinatura
    • getOrderedTimeStamps

      public List<TstToken> getOrderedTimeStamps() throws SignatureAttributeException
      Retorna uma lista de atributos de carimbo do tempo ordenada por identificador, de acordo com o especificado na lista de prioridade. No caso de a lista conter mais do que um carimbo com o mesmo identificador, eles são ordenado por tempo. Na ordenação por tempo, é considerado que o tempo mais recente (ou seja, maior) tem maior prioridade.
      Returns:
      A lista de carimbo de tempo ordenada
      Throws:
      SignatureAttributeException
    • verifyAttributesInMandatedList

      protected boolean verifyAttributesInMandatedList​(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:
      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 boolean 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
      sigReport -
    • getAttributeInstancesList

      public List<SignatureAttribute<JadesAttrCommonStruct>> getAttributeInstancesList​(List<String> attributeClasses)
      Retorna a lista de atributos na assinatura
      Returns:
      lista de atributos presente na assinatura
    • getAttribute

      Retorna Retorna um atributo na assinatura, se presente
      Returns:
      Atributo requisitado presente na assinatura
      Throws:
      SignatureAttributeException - quando o atributo não está presente na assinatura ou mal codificado
    • getAttribute

      public SignatureAttribute getAttribute​(JadesSignature signature, Class<? extends SignatureAttribute<JadesAttrCommonStruct>> attributeClass) throws SignatureAttributeException
      Retorna Retorna um atributo na assinatura, se presente
      Returns:
      Atributo requisitado presente na assinatura
      Throws:
      SignatureAttributeException - quando o atributo não está presente na assinatura ou mal codificado
    • getComponent

      public Component getComponent()
    • getAvailableAttributes

      public List<String> getAvailableAttributes()
      Retorna os atributos das assinaturas
      Returns:
      Os atributos das assinaturas
    • 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
    • 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<JadesSignature> signatureContainer) throws VerificationException
      Cria um objeto Report com as informações da verificação
      Specified by:
      report in class AbstractSignatureVerifier<JadesSignature>
      Parameters:
      report - O relatório a ser preenchido
      signatureContainer - Contêiner com as assinaturas
      Throws:
      VerificationException - Exceção caso haja algum problema na verificação
    • report

      public void report​(Report report, SignatureBytesWrapper wrapper) throws VerificationException
      Throws:
      VerificationException
    • 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
    • addValidationData

      public void addValidationData​(JadesSignature signature)
      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<JadesSignature>
      Parameters:
      signature - A assinatura
    • addCertificatesToValidation

      protected void addCertificatesToValidation​(SignatureReport sigReport, Certificate cert) throws SignatureNotICPBrException
      Realiza a verificação dos certificados e CRLs do caminho de certificação da assinatura e adiciona os resultados ao relatório da assinatura
      Parameters:
      sigReport - O relatório da verificação da assinatura
      cert - O certificado do assinante
      Throws:
      AIAException - Exceção em caso de erro ao obter o caminho de certificação
      SignatureNotICPBrException
    • supports

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

      public CertPath getCertPath​(Certificate certificate)
      Retorna o caminho de certificação do certificado dado
      Parameters:
      certificate - O certificado usado para gerar o caminho de certificação
      Returns:
      O caminho de certificação do certificado dado
    • 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​(JadesSignature sig)
      Busca o certificado do assinante
      Specified by:
      getSigningCertificate in class AbstractSignatureVerifier<JadesSignature>
      Parameters:
      sig - A assinatura a ser verificada
      Returns:
      O certificado do assinante
    • checkCertPath

      public boolean checkCertPath​(X509Certificate certificate)
      Verifica se é possível criar o caminho de certificação da assinatura
      Parameters:
      certificate - Certificado utilizado na assinatura
      Returns:
      Indica se o caminho de certificação foi criado com sucesso
    • setPolicyType

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

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

      public JadesSignature getSelectedSignature()
      Retorna a assinatura no documento selecionada para verificação
      Returns:
      A assinatura selecionada para verificação
    • getSignaturePolicy

      public SignaturePolicyInterface getSignaturePolicy()
      Retorna a Política de Assinatura da assinatura passada na construção desta classe.
      Returns:
      A política de assinatura
    • 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
      Overrides:
      setTimeReference in class AbstractSignatureVerifier<JadesSignature>
      Parameters:
      timeReference - tempo que será usado como referência para a validação do caminho de certificação
    • getTSTimeReference

      public Time getTSTimeReference()
      Retorna o tempo em que o carimbo do tempo foi criado pela ACT. Caso nenhum carimbo do tempo existir na assinatura, retorna-se nulo.
      Returns:
      Horário em que o camrimbo do tempo foi criado pela ACT.
    • getTimeReference

      public Time getTimeReference()
      Retorna o tempo em que o carimbo do tempo foi criado pela ACT. Caso nenhum carimbo do tempo existir na assinatura, retorna-se o tempo atual.
      Overrides:
      getTimeReference in class AbstractSignatureVerifier<JadesSignature>
      Returns:
      Horário em que o carimbo do tempo foi criado pela ACT ou horário atual.
    • hasProofOfExistence

      public boolean hasProofOfExistence()
      Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.
      Returns:
      Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.
    • getTimeStampPriorityList

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

      public CertPath getCertPath()
      Retorna o caminho de certificação
      Returns:
      O caminho de certificação
    • getPaReport

      public PaReport getPaReport()
      Retorna o relatório da política de assinatura
      Returns:
      O relatório da política de assinatura
      Throws:
      SignatureAttributeException - Exceção em caso de erro no atributo
    • checkSignaturePolicyPeriod

      protected boolean checkSignaturePolicyPeriod()
      Verifica se a assinatura foi feita dentro do período válido para o uso de políticas.
      Returns:
      Indica se a assinatura está dentro do período válido para o uso de políticas
    • addProcessedCriticalHeader

      public void addProcessedCriticalHeader​(String attr)
      Adiciona um atributo aos atributos processados que são críticos
      Parameters:
      attr - Os atributos processados
    • hasSignedData

      public boolean hasSignedData()
      Verifica se a assinatura selecionada possui dados assinados. Retorna true se a assinatura não for do tipo detached, ou se for do tipo detached e houver dados assinados (signedData) disponíveis. Caso a assinatura seja detached e não haja dados assinados, retorna false.
      Returns:
      true se há dados assinados ou se a assinatura não for detached, caso contrário false.