java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.jades.JadesSignature
All Implemented Interfaces:
Signature<JadesAttrCommonStruct>, SignatureObject
Direct Known Subclasses:
CounterSignature

public class JadesSignature
extends Object
implements Signature<JadesAttrCommonStruct>, SignatureObject
Esta classe representa uma assinatura JAdES. Implementa Signature.
  • Field Details

    • payloadInBase64Url

      public final boolean payloadInBase64Url
      Indica se é necessário codificar alguns elementos em Base64Url durante a verificação. Isto é definido com o header 'b64'.
  • Constructor Details

    • JadesSignature

      public JadesSignature​(String encodedProtectedHeader, String encodedSignature, org.json.JSONObject unprotectedHeader, JadesSignatureContainer container) throws SignatureException
      Construtor de assinatura e com atributos não assinados
      Parameters:
      encodedProtectedHeader - Protected headers codficados
      encodedSignature - Valor da assinatura codificado
      unprotectedHeader - Unprotected headers
      container - Contêiner de assinatura JAdES
      Throws:
      SignatureException
    • JadesSignature

      public JadesSignature​(String encodedProtectedHeader, String encodedSignature, JadesSignatureContainer container) throws SignatureException
      Construtor de assinatura e sem atributos não assinados
      Parameters:
      encodedProtectedHeader - Protected headers codficados
      encodedSignature - Valor da assinatura codificado
      container - Contêiner de assinatura JAdES
      Throws:
      SignatureException
  • Method Details

    • getProtectedHeaderValue

      public Object getProtectedHeaderValue​(String headerName)
      Retorna o valor de um protected headers através do nome
      Parameters:
      headerName - O nome do header a ser buscado
      Returns:
      O valor do header
    • getUnprotectedHeaderValue

      public Object getUnprotectedHeaderValue​(String headerName)
      Retorna o valor de um unprotected headers através do nome
      Parameters:
      headerName - O nome do header a ser buscado
      Returns:
      O valor do header
    • verifyIntegrity

      public void verifyIntegrity​(X509Certificate signerCertificate, SignatureReport report, boolean isComplete)
      Valida a integridade da assinatura
      Parameters:
      report - O relatório de verificação da assinatura
    • getCertificateChain

      public List<X509Certificate> getCertificateChain()
      Busca por headers com os valores dos certificados. Estes headers são "x5c" e "x5u", que podem conter toda a cadeia de certificados ou apenas o certificado do assinante.
      Returns:
      A cadeia de certificados (pode conter apenas o certificado do assinante)
    • getSignedAttributeList

      public List<String> getSignedAttributeList()
    • getUnsignedAttributeList

      public List<String> getUnsignedAttributeList()
    • getAttributeList

      public List<String> getAttributeList()
      Retorna a lista de Strings com os nomes dos atributos presentes na assinatura
      Specified by:
      getAttributeList in interface Signature<JadesAttrCommonStruct>
      Returns:
      lista de Strings com os nomes dos atributos presentes na assinatura
    • getEncodedAttribute

      public JadesAttrCommonStruct getEncodedAttribute​(String identifier, Integer index) throws SignatureAttributeNotFoundException
      Retorna o atributo correspondente ao identificador ou índice dado
      Specified by:
      getEncodedAttribute in interface Signature<JadesAttrCommonStruct>
      Parameters:
      identifier - o identificador do atributo
      index - o índice do atributo
      Returns:
      o elemento XML do atributo na assinatura
      Throws:
      SignatureAttributeNotFoundException
    • containsUnprotectedHeaders

      public boolean containsUnprotectedHeaders()
      Verifica a presença de unprotected headers na assinatura
      Returns:
      Indica se há unprotected headers na assinatura
    • getEncodedSignature

      public String getEncodedSignature()
      Retorna o valor codificado da assinatura
      Returns:
      O valor codificado da assinatura
    • getEncodedProtectedHeader

      public String getEncodedProtectedHeader()
      Retorna o valor codificado dos protected headers
      Returns:
      O valor codificado dos protected headers
    • getUnprotectedHeaders

      public org.json.JSONObject getUnprotectedHeaders()
      Retorna o valor do unprotected headers como JSONObject
      Returns:
      O JSONObject do unprotected headers
    • getEncodedUnprotectedHeaders

      public org.json.JSONObject getEncodedUnprotectedHeaders()
      Retorna o valor do unprotected headers como JSONObject como um header 'etsiU'
      Returns:
      O JSONObject do unprotected headers como entrada 'etsiU'
    • getProtectedHeaders

      public org.json.JSONObject getProtectedHeaders()
      Retorna o valor do protected headers como JSONObject
      Returns:
      O JSONObject do protected headers
    • getSignatureValueHash

      public byte[] getSignatureValueHash​(String hashAlgorithmId)
      Retorna o valor de hash da assinatura
      Parameters:
      hashAlgorithmId - O algoritmo a ser utilizado para o cálculo de hash
      Returns:
      Array de bytes com valor de hash da assinatura
    • getRefsOnlyTimeStampHashValue

      public byte[] getRefsOnlyTimeStampHashValue​(String hashAlgorithmId)
      Retorna o hash concatenado das referências do certificado com o hash das referências de revogação.
      Parameters:
      hashAlgorithmId - O algoritmo a ser utilizado para o cálculo de hash
      Returns:
      Array de bytes com valor de hash
    • getSigAndRefsHashValue

      public byte[] getSigAndRefsHashValue​(String hashAlgorithmId) throws PbadException
      Retorna o hash concatenado da assinatura, com o hash do carimbo do tempo, o hash das referências do certificado e com o hash das referências de revogação.
      Parameters:
      hashAlgorithmId - O algoritmo a ser utilizado para o cálculo de hash
      Returns:
      Array de bytes com valor de hash
      Throws:
      PbadException - Exceção em caso de erro no cálculo
    • getArchiveTimeStampHashValue

      public byte[] getArchiveTimeStampHashValue​(String hashAlgorithmId) throws PbadException, IOException
      Calcula o valor de hash do carimbo de tempo de arquivamento
      Parameters:
      hashAlgorithmId - O algoritmo a ser utilizado no cálculo
      Returns:
      O valor de hash do carimbo
      Throws:
      PbadException
      IOException
    • getPayloadFromSigDHeader

      public String getPayloadFromSigDHeader() throws SignatureAttributeException, IOException
      Retorna o valor do payload abtido por processamento do header sigD
      Returns:
      Throws:
      SignatureAttributeException
      IOException
    • getSignerDataTimeStampHashValue

      public byte[] getSignerDataTimeStampHashValue​(String hashAlgorithmId) throws PbadException, IOException
      Calcula o valor de hash do carimbo de tempo
      Parameters:
      hashAlgorithmId - O algoritmo a ser utilizado no cálculo
      Returns:
      O valor de hash do carimbo
      Throws:
      PbadException
      IOException
    • addUnsignedAttribute

      public void addUnsignedAttribute​(SignatureAttribute<JadesAttrCommonStruct> attribute) throws SignatureAttributeException
      Adiciona um atributo não-assinado
      Specified by:
      addUnsignedAttribute in interface Signature<JadesAttrCommonStruct>
      Parameters:
      attribute - O atributo a ser adicionado na assinatura
      Throws:
      SignatureAttributeException
    • getEncodedAttribute

      public org.json.JSONObject getEncodedAttribute​(String identifier) throws SignatureAttributeNotFoundException
      Retorna o atributo correspondente ao identificador dado como JSONObject
      Parameters:
      identifier - O identificador do atributo
      Returns:
      O JSONObject do atributo correspondente ao identificador dado
      Throws:
      SignatureAttributeNotFoundException
    • isDetached

      public boolean isDetached()
      Retorna se a assinatura é ou não destacada
    • getSignaturePolicyUri

      public String getSignaturePolicyUri()
      Obtem a URI da LPA que contém a política de assinatura da assinatura
      Returns:
      A URI da LPA
    • getSignaturePolicyIdentifier

      public String getSignaturePolicyIdentifier()
      Retorna o identificador da política de assinatura usada
      Returns:
      O identificador da política de assinatura
      Throws:
      PbadException - Exceção em caso de erro na obtenção da PA na assinatura
    • initiateCritHeader

      public void initiateCritHeader​(Verifier jadesVerifier)
    • validateCritHeader

      public void validateCritHeader() throws PbadException
      Throws:
      PbadException
    • addProcessedCrit

      public void addProcessedCrit​(String attr)
    • setEtsiuEncod

      public void setEtsiuEncod​(JadesSignature.ContentEncod etsiuEncod)