Class CadesSignatureInformation
java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.cades.CadesSignatureInformation
- All Implemented Interfaces:
CmsParent<CadesSignature>,GenericCadesSignature,Signature<org.bouncycastle.asn1.cms.Attribute>,SignatureObject
- Direct Known Subclasses:
CadesSimpleSignatureInformation
public abstract class CadesSignatureInformation extends Object implements CmsParent<CadesSignature>, GenericCadesSignature
Esta classe representa tanto uma assinatura quanto uma contra-assinatura CAdES.
Implementa
CmsParent e GenericCadesSignature.-
Field Summary
Fields Modifier and Type Field Description protected booleanisDetachedprotected org.bouncycastle.cms.SignerInformationsignerInformation -
Constructor Summary
Constructors Modifier Constructor Description protectedCadesSignatureInformation(org.bouncycastle.cms.SignerInformation signerInformation, boolean isDetached, CmsParent<CadesSignature> parent)Constrói umCadesSignatureInformation -
Method Summary
Modifier and Type Method Description voidaddCounterSignature(IdCounterSignature counterSignatureAttribute)Adiciona uma contra-assinatura.voidaddUnsignedAttribute(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute)Adiciona um atributo não-assinadoprotected org.bouncycastle.cms.SignerIdbuildSignerIdentifier(X509Certificate counterSignerCertificate)Constrói umSignerIdpara o certificado passado como parâmetrobooleanequals(Object obj)byte[]getArchiveTimeStampATSHashValue(String hashAlgorithmName, CadesSignature signature, byte[] atsHashIndexV3)Utiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamento para verificação do ArchiveTimesStampV3byte[]getArchiveTimeStampHashValue(String hashAlgorithmName)Utiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamentobyte[]getArchiveTimeStampHashValue(String hashAlgorithmName, Time timeReference)Utiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamento.byte[]getArchiveTimeStampHashValue(String hashAlgorithmName, Time timeReference, boolean hashIncludingTag)Utiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamento.List<String>getAttributeList()Retorna a lista de identificadores dos atributos utilizados no processo de assinatura.SignatureContainer<CadesSignature>getContainer()Retorna o contêiner da assinaturabyte[]getContentToBeSigned()Retorna os bytes do conteúdo que será assinadoList<Signature<org.bouncycastle.asn1.cms.Attribute>>getCounterSignatures()org.bouncycastle.asn1.cms.AttributegetEncodedAttribute(String attributeId)Obtém a codificação do primeiro atributo com este identificador na assinaturaorg.bouncycastle.asn1.cms.AttributegetEncodedAttribute(String attributeId, Integer index)Retorna um objeto do atributo desejadoFileFormatgetFormat()Retorna o formato de assinaturabyte[]getMessageDigest(org.bouncycastle.cms.SignerInformation signerInformation)Retorna o message digest para uma assinatura CadesSignatureModeCAdESgetMode()Retorna o modo de assinaturabyte[]getSigAndRefsHashValue(String hashAlgorithmName)Utiliza o algoritmo indicado para realizar o resumo criptográfico das seguintes informações em ordem: - Valor da assinatura - Carimbo do tempo da assinatura - Referências de certificados completa - Referências de dados de validação completa - Referências de certificados de atributo completas* - Referências de dados de validação de certificados de atributo completa*StringgetSignaturePolicyHashValue()Retorna o valor de hash da políticaStringgetSignaturePolicyIdentifier()Obtém o identificador da PA (Política de Assinatura) utilizada nesta assinatura.StringgetSignaturePolicyUri()Obtem a URI da LPA que contém a política de assinatura da assinaturabyte[]getSignatureValue()byte[]getSignatureValueHash(String hashAlgorithmName)Utiliza o algoritmo indicado para realizar o resumo criptográfico da assinaturaList<String>getSignedAttributeList()Retorna a lista de atributos assinadosorg.bouncycastle.asn1.cms.AttributeTablegetSignedAttributes()byte[]getSignedContent()org.bouncycastle.cms.CMSSignedDatagetSignedData()Retorna uma representação do contêiner de assinaturas.org.bouncycastle.cms.SignerInformationgetSignerInformation()org.bouncycastle.cms.SignerInformationVerifiergetSignerInformationVerifier(X509Certificate signerCertificate)Constrói umSignerInformationVerifierrelativo ao signerCertificate.List<String>getUnsignedAttributeList()Retorna a lista de atributos não-assinadosorg.bouncycastle.asn1.cms.AttributeTablegetUnsignedAttributes()inthashCode()booleanisArchiveTimeStampHashValid(String hashAlgorithmName, Time timeReference, boolean hashIncludingTag, byte[] expected)booleanisArchiveTimeStampWithATSHashValueValid(String hashAlgorithmId, CadesSignature signature, byte[] atsHashIndexV3, byte[] expected)booleanisExternalSignedData()Verifica se o dado assinado é externo à assinatura.booleanisSigAndRefsHashValid(String hashAlgorithmName, byte[] expected)Utiliza o algoritmo indicado para realizar o resumo criptográfico das seguintes informações em ordem: - Valor da assinatura - Carimbo do tempo da assinatura - Referências de certificados completa - Referências de dados de validação completa - Referências de certificados de atributo completas* - Referências de dados de validação de certificados de atributo completa*booleanisSignatureValueHashValid(String hashAlgorithmName, byte[] expected)voidremoveUnsignedAttribute(String attributeId, int index)Remove um atributo não-assinadovoidreplaceChildSignature(org.bouncycastle.cms.SignerInformation counterSignerToReplace)Substitui o primeiro contra-assinante que tiver o mesmo identificador do assinante passado como parâmetro.protected voidreplaceSignerInformation()Atualiza as informações doSignerInformationda assinaturavoidreplaceUnsignedAttribute(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute, int index)Substitui um atributo não assinado qualquervoidsetParent(CmsParent<CadesSignature> parent)StringtoString()Retorna o identificador do assinantebooleanverify(X509Certificate signerCertificate, SignatureReport sigReport, List<PbadException> exceptions, boolean isIcpBr)Verifica a integridade da assinaturaMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface br.ufsc.labsec.signature.conformanceVerifier.common.Signature
getAlgorithmOid
-
Field Details
-
signerInformation
protected org.bouncycastle.cms.SignerInformation signerInformation -
isDetached
protected boolean isDetached
-
-
Constructor Details
-
CadesSignatureInformation
protected CadesSignatureInformation(org.bouncycastle.cms.SignerInformation signerInformation, boolean isDetached, CmsParent<CadesSignature> parent)Constrói umCadesSignatureInformation- Parameters:
signerInformation- Objeto que encapsula uma assinaturaisDetached- Indica se a assinatura é destacadaparent- Objeto CMS ao qual o signerInformation pertence
-
-
Method Details
-
hashCode
public int hashCode() -
equals
-
setParent
-
getSignedAttributeList
Description copied from interface:SignatureRetorna a lista de atributos assinados- Specified by:
getSignedAttributeListin interfaceSignature<org.bouncycastle.asn1.cms.Attribute>- Returns:
- lista de atributos assinados
-
getUnsignedAttributeList
Description copied from interface:SignatureRetorna a lista de atributos não-assinados- Specified by:
getUnsignedAttributeListin interfaceSignature<org.bouncycastle.asn1.cms.Attribute>- Returns:
- lista de atributos não-assinados
-
getAttributeList
Description copied from interface:SignatureRetorna a lista de identificadores dos atributos utilizados no processo de assinatura. Se o atributo for do tipo CAdES, o identificador será um OID e se for do tipo XAdES, será o nome de uma tag- Specified by:
getAttributeListin interfaceSignature<org.bouncycastle.asn1.cms.Attribute>- Returns:
- A lista de atributos assinados e não-assinados da assinatura
-
getCounterSignatures
- Specified by:
getCounterSignaturesin interfaceSignature<org.bouncycastle.asn1.cms.Attribute>
-
getEncodedAttribute
public org.bouncycastle.asn1.cms.Attribute getEncodedAttribute(String attributeId, Integer index) throws SignatureAttributeNotFoundExceptionRetorna um objeto do atributo desejado- Specified by:
getEncodedAttributein interfaceSignature<org.bouncycastle.asn1.cms.Attribute>- Parameters:
attributeId- O identificador do atributoindex- Índice do atributo- Returns:
- Um objeto do atributo desejado
- Throws:
SignatureAttributeNotFoundException
-
getEncodedAttribute
public org.bouncycastle.asn1.cms.Attribute getEncodedAttribute(String attributeId) throws SignatureAttributeNotFoundExceptionObtém a codificação do primeiro atributo com este identificador na assinatura- Specified by:
getEncodedAttributein interfaceGenericCadesSignature- Parameters:
attributeId- O OID de identificação do atributo- Returns:
- A codificação específica do atributo
- Throws:
SignatureAttributeNotFoundException
-
verify
public boolean verify(X509Certificate signerCertificate, SignatureReport sigReport, List<PbadException> exceptions, boolean isIcpBr) throws VerificationExceptionVerifica a integridade da assinatura- Specified by:
verifyin interfaceGenericCadesSignature- Parameters:
signerCertificate- O certificado do assinantesigReport- O relatório de verificação da assinaturaisIcpBr- Se as assinaturas são ICP-BR- Returns:
- Indica se a assinatura é íntegra
- Throws:
VerificationException- Exceção em caso de erro durante a validação
-
getSignerInformationVerifier
public org.bouncycastle.cms.SignerInformationVerifier getSignerInformationVerifier(X509Certificate signerCertificate) throws VerificationExceptionConstrói umSignerInformationVerifierrelativo ao signerCertificate.- Parameters:
signerCertificate- O certificado do assinante- Returns:
- O
SignerInformationVerifiergerado - Throws:
VerificationException- Exceção em caso de erro na construção do objeto
-
isExternalSignedData
public boolean isExternalSignedData()Description copied from interface:GenericCadesSignatureVerifica se o dado assinado é externo à assinatura.- Specified by:
isExternalSignedDatain interfaceGenericCadesSignature- Returns:
- Indica se a assinatura possui conteúdo destacado
-
getSignaturePolicyIdentifier
Description copied from interface:GenericCadesSignatureObtém o identificador da PA (Política de Assinatura) utilizada nesta assinatura.- Specified by:
getSignaturePolicyIdentifierin interfaceGenericCadesSignature- Returns:
- O identificador da política de assinatura
- Throws:
PbadException- Exceção em caso de erro na obtenção da PA na assinatura
-
getSignatureValueHash
Utiliza o algoritmo indicado para realizar o resumo criptográfico da assinatura- Specified by:
getSignatureValueHashin interfaceGenericCadesSignature- Parameters:
hashAlgorithmName- O nome do algoritmo de resumo criptográfico- Returns:
- Os bytes do resumo criptográfico da assinatura
- Throws:
NoSuchAlgorithmException
-
isSignatureValueHashValid
-
addUnsignedAttribute
public void addUnsignedAttribute(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute) throws SignatureAttributeExceptionAdiciona um atributo não-assinado- Specified by:
addUnsignedAttributein interfaceSignature<org.bouncycastle.asn1.cms.Attribute>- Parameters:
attribute- O atributo a ser adicionado na assinatura- Throws:
SignatureAttributeException- Exceção em caso de erro no atributo a ser adicionado
-
addCounterSignature
Adiciona uma contra-assinatura. Esse método não deve ser utilizado por usuários da biblioteca. Para a adição de contra assinaturas o usuário deve utiliza a classe- Parameters:
counterSignatureAttribute- O atributo da contra-assinatura
-
getSignerInformation
public org.bouncycastle.cms.SignerInformation getSignerInformation()- Specified by:
getSignerInformationin interfaceGenericCadesSignature- Returns:
- O conjunto de informações do assinante
SignerInformation
-
getSignatureValue
public byte[] getSignatureValue()- Returns:
- Valor da assinatura em bytes
-
getUnsignedAttributes
public org.bouncycastle.asn1.cms.AttributeTable getUnsignedAttributes()- Returns:
- Os atributos não-assinados
-
getSignedAttributes
public org.bouncycastle.asn1.cms.AttributeTable getSignedAttributes()- Returns:
- Os atributos assinados
-
buildSignerIdentifier
protected org.bouncycastle.cms.SignerId buildSignerIdentifier(X509Certificate counterSignerCertificate)Constrói umSignerIdpara o certificado passado como parâmetro- Parameters:
counterSignerCertificate- Certificado o qual será criado umSignerId- Returns:
- O objeto
SignerIdcriado
-
replaceUnsignedAttribute
public void replaceUnsignedAttribute(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute, int index) throws SignatureAttributeExceptionSubstitui um atributo não assinado qualquer- Specified by:
replaceUnsignedAttributein interfaceSignature<org.bouncycastle.asn1.cms.Attribute>- Parameters:
attribute- O atributo que foi atualizadoindex- O índice do atributo em relação aos seus similares- Throws:
PbadException- Exceção em caso de erro na substituição do atributoSignatureAttributeException- Exceção em caso de erro no atributo a ser substituído
-
replaceChildSignature
public void replaceChildSignature(org.bouncycastle.cms.SignerInformation counterSignerToReplace)Substitui o primeiro contra-assinante que tiver o mesmo identificador do assinante passado como parâmetro.- Specified by:
replaceChildSignaturein interfaceCmsParent<CadesSignature>- Parameters:
counterSignerToReplace- O contra-assinante a ser substituído
-
getSigAndRefsHashValue
public byte[] getSigAndRefsHashValue(String hashAlgorithmName) throws PbadException, NoSuchAlgorithmExceptionUtiliza o algoritmo indicado para realizar o resumo criptográfico das seguintes informações em ordem: - Valor da assinatura - Carimbo do tempo da assinatura - Referências de certificados completa - Referências de dados de validação completa - Referências de certificados de atributo completas* - Referências de dados de validação de certificados de atributo completa*Os últimos iténs indicados com * são opcionais e podem ou não estar presentes. Os outros dados devem necessáriamente estar presentes para que se possa obter o resumo criptográfico.
- Specified by:
getSigAndRefsHashValuein interfaceGenericCadesSignature- Parameters:
hashAlgorithmName- O algoritmo a ser utilizado para o resumo- Returns:
- Os bytes do resumo criptográfico
- Throws:
PbadException- Exceção em caso de erro no cálculoNoSuchAlgorithmException
-
isSigAndRefsHashValid
public boolean isSigAndRefsHashValid(String hashAlgorithmName, byte[] expected) throws PbadExceptionUtiliza o algoritmo indicado para realizar o resumo criptográfico das seguintes informações em ordem: - Valor da assinatura - Carimbo do tempo da assinatura - Referências de certificados completa - Referências de dados de validação completa - Referências de certificados de atributo completas* - Referências de dados de validação de certificados de atributo completa*Os últimos iténs indicados com * são opcionais e podem ou não estar presentes. Os outros dados devem necessáriamente estar presentes para que se possa obter o resumo criptográfico.
- Parameters:
hashAlgorithmName- O algoritmo a ser utilizado para o resumo- Returns:
- Os bytes do resumo criptográfico
- Throws:
PbadException- Exceção em caso de erro no cálculo
-
replaceSignerInformation
protected void replaceSignerInformation()Atualiza as informações doSignerInformationda assinatura -
toString
Retorna o identificador do assinante -
getMode
Description copied from interface:GenericCadesSignatureRetorna o modo de assinatura- Specified by:
getModein interfaceGenericCadesSignature- Returns:
- O modo da assinatura
-
getFormat
Retorna o formato de assinatura -
getSignaturePolicyUri
Description copied from interface:GenericCadesSignatureObtem a URI da LPA que contém a política de assinatura da assinatura- Specified by:
getSignaturePolicyUriin interfaceGenericCadesSignature- Returns:
- A URI da LPA que contém a política de assinatura da assinatura
-
getSignaturePolicyHashValue
Description copied from interface:GenericCadesSignatureRetorna o valor de hash da política- Specified by:
getSignaturePolicyHashValuein interfaceGenericCadesSignature- Returns:
- O valor de hash da política
-
removeUnsignedAttribute
public void removeUnsignedAttribute(String attributeId, int index) throws SignatureAttributeNotFoundExceptionRemove um atributo não-assinado- Parameters:
attributeId- O identificador do atributo a ser removidoindex- O índice do atributo que será removido- Throws:
SignatureAttributeNotFoundException- Exceção caso o atributo não seja encontrado
-
getArchiveTimeStampHashValue
public byte[] getArchiveTimeStampHashValue(String hashAlgorithmName) throws NoSuchAlgorithmException, PbadExceptionUtiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamento- Specified by:
getArchiveTimeStampHashValuein interfaceGenericCadesSignature- Parameters:
hashAlgorithmName- O nome do algoritmo a ser utilizado para o resumo- Returns:
- Os bytes do resumo criptográfico
- Throws:
PbadException- Exceção em caso de erro no cálculoNoSuchAlgorithmException
-
getArchiveTimeStampHashValue
public byte[] getArchiveTimeStampHashValue(String hashAlgorithmName, Time timeReference) throws NoSuchAlgorithmException, PbadExceptionUtiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamento.- Specified by:
getArchiveTimeStampHashValuein interfaceGenericCadesSignature- Parameters:
hashAlgorithmName- O algoritmo a ser utilizado para o resumotimeReference- A data de referência do carimbo- Returns:
- Os bytes do resumo criptográfico
- Throws:
PbadException- Exceção em caso de erro no cálculoNoSuchAlgorithmException
-
getArchiveTimeStampHashValue
public byte[] getArchiveTimeStampHashValue(String hashAlgorithmName, Time timeReference, boolean hashIncludingTag) throws PbadException, NoSuchAlgorithmExceptionUtiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamento.- Parameters:
hashAlgorithmName- O algoritmo a ser utilizado para o resumotimeReference- A data de referência do carimbohashIncludingTag- Indica a forma de cálculo da hash, de acordo com as notas 2 e 3 da página 109 do ETSI TS 101 733 V2.2.1. Se verdadeiro, indica que o cálculo é feito sem incluir tag e length.- Returns:
- Os bytes do resumo criptográfico
- Throws:
PbadException- Exceção em caso de erro no cálculoNoSuchAlgorithmException
-
getArchiveTimeStampATSHashValue
public byte[] getArchiveTimeStampATSHashValue(String hashAlgorithmName, CadesSignature signature, byte[] atsHashIndexV3) throws NoSuchAlgorithmExceptionUtiliza o algoritmo indicado para realizar o resumo criptográfico do carimbo de tempo de arquivamento para verificação do ArchiveTimesStampV3- Parameters:
hashAlgorithmName- Algoritmo a ser usado para o resumo criptográficosignature- Assinatura com atributos a serem obtidosatsHashIndexV3- ATSHashIndex utilizado na verificação- Returns:
- Throws:
PbadExceptionNoSuchAlgorithmExceptionIOException
-
isArchiveTimeStampWithATSHashValueValid
public boolean isArchiveTimeStampWithATSHashValueValid(String hashAlgorithmId, CadesSignature signature, byte[] atsHashIndexV3, byte[] expected) throws PbadException, IOException- Throws:
PbadExceptionIOException
-
isArchiveTimeStampHashValid
public boolean isArchiveTimeStampHashValid(String hashAlgorithmName, Time timeReference, boolean hashIncludingTag, byte[] expected) throws PbadException- Throws:
PbadException
-
getSignedData
public org.bouncycastle.cms.CMSSignedData getSignedData()Retorna uma representação do contêiner de assinaturas.- Specified by:
getSignedDatain interfaceCmsParent<CadesSignature>- Returns:
- O objeto
CMSSignedData
-
getContentToBeSigned
public byte[] getContentToBeSigned()Retorna os bytes do conteúdo que será assinado- Specified by:
getContentToBeSignedin interfaceCmsParent<CadesSignature>- Returns:
- Os bytes do conteúdo que será assinado
-
getSignedContent
- Specified by:
getSignedContentin interfaceCmsParent<CadesSignature>- Throws:
CadesSignatureException
-
getContainer
Retorna o contêiner da assinatura- Specified by:
getContainerin interfaceCmsParent<CadesSignature>- Returns:
- O contêiner da assinatura
-
getMessageDigest
public byte[] getMessageDigest(org.bouncycastle.cms.SignerInformation signerInformation)Retorna o message digest para uma assinatura Cades- Parameters:
signerInformation- informações da assinatura cades- Returns:
- byte do message digest
-