java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.cades.attributes.TimeStamp<org.bouncycastle.asn1.cms.Attribute>
br.ufsc.labsec.signature.conformanceVerifier.cades.attributes.unsigned.TimeStampToken
All Implemented Interfaces:
SignatureAttribute<org.bouncycastle.asn1.cms.Attribute>, Comparable<TimeStamp<org.bouncycastle.asn1.cms.Attribute>>
Direct Known Subclasses:
IdAaEtsArchiveTimeStampV2, IdAaEtsArchiveTimestampV3, IdAaEtsEscTimeStamp, IdAaSignatureTimeStampToken

public abstract class TimeStampToken
extends TimeStamp<org.bouncycastle.asn1.cms.Attribute>
Representa o carimbo do tempo da assinatura.

Oid e esquema do atributo id-aa-signatureTimeStampToken retirado do documento ETSI TS 101 733 V1.8.1:

 id-aa-signatureTimeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2)
 us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 14}

 SignatureTimeStampToken ::= TimeStampToken
 
  • Field Details

  • Constructor Details

  • Method Details

    • validate

      public void validate​(TimeStampReport report, boolean containsRefsTimestamp, boolean containsArchiveTimestamp) throws SignatureAttributeException, CertificateAttributeException
      Valida o atributo em seu próprio contexto de validação. Os casos de retorno negativo dessa validação são indicados por exceções. Para efetuar esta validação é necessário adicionar os certificados do caminho de certificação da carimbadora no CertStore da classe Verifier.
      Specified by:
      validate in class TimeStamp<org.bouncycastle.asn1.cms.Attribute>
      Parameters:
      report - O relatório de verificação do carimbo
      containsRefsTimestamp - Sinaliza a presença do atributo de RefsTimestamp
      containsArchiveTimestamp - Sinaliza a presença do atributo Archive Timestamp
      Throws:
      SignatureAttributeException
      CertificateAttributeException
    • makeTimeStampVerifier

      protected TimeStampVerifier makeTimeStampVerifier​(org.bouncycastle.tsp.TimeStampToken timeStamp, boolean containsRefsTimestamp, boolean containsArchiveTimestamp)
      Returns:
      O objeto TimeStampVerifier criado
    • createSignerInformationVerifier

      protected org.bouncycastle.cms.SignerInformationVerifier createSignerInformationVerifier​(X509Certificate certificate) throws org.bouncycastle.operator.OperatorCreationException, org.bouncycastle.cms.CMSException
      Obtém um SignerInformationVerifier.
      Parameters:
      certificate - Certificado final do caminho de certificação que se deseja validar
      Returns:
      O objeto SignerInformationVerifier criado
      Throws:
      org.bouncycastle.operator.OperatorCreationException
      org.bouncycastle.cms.CMSException
    • getEncoded

      public org.bouncycastle.asn1.cms.Attribute getEncoded() throws SignatureAttributeException
      Codifica o atributo em seu formato básico, nesse caso Attribute
      Returns:
      O atributo codificado
      Throws:
      SignatureAttributeException
    • getArchiveTimeStampContentInfo

      public org.bouncycastle.asn1.DERSequence getArchiveTimeStampContentInfo()
      Retorna o conteúdo do carimbo em formato ASN.1
      Returns:
      O conteúdo do carimbo em formato ASN.1
    • isSigned

      public boolean isSigned()
      Informa se o atributo é assinado
      Returns:
      Indica se o atributo é assinado
    • isAnyAttributeHashValid

      public boolean isAnyAttributeHashValid​(String algorithmId, byte[] expected)
    • getAttributeHash

      protected byte[] getAttributeHash​(String hashAlgorithmId) throws PbadException, NoSuchAlgorithmException
      Calcula o hash do atributo
      Specified by:
      getAttributeHash in class TimeStamp<org.bouncycastle.asn1.cms.Attribute>
      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 boolean isAttributeHashValid​(String hashAlgorithmId, byte[] expected)
      Calcula o hash do atributo
      Specified by:
      isAttributeHashValid in class TimeStamp<org.bouncycastle.asn1.cms.Attribute>
      Parameters:
      hashAlgorithmId - O algoritmo utilizado
      Returns:
      O valor de hash do atributo
    • getAttributeHash

      protected abstract byte[] getAttributeHash​(String hashAlgorithmId, boolean hashWithoutTag) throws PbadException, NoSuchAlgorithmException
      Calcula o hash do atributo
      Parameters:
      hashAlgorithmId - O algoritmo utilizado
      hashWithoutTag - Indica a forma de cálculo da hash, de acordo com as notas 2 e 3 da pagina 109 do ETSI TS 101 733 V2.2.1. Se verdadeiro indica que o calculo é feito sem incluir tag e length.
      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 hashAlgorithmId, boolean hashWithoutTag, byte[] expected)
    • isUnique

      public boolean isUnique()
      Verifica se o atributo deve ter apenas uma instância na assinatura
      Returns:
      Indica se o atributo deve ter apenas uma instância na assinatura
    • validate

      public void validate() throws PbadException
      Valida o atributo de acordo com suas regras específicas
      Throws:
      SignatureAttributeException
      PbadException