Class XadesSignature
java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.xades.XadesSignature
- All Implemented Interfaces:
Signature<Element>,GenericXadesSignature,SignatureObject
- Direct Known Subclasses:
CounterSignature
public class XadesSignature extends Object implements GenericXadesSignature
Esta classe representa uma assinatura do tipo XAdES.
Implementa
GenericXadesSignature.-
Field Summary
-
Constructor Summary
Constructors Constructor Description XadesSignature(Document xml, Element signature, XadesSignatureContainer xadesSignatureContainer)Constrói uma assinatura XAdES a partir da representação DOM do documento XML assinado, e do elemento que representa a assinatura no documento. -
Method Summary
Modifier and Type Method Description voidaddUnsignedAttribute(SignatureAttribute<Element> attribute)Adiciona um atributo à lista de atributos não-assinadosstatic voidaddX509DataContent(Collection<Certificate> certificates, Collection<X509CRL> crls, X509Data x509Data)Adiciona os certificados e CRLs, presentes na estrutura X509Data, nas listas dadasprotected org.bouncycastle.cms.SignerIdbuildSignerIdentifier(X500Principal issuerName, BigInteger serialNumber)Constrói um objeto da classeSignerId.protected voidcalculateArchiveTimeStampHashValue(OutputStream octetStream, Time time)Passos para cálculo do hash do carimbo do tempo de arquivamento, conforme o documento ETSI TS 101 903 V1.4.1 (2009-06) seção 8.2.1StringgetAlgorithmFromSignature()StringgetAlgorithmOid()Retorna o identificador do algoritmo de assinatura (OID) utilizado na assinatura.byte[]getArchiveTimeStampHashValue(String hashAlgorithmName)Calcula o valor de hash do carimbo de tempo de arquivamentobyte[]getArchiveTimeStampHashValue(String hashAlgorithmName, Time time)Calcula o valor de hash do carimbo de tempo de arquivamentoList<String>getAttributeList()Retorna a lista de atributos presente na assinatura.List<Certificate>getCertificatesAtKeyInfo()Retorna os certificados da estrutura KeyInfoXadesSignatureContainergetContainer()Retorna o contêiner da assinatura XAdESList<XadesSignature>getCounterSignatures()Retorna uma lista de contra-assinaturaList<X509CRL>getCrls()Retorna as CRLs da assinaturaElementgetEncodedAttribute(String attributeId)Retorna o primeiro atributo da assinaturaElementgetEncodedAttribute(String attributeId, Integer index)Retorna o atributo correspondente ao identificador dadoFileFormatgetFormat()XadesSignatureContainergetSignatureContainer()ElementgetSignatureElement()Informa em qualElementespecifico está a representação da assinaturaStringgetSignatureMethod()StringgetSignaturePolicyHashValue(SignaturePolicyInterface signaturePolicyInterface)Retorna o valor de hash no nodo da política de assinaturaStringgetSignaturePolicyIdentifier(SignaturePolicyInterface signaturePolicyInterface)Retorna o identificador da política de assinaturaStringgetSignaturePolicyUri(SignaturePolicyInterface signaturePolicyInterface)Retorna a URI da política de assinaturaStringgetSignatureValueAttribute()Obtém o valor do atributo Id da tag SignatureValuebyte[]getSignatureValueHash(String algorithm)Retorna o valor de hash da assinaturaList<String>getSignedAttributeList()Retorna a lista de atributos assinadosCertificategetSigningCertificate()Retorna o certificado do assinanteStringgetSubjectName()Retorna o nome do assinanteDategetTimeReference()List<String>getUnsignedAttributeList()Retorna a lista de atributos não-assinadosDocumentgetXml()Retorna a assinatura em forma deDocumentpara que se possa navegar por ela mais livremente.inthashCode()booleanhasImpliedPolicy(SignaturePolicyInterface signaturePolicyInterface)protected booleanhasSigningCertificate(CounterSignature counterSignature)Verifica se existe a propriedade SigningCertificate na contra assinaturabooleanhasValidKeyInfo(List<Reference> references, DOMValidateContext validateContext)Verifica se o estado do ds:KeyInfo permite a ausência de um XAdES:SignedProperties na assinaturabooleanhasValidKeyInfoElement(X509Certificate signerCertificate)booleanisArchiveTimeStampHashValue(String hashAlgorithmName, Time time, byte[] expected)booleanisEnveloped()Verifica se a assinatura Xades é do tipo envelopada por meio da URI da w3 dentro dos nodos com a tag TransformbooleanisExternalSignedData()Verifica se o conteúdo assinado é externobooleanisSignatureValueHashValid(String algorithm, byte[] expected)voidremoveUnsignedAttribute(String attributeId, int index)Remove o nodo do atributo não-assinado no arquivovoidreplaceUnsignedAttribute(SignatureAttribute<Element> attribute, int index)Substitui um atributo não-assinadobyte[]resolveAttributeContentToBeHashed(List<String> mandatoryAttrs, List<String> optionalAttrs, String namespace, String target, boolean withSignature)voidsetTimeReference(Date timeReference)booleanverify(X509Certificate signerCertificate, SignatureReport sigReport, boolean isComplete, boolean isIcpBr)Verifica a assinatura XAdES baseado no documento(http://www.w3.org/TR/XAdES/) e anexa ao report.
-
Field Details
-
SIGNED_SIGNATURE_PROPERTIES
- See Also:
- Constant Field Values
-
COLON
- See Also:
- Constant Field Values
-
UNSIGNED_PROPERTIES
- See Also:
- Constant Field Values
-
XADES_COUNTER_SIGNATURE
- See Also:
- Constant Field Values
-
SIGNING_CERTIFICATE
- See Also:
- Constant Field Values
-
SIGNED_PROPERTIES
- See Also:
- Constant Field Values
-
DOM
- See Also:
- Constant Field Values
-
XADES_ARCHIVE_TIME_STAMP
- See Also:
- Constant Field Values
-
REFERENCE
- See Also:
- Constant Field Values
-
SPURI
- See Also:
- Constant Field Values
-
SIG_POLICY_QUALIFIERS
- See Also:
- Constant Field Values
-
SIGNED_INFO
- See Also:
- Constant Field Values
-
KEY_INFO
- See Also:
- Constant Field Values
-
ID
- See Also:
- Constant Field Values
-
SIGNATURE
- See Also:
- Constant Field Values
-
COUNTER_SIGNATURE
- See Also:
- Constant Field Values
-
SIGNATURE_VALUE
- See Also:
- Constant Field Values
-
OBJECT
- See Also:
- Constant Field Values
-
QUALIFYING_PROPERTIES
- See Also:
- Constant Field Values
-
SIGNATURE_TIME_STAMP
- See Also:
- Constant Field Values
-
COMPLETE_CERTIFICATE_REFS
- See Also:
- Constant Field Values
-
COMPLETE_CERTIFICATE_REFSV2
- See Also:
- Constant Field Values
-
COMPLETE_REVOCATION_REFS
- See Also:
- Constant Field Values
-
ATTRIBUTE_CERTIFICATE_REFS
- See Also:
- Constant Field Values
-
ATTRIBUTE_CERTIFICATE_REFSV2
- See Also:
- Constant Field Values
-
ATTRIBUTE_REVOCATION_REFS
- See Also:
- Constant Field Values
-
TYPE
- See Also:
- Constant Field Values
-
SIGNATURE_POLICY_IDENTIFIER
- See Also:
- Constant Field Values
-
UNSIGNED_DATA_OBJECT_PROPERTIES
- See Also:
- Constant Field Values
-
UNSIGNED_SIGNATURE_PROPERTIES
- See Also:
- Constant Field Values
-
SIGNED_DATA_OBJECT_PROPERTIES
- See Also:
- Constant Field Values
-
REVOCATION_VALUES
- See Also:
- Constant Field Values
-
CERTIFICATE_VALUES
- See Also:
- Constant Field Values
-
ATTR_AUTHORITIES_CERT_VALUES
- See Also:
- Constant Field Values
-
ATTRIBUTE_REVOCATION_VALUES
- See Also:
- Constant Field Values
-
xml
O documento de assinatura -
signatureElement
O nodo XML da assinatura -
timeReference
-
-
Constructor Details
-
XadesSignature
public XadesSignature(Document xml, Element signature, XadesSignatureContainer xadesSignatureContainer)Constrói uma assinatura XAdES a partir da representação DOM do documento XML assinado, e do elemento que representa a assinatura no documento.- Parameters:
xml- A representação DOM de um documento XMLsignature- O elemento que representa a assinatura no documentoxadesSignatureContainer- O contêiner de assinatura XAdES
-
-
Method Details
-
setTimeReference
-
getTimeReference
-
hashCode
public int hashCode() -
getSignatureElement
Informa em qualElementespecifico está a representação da assinatura- Returns:
- O nodo que contém a assinatura na estrutura XML do documento assinado
-
getSignatureMethod
- Throws:
SignatureException
-
hasValidKeyInfo
Verifica se o estado do ds:KeyInfo permite a ausência de um XAdES:SignedProperties na assinatura- Parameters:
references- Lista de referências do SignedInfovalidateContext- Contexto contendo assinatura e chave pública de verificação- Returns:
- Verdadeiro se permite a ausência, falso se exige a presença do XAdES:SignedProperties
-
getAlgorithmFromSignature
-
verify
public boolean verify(X509Certificate signerCertificate, SignatureReport sigReport, boolean isComplete, boolean isIcpBr) throws VerificationExceptionVerifica a assinatura XAdES baseado no documento(http://www.w3.org/TR/XAdES/) e anexa ao report.- Specified by:
verifyin interfaceGenericXadesSignature- Parameters:
signerCertificate- O certificado do signatáriosigReport- O relátorio da assinaturaisComplete- Se o relatório deve ser completo ou simplesisIcpBr- Se a cadeia de certificados é Icp-BR para fazer ExtensionsReport- Returns:
- Indica se a assinatura XAdES está de acordo com os padrões do documento (http://www.w3.org/TR/XAdES/)
- Throws:
VerificationException- Exceção em caso de erro durante a verificação
-
getXml
Retorna a assinatura em forma deDocumentpara que se possa navegar por ela mais livremente. Obs.: A referência interna é passada, por isso se for causado algum erro na assinatura através do document, esse erros posteriomente aparecerão dentro doXadesSignaturetambém.- Returns:
- A assinatura na representação DOM
-
getAttributeList
Retorna a lista de atributos presente na assinatura.- Specified by:
getAttributeListin interfaceSignature<Element>- Returns:
- A lista de atributos na assinatura
-
getSignedAttributeList
Description copied from interface:SignatureRetorna a lista de atributos assinados- Specified by:
getSignedAttributeListin interfaceSignature<Element>- Returns:
- lista de atributos assinados
-
getUnsignedAttributeList
Description copied from interface:SignatureRetorna a lista de atributos não-assinados- Specified by:
getUnsignedAttributeListin interfaceSignature<Element>- Returns:
- lista de atributos não-assinados
-
getEncodedAttribute
public Element getEncodedAttribute(String attributeId, Integer index) throws SignatureAttributeNotFoundExceptionRetorna o atributo correspondente ao identificador dado- Specified by:
getEncodedAttributein interfaceSignature<Element>- Parameters:
attributeId- O identificador do atributoindex- O índice do atributo- Returns:
- O atributo correspondente ao identificador dado
- Throws:
SignatureAttributeNotFoundException- Exceção caso o atributo não seja encontrado
-
getSignatureContainer
-
getEncodedAttribute
Retorna o primeiro atributo da assinatura- Specified by:
getEncodedAttributein interfaceGenericXadesSignature- Parameters:
attributeId- O identificador do atributo- Returns:
- O primeiro atributo da assinatura
- Throws:
SignatureAttributeNotFoundException- atributo não encontrado
-
hasImpliedPolicy
-
getSignaturePolicyIdentifier
Retorna o identificador da política de assinatura- Specified by:
getSignaturePolicyIdentifierin interfaceGenericXadesSignature- Returns:
- O identificador da política de assinatura
-
isExternalSignedData
public boolean isExternalSignedData()Verifica se o conteúdo assinado é externo- Specified by:
isExternalSignedDatain interfaceGenericXadesSignature- Returns:
- Indica se o conteúdo assinado é externo
-
getSignatureValueHash
public byte[] getSignatureValueHash(String algorithm) throws PbadException, NoSuchAlgorithmExceptionRetorna o valor de hash da assinatura- Specified by:
getSignatureValueHashin interfaceGenericXadesSignature- Parameters:
algorithm- O algoritmo a ser utilizado para o cálculo de hash- Returns:
- Array de bytes com valor de hash da assinatura
- Throws:
PbadException- Exceção em caso de erro no cálculoNoSuchAlgorithmException
-
isSignatureValueHashValid
- Throws:
PbadException
-
addUnsignedAttribute
public void addUnsignedAttribute(SignatureAttribute<Element> attribute) throws SignatureAttributeExceptionAdiciona um atributo à lista de atributos não-assinados- Specified by:
addUnsignedAttributein interfaceSignature<Element>- Parameters:
attribute- O atributo a ser adicionado- Throws:
DOMException- Exceção em caso de erro na estrutura do XMLSignatureAttributeException- Exceção em caso de erro no atributo
-
replaceUnsignedAttribute
public void replaceUnsignedAttribute(SignatureAttribute<Element> attribute, int index) throws SignatureAttributeExceptionDescription copied from interface:SignatureSubstitui um atributo não-assinado- Specified by:
replaceUnsignedAttributein interfaceSignature<Element>- Parameters:
attribute- atributo a ser substituídoindex- índice do atributo a ser substituído- Throws:
SignatureAttributeException
-
getCounterSignatures
Retorna uma lista de contra-assinatura- Specified by:
getCounterSignaturesin interfaceSignature<Element>- Returns:
- A lista de contra-assinaturas
-
buildSignerIdentifier
protected org.bouncycastle.cms.SignerId buildSignerIdentifier(X500Principal issuerName, BigInteger serialNumber)Constrói um objeto da classeSignerId.- Parameters:
issuerName- Nome do emissor do certificadoserialNumber- Número do serial do certificado- Returns:
- O
SignerIdgerado
-
hasSigningCertificate
Verifica se existe a propriedade SigningCertificate na contra assinatura- Parameters:
counterSignature- A contra assinatura- Returns:
- Indica se existe a propriedade SigningCertificate
-
getSignatureValueAttribute
Obtém o valor do atributo Id da tag SignatureValue- Returns:
- Valor do atributo Id da tag SignatureValue
-
getSignaturePolicyUri
Retorna a URI da política de assinatura- Specified by:
getSignaturePolicyUriin interfaceGenericXadesSignature- Returns:
- A URI da política de assinatura
-
getSignaturePolicyHashValue
Retorna o valor de hash no nodo da política de assinatura- Specified by:
getSignaturePolicyHashValuein interfaceGenericXadesSignature- Returns:
- O hash da política de assinatura
-
removeUnsignedAttribute
public void removeUnsignedAttribute(String attributeId, int index) throws SignatureAttributeExceptionRemove o nodo do atributo não-assinado no arquivo- Parameters:
attributeId- O identificador do atributo a ser removidoindex- O índice do atributo- Throws:
SignatureAttributeException- Exceção caso o atributo não seja encontrado
-
getArchiveTimeStampHashValue
Calcula o valor de hash do carimbo de tempo de arquivamento- Specified by:
getArchiveTimeStampHashValuein interfaceGenericXadesSignature- Parameters:
hashAlgorithmName- O algoritmo a ser utilizado no cálculo- Returns:
- O valor de hash do carimbo
- Throws:
PbadException- Exceção em caso de erro na canonização
-
getArchiveTimeStampHashValue
public byte[] getArchiveTimeStampHashValue(String hashAlgorithmName, Time time) throws PbadExceptionCalcula o valor de hash do carimbo de tempo de arquivamento- Specified by:
getArchiveTimeStampHashValuein interfaceGenericXadesSignature- Parameters:
hashAlgorithmName- O algoritmo a ser utilizado no cálculotime- O horário do carimbo- Returns:
- O valor de hash do carimbo
- Throws:
PbadException- Exceção em caso de erro na canonização
-
isArchiveTimeStampHashValue
public boolean isArchiveTimeStampHashValue(String hashAlgorithmName, Time time, byte[] expected) throws PbadException- Throws:
PbadException
-
calculateArchiveTimeStampHashValue
protected void calculateArchiveTimeStampHashValue(OutputStream octetStream, Time time) throws CanonicalizationException, SignatureAttributeExceptionPassos para cálculo do hash do carimbo do tempo de arquivamento, conforme o documento ETSI TS 101 903 V1.4.1 (2009-06) seção 8.2.1- Parameters:
octetStream- Onde está sendo escrito os bytes contatenados do hashtime- A data do carimbo do tempo- Throws:
SignatureAttributeException- Exceção em caso de erro nos atributos da assinaturaEncodingException- Exceção em caso de erro na canonizaçãoCanonicalizationException
-
getContainer
Retorna o contêiner da assinatura XAdES- Specified by:
getContainerin interfaceGenericXadesSignature- Returns:
- O contêiner da assinatura XAdES
-
getSigningCertificate
Retorna o certificado do assinante- Returns:
- O certificado do assinante
-
getCertificatesAtKeyInfo
Retorna os certificados da estrutura KeyInfo- Returns:
- Os certificados da estrutura KeyInfo ou nulo em caso de erro
-
getCrls
Retorna as CRLs da assinatura- Returns:
- As CRLs da assinatura
- Throws:
CRLException- Exceção em caso de erro na manipulação das CRLs
-
addX509DataContent
public static void addX509DataContent(Collection<Certificate> certificates, Collection<X509CRL> crls, X509Data x509Data)Adiciona os certificados e CRLs, presentes na estrutura X509Data, nas listas dadas- Parameters:
certificates- A lista de certificadoscrls- A lista de CRLsx509Data- A estrutura X509Data
-
getSubjectName
Retorna o nome do assinante- Returns:
- O nome do assinante
-
isEnveloped
public boolean isEnveloped()Verifica se a assinatura Xades é do tipo envelopada por meio da URI da w3 dentro dos nodos com a tag Transform- Returns:
- se ela é envelopada
-
getFormat
-
hasValidKeyInfoElement
-
resolveAttributeContentToBeHashed
public byte[] resolveAttributeContentToBeHashed(List<String> mandatoryAttrs, List<String> optionalAttrs, String namespace, String target, boolean withSignature) throws PbadException- Throws:
PbadException
-
getAlgorithmOid
Retorna o identificador do algoritmo de assinatura (OID) utilizado na assinatura.- Specified by:
getAlgorithmOidin interfaceSignature<Element>- Returns:
- Uma string contendo o OID do algoritmo de assinatura.
-