Class SigningCertificate

java.lang.Object
br.ufsc.labsec.parser.xades.attributes.schema.SigningCertificateType
br.ufsc.labsec.parser.xades.attributes.signed.SigningCertificate
All Implemented Interfaces:
SignatureAttribute<Element>, SigningCertificateInterface, Cloneable, CertSelector, org.bouncycastle.util.Selector<Certificate>

public class SigningCertificate extends SigningCertificateType
O atributo SigningCertificate é designado para prevenir o ataque de substituição, e para permitir um conjunto restrito de certificados de autorização a serem usados na verificação da assinatura. Esta versão representa uma referência do certificado do signatário utilizando o algoritmo de hash SHA1.

SigningCertificate implementa SigningCertificateInterface, que por sua vez extende as interfaces SignatureAttribute, que representa um atributo da assinatura, e CertSelector, que é utilizado para selecionar certificados de um CertStore utilizando critérios.

O SigningCertificate pode ser composto por um identificador e obrigatoriamente pelo hash do certificado dos signatário, sendo que o hash é utilizado como critério no CertSelector para encontrar o certificado no CertStore.

Esquema do atributo SigningCertificate retirado do ETSI TS 101 903:

<xsd:element name="SigningCertificate" type="CertIDListType"/><br> <xsd:complexType name="CertIDListType"><br> <xsd:sequence><br> <xsd:element name="Cert" type="CertIDType"<br> maxOccurs="unbounded"/><br> </xsd:sequence><br> </xsd:complexType><br> <xsd:complexType name="CertIDType"><br> <xsd:complexType name="CertIDType"><br> <xsd:sequence><br> <xsd:element name="CertDigest" type="DigestAlgAndValueType"/><br> <xsd:element name="IssuerSerial" type="ds:X509IssuerSerialType"/><br> </xsd:sequence><br> <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/><br> </xsd:complexType><br> <xsd:complexType name="DigestAlgAndValueType"><br> <xsd:sequence><br> <xsd:element ref="ds:DigestMethod"/><br> <xsd:element ref="ds:DigestValue"/><br> </xsd:sequence><br> </xsd:complexType><br>

  • Field Details

  • Constructor Details

    • SigningCertificate

      public SigningCertificate(List<Certificate> certs, org.bouncycastle.asn1.x509.AlgorithmIdentifier digestAlgorithm) throws SignatureAttributeException
      Cria o atributo id-aa-signingCertificate a partir de uma lista de certificados. Este método decodifica todos os certificados que foram adicionados no SigningCertificate. Ou seja, ele funciona para os casos SignerOnly e FullPath.
      Parameters:
      certs - Lista de certificados que serão guardados no atributo signing certificate da assinatura
      digestAlgorithm - O algoritmo de cálculo de hash
      Throws:
      SignatureAttributeException - Caso ocorra algum erro relativo aos atributos da assinatura.
    • SigningCertificate

      public SigningCertificate(List<Certificate> certs, org.bouncycastle.asn1.ASN1ObjectIdentifier digestIdentifier) throws SignatureAttributeException
      Cria o atributo id-aa-signingCertificate a partir de uma lista de certificados. Este método decodifica todos os certificados que foram adicionados no SigningCertificate. Ou seja, ele funciona para os casos SignerOnly e FullPath.
      Parameters:
      certs - Lista de certificados que serão guardados no atributo signing certificate da assinatura
      digestIdentifier - O algoritmo de cálculo de hash
      Throws:
      SignatureAttributeException - Caso ocorra algum erro relativo aos atributos da assinatura.
    • SigningCertificate

      public SigningCertificate(List<Certificate> certs, String digestAlgorithm) throws SignatureAttributeException
      Cria o atributo id-aa-signingCertificate a partir de uma lista de certificados. Este método decodifica todos os certificados que foram adicionados no SigningCertificate. Ou seja, ele funciona para os casos SignerOnly e FullPath.
      Parameters:
      certs - Lista de certificados que serão guardados no atributo signing certificate da assinatura
      digestAlgorithm - O algoritmo de cálculo de hash
      Throws:
      SignatureAttributeException - Caso ocorra algum erro relativo aos atributos da assinatura.
    • SigningCertificate

      public SigningCertificate(Element signingCertificate)
    • SigningCertificate

      public SigningCertificate(Element signingCertificate, String algorithm, AttributeValueReport valueReport)
  • Method Details

    • getIdentifier

      public String getIdentifier()
      Retorna o identificador do atributo
      Returns:
      O identificador do atributo
    • isSigned

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

      public boolean match(Certificate certificate)
      Verifica se o certificado dado é o mesmo que está no atributo
      Parameters:
      certificate - O certificado a ser comparado
      Returns:
      Indica se o certificado dado é o mesmo que está no atributo
    • clone

      public SigningCertificate clone()
      Faz uma cópia deste objeto
      Specified by:
      clone in interface CertSelector
      Specified by:
      clone in interface org.bouncycastle.util.Selector<Certificate>
      Specified by:
      clone in class SigningCertificateType
      Returns:
      Uma cópia do objeto
    • 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