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.
 
 
 -