Class SigningCertificate
java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.xades.attributes.signed.SigningCertificate
- All Implemented Interfaces:
SignatureAttribute<Element>
,SigningCertificateInterface
,Cloneable
,CertSelector
,org.bouncycastle.util.Selector<Certificate>
public class SigningCertificate extends Object implements SigningCertificateInterface
O atributo SigningCertificate é designado para previnir 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 Summary
Fields Modifier and Type Field Description static String
IDENTIFIER
protected SignatureVerifier
signatureVerifier
Objeto de verificadorprotected Element
signingCertificateElement
Elemento XML do atributo -
Constructor Summary
Constructors Constructor Description SigningCertificate(AbstractVerifier signatureVerifier, Integer index)
Deve-se utilizar este construtor no momento de validação do atributo.SigningCertificate(List<Certificate> certs, String digestAlgorithm)
Cria o atributo id-aa-signingCertificate a partir de uma lista de certificados.SigningCertificate(List<Certificate> certs, org.bouncycastle.asn1.ASN1ObjectIdentifier digestIdentifier)
Cria o atributo id-aa-signingCertificate a partir de uma lista de certificados.SigningCertificate(List<Certificate> certs, org.bouncycastle.asn1.x509.AlgorithmIdentifier digestAlgorithm)
Cria o atributo id-aa-signingCertificate a partir de uma lista de certificados.SigningCertificate(Element genericEncoding)
Constrói um objetoSigningCertificate
-
Method Summary
Modifier and Type Method Description CertSelector
clone()
Faz uma cópia deste objetoElement
getEncoded()
Retorna o atributo codificadoString
getIdentifier()
Retorna o identificador do atributoElement
getSigningCertificateElement()
Obtém todos os certificados que foram guardados no atributo SigningCertificate da assinatura.boolean
isSigned()
Informa se o atributo é assinado.boolean
isUnique()
Verifica se o atributo deve ter apenas uma instância na assinaturaboolean
match(Certificate certificate)
Verifica se o certificado dado é o mesmo que está no atributovoid
validate()
Valida o atributo de acordo com suas regras específicas
-
Field Details
-
IDENTIFIER
- See Also:
- Constant Field Values
-
signingCertificateElement
Elemento XML do atributo -
signatureVerifier
Objeto de verificador
-
-
Constructor Details
-
SigningCertificate
public SigningCertificate(AbstractVerifier signatureVerifier, Integer index) throws SignatureAttributeExceptionDeve-se utilizar este construtor no momento de validação do atributo. Este método decodifica todos os certificados que foram adicionados no atributo SigningCertificate. Ou seja, ele funciona para os casos SignerOnly e FullPath.- Parameters:
signatureVerifier
- Usado para criar e verificar o atributoindex
- Este valor deve ser 0- Throws:
SignatureAttributeException
- Caso ocorra algum erro relativo aos atributos da assinatura.
-
SigningCertificate
Constrói um objetoSigningCertificate
- Parameters:
genericEncoding
- O atributo codificado
-
SigningCertificate
public SigningCertificate(List<Certificate> certs, org.bouncycastle.asn1.x509.AlgorithmIdentifier digestAlgorithm) throws SignatureAttributeExceptionCria o atributo id-aa-signingCertificate a partir de uma lista de certificados. Este método decodifica todos os certificados que foram adicionados noSigningCertificate
. Ou seja, ele funciona para os casos SignerOnly e FullPath.- Parameters:
certs
- Lista de certificados que serão guardados no atributo signing certificate da assinaturadigestAlgorithm
- 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 SignatureAttributeExceptionCria o atributo id-aa-signingCertificate a partir de uma lista de certificados. Este método decodifica todos os certificados que foram adicionados noSigningCertificate
. Ou seja, ele funciona para os casos SignerOnly e FullPath.- Parameters:
certs
- Lista de certificados que serão guardados no atributo signing certificate da assinaturadigestIdentifier
- 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 SignatureAttributeExceptionCria o atributo id-aa-signingCertificate a partir de uma lista de certificados. Este método decodifica todos os certificados que foram adicionados noSigningCertificate
. Ou seja, ele funciona para os casos SignerOnly e FullPath.- Parameters:
certs
- Lista de certificados que serão guardados no atributo signing certificate da assinaturadigestAlgorithm
- O algoritmo de cálculo de hash- Throws:
SignatureAttributeException
- Caso ocorra algum erro relativo aos atributos da assinatura.
-
-
Method Details
-
getIdentifier
Retorna o identificador do atributo- Specified by:
getIdentifier
in interfaceSignatureAttribute<Element>
- Returns:
- O identificador do atributo
-
validate
Valida o atributo de acordo com suas regras específicas- Specified by:
validate
in interfaceSignatureAttribute<Element>
- Throws:
SignatureAttributeException
-
getEncoded
Retorna o atributo codificado- Specified by:
getEncoded
in interfaceSignatureAttribute<Element>
- Returns:
- O atributo em formato de nodo XML
- Throws:
SignatureAttributeException
-
isSigned
public boolean isSigned()Informa se o atributo é assinado.- Specified by:
isSigned
in interfaceSignatureAttribute<Element>
- Returns:
- Indica se o atributo é assinado
-
match
Verifica se o certificado dado é o mesmo que está no atributo- Specified by:
match
in interfaceCertSelector
- Specified by:
match
in interfaceorg.bouncycastle.util.Selector<Certificate>
- Parameters:
certificate
- O certificado a ser comparado- Returns:
- Indica se o certificado dado é o mesmo que está no atributo
-
clone
Faz uma cópia deste objeto- Specified by:
clone
in interfaceCertSelector
- Specified by:
clone
in interfaceorg.bouncycastle.util.Selector<Certificate>
- Overrides:
clone
in classObject
- Returns:
- Uma cópia do objeto
-
getSigningCertificateElement
Obtém todos os certificados que foram guardados no atributo SigningCertificate da assinatura.- Returns:
- Certificados que foram guardados no atributo signing certificate da assinatura.
-
isUnique
public boolean isUnique()Verifica se o atributo deve ter apenas uma instância na assinatura- Specified by:
isUnique
in interfaceSignatureAttribute<Element>
- Returns:
- Indica se o atributo deve ter apenas uma instância na assinatura
-