java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.cades.attributes.TimeStamp<Encod>
All Implemented Interfaces:
SignatureAttribute<Encod>, Comparable<TimeStamp<Encod>>
Direct Known Subclasses:
DocTimeStampAttribute, TimeStampToken

public abstract class TimeStamp<Encod>
extends Object
implements Comparable<TimeStamp<Encod>>, SignatureAttribute<Encod>
Representa um carimbo do tempo
  • Field Details

    • contentInfo

      protected org.bouncycastle.asn1.cms.ContentInfo contentInfo
      Conteúdo do carimbo
  • Constructor Details

    • TimeStamp

      public TimeStamp()
  • Method Details

    • getTimeReference

      public Time getTimeReference() throws TimeStampException
      Obtém a data do carimbo do tempo
      Returns:
      A data do carimbo do tempo
      Throws:
      TimeStampException - Exceção em caso de erro durante a manipulação do carimbo
    • buildTimeStampToken

      protected org.bouncycastle.tsp.TimeStampToken buildTimeStampToken() throws TimeStampException
      Constrói um TimeStampToken a partir do contentInfo.
      Returns:
      O TimeStampToken criado
      Throws:
      TimeStampException
    • getEncodedAttribute

      public org.bouncycastle.asn1.cms.Attribute getEncodedAttribute​(String identifier, Integer index) throws SignatureAttributeException
      Retorna um objeto do atributo desejado
      Parameters:
      identifier - O identificador do atributo
      index - Índice do atributo
      Returns:
      Um objeto do atributo desejado
      Throws:
      SignatureAttributeException
    • getEncodedAttribute

      public org.bouncycastle.asn1.cms.Attribute getEncodedAttribute​(String attributeId) throws SignatureAttributeException
      Throws:
      SignatureAttributeException
    • addUnsignedAttribute

      public void addUnsignedAttribute​(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute) throws SignatureAttributeException
      Adiciona um atributo não-assinado
      Parameters:
      attribute - Identificador do atributo a ser adicionado
      Throws:
      SignatureAttributeException
    • removeUnsignedAttribute

      public void removeUnsignedAttribute​(String attributeId, int index) throws SignatureAttributeException
      Remove um atributo não-assinado
      Parameters:
      attributeId - Identificador do atributo a ser removido
      index - Índice do atributo
      Throws:
      SignatureAttributeException
    • replaceUnsignedAttribute

      public void replaceUnsignedAttribute​(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute, Integer index) throws PbadException, SignatureAttributeException
      Substitui um atributo não assinado qualquer, útil quando é necessário adicionar mais atributos em um carimbo de tempo por exemplo
      Parameters:
      attribute - O atributo que foi atualizado
      index - O indice do atributo em relação aos seus similares, ou seja, se há três carimbos do tempo da assinatura e o segundo vai ser atualizado o indice é 1
      Throws:
      PbadException
      SignatureAttributeException
    • contentInfoToSignatureContainer

      protected CadesSignatureContainer contentInfoToSignatureContainer()
      Transforma um ContentInfo (carimbo do tempo) em uma assinatura
      Returns:
      O carimbo como uma assinatura CAdES
    • getContentInfo

      public org.bouncycastle.asn1.cms.ContentInfo getContentInfo()
      Obtém o ContentInfo, que pertence ao BouncyCastle e permite um acesso mais detalhado à estrutura do carimbo do tempo
      Returns:
      O ContentInfo do carimbo
    • compareTo

      public int compareTo​(TimeStamp otherTimeStamp)
      Compara dois objetos desta classe
      Specified by:
      compareTo in interface Comparable<Encod>
      Parameters:
      otherTimeStamp - O objeto a ser comparado
      Returns:
      Indica se os dois objetos são iguais
    • getAttributeList

      public List<String> getAttributeList()
      Retorna a lista de atributos do carimbo
      Returns:
      A lista de atributos do carimbo
    • getAttributeHash

      protected abstract byte[] getAttributeHash​(String hashAlgorithmId) throws PbadException, NoSuchAlgorithmException
      Calcula o hash do atributo
      Parameters:
      hashAlgorithmId - O algoritmo utilizado
      Returns:
      O valor de hash do atributo
      Throws:
      PbadException - Exceção em caso de erro durante o cálculo
      NoSuchAlgorithmException
    • isAttributeHashValid

      protected abstract boolean isAttributeHashValid​(String hashAlgorithm, byte[] expected)
    • getIdentifier

      public abstract String getIdentifier()
      Obtém o identificador do atributo
      Specified by:
      getIdentifier in interface SignatureAttribute<Encod>
      Returns:
      O identificador do atributo
    • validate

      public abstract void validate​(TimeStampReport report, boolean containsRefsTimestamp, boolean containsArchiveTimestamp) throws SignatureAttributeException, CertificateAttributeException
      Faz a validação do atributo
      Parameters:
      report - O relatório de verificação do carimbo
      Throws:
      SignatureAttributeException
      CertificateAttributeException