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:
CadesSignature
,IdCounterSignature
public 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 boolean
isDetached
Indica se a assinatura possui conteúdo destacadoprotected org.bouncycastle.cms.SignerInformation
signerInformation
Informações do assinante -
Constructor Summary
Constructors Modifier Constructor Description protected
CadesSignatureInformation(org.bouncycastle.cms.SignerInformation signerInformation, boolean isDetached, CmsParent<CadesSignature> parent)
Constrói umCadesSignatureInformation
-
Method Summary
Modifier and Type Method Description void
addCounterSignature(IdCounterSignature counterSignatureAttribute)
Adiciona uma contra-assinatura.void
addUnsignedAttribute(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute)
Adiciona um atributo não-assinadoprotected org.bouncycastle.cms.SignerId
buildSignerIdentifier(X509Certificate counterSignerCertificate)
Contrói umSignerId
para o certificado passado como parâmetrobyte[]
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 atributos assinados e não-assinados da assinaturaSignatureContainer<CadesSignature>
getContainer()
Retorna o contêiner da assinaturabyte[]
getContentToBeSigned()
Retorna os bytes do conteúdo que será assinadoCounterSignatureInterface
getCounterSignature(X509Certificate signerCertificate)
Retorna a contra-assinaturaList<CounterSignatureInterface>
getCounterSignatures()
Retorna a lista de todas as contra-assinaturasorg.bouncycastle.asn1.cms.Attribute
getEncodedAttribute(String attributeId)
Obtém a codificação do primeiro atributo com este identificador na assinaturaorg.bouncycastle.asn1.cms.Attribute
getEncodedAttribute(String attributeId, Integer index)
Retorna um objeto do atributo desejadobyte[]
getMessageDigest(org.bouncycastle.cms.SignerInformation signerInformation)
Retorna o message digest para uma assinatura CadesSignatureModeCAdES
getMode()
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*String
getSignaturePolicyHashValue()
Retorna o valor de hash da políticaString
getSignaturePolicyIdentifier()
Retorna o identificador da política de assinatura usadaString
getSignaturePolicyUri()
Obtem a URI da LPA que contém a política de assinatura da assinaturabyte[]
getSignatureValue()
Retorna os bytes de uma assinaturabyte[]
getSignatureValueHash(String hashAlgorithmName)
Utiliza o algoritmo indicado para realizar o resumo criptográfico da assinaturaList<String>
getSignedAttributeList()
org.bouncycastle.asn1.cms.AttributeTable
getSignedAttributes()
Retorna os atributos assinadosbyte[]
getSignedContent()
org.bouncycastle.cms.CMSSignedData
getSignedData()
Retorna uma representação do contêiner de assinaturas.org.bouncycastle.cms.SignerInformation
getSignerInformation()
Retorna oSignerInformation
.org.bouncycastle.cms.SignerInformationVerifier
getSignerInformationVerifier(X509Certificate signerCertificate)
Constrói umSignerInformationVerifier
relativo ao signerCertificate.List<String>
getUnsignedAttributeList()
org.bouncycastle.asn1.cms.AttributeTable
getUnsignedAttributes()
Retorna os atributos não-assinadosboolean
isArchiveTimeStampHashValid(String hashAlgorithmName, Time timeReference, boolean hashIncludingTag, byte[] expected)
boolean
isArchiveTimeStampWithATSHashValueValid(String hashAlgorithmId, CadesSignature signature, byte[] atsHashIndexV3, byte[] expected)
boolean
isExternalSignedData()
Informa se a assinatura possui conteúdo destacadoboolean
isSigAndRefsHashValid(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*boolean
isSignatureValueHashValid(String hashAlgorithmName, byte[] expected)
void
removeUnsignedAttribute(String attributeId, int index)
Remove um atributo não-assinadovoid
replaceChildSignature(org.bouncycastle.cms.SignerInformation counterSignerToReplace)
Substitui o primeiro contra-assinante que tiver o mesmo identificador do assinante passado como parâmetro.protected void
replaceSignerInformation()
Atualiza as informações doSignerInformation
da assinaturavoid
replaceUnsignedAttribute(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute, Integer index)
Substitui um atributo não assinado qualquervoid
setParent(CmsParent<CadesSignature> parent)
Atribue o CMS ao qual o assinante pertenceString
toString()
Retorna o identificador do assinanteboolean
verify(X509Certificate signerCertificate, SignatureReport sigReport, List<PbadException> exceptions, boolean isIcpBr)
Verifica a integridade da assinatura
-
Field Details
-
signerInformation
protected org.bouncycastle.cms.SignerInformation signerInformationInformações do assinante -
isDetached
protected boolean isDetachedIndica se a assinatura possui conteúdo destacado
-
-
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
-
setParent
Atribue o CMS ao qual o assinante pertence- Parameters:
parent
- O objeto CMS
-
getSignedAttributeList
-
getUnsignedAttributeList
-
getAttributeList
Retorna a lista de atributos assinados e não-assinados da assinatura- Specified by:
getAttributeList
in interfaceSignature<org.bouncycastle.asn1.cms.Attribute>
- Returns:
- A lista de atributos assinados e não-assinados da assinatura
-
getEncodedAttribute
public org.bouncycastle.asn1.cms.Attribute getEncodedAttribute(String attributeId, Integer index) throws SignatureAttributeNotFoundExceptionRetorna um objeto do atributo desejado- Specified by:
getEncodedAttribute
in 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:
getEncodedAttribute
in 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:
verify
in 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 umSignerInformationVerifier
relativo ao signerCertificate.- Parameters:
signerCertificate
- O certificado do assinante- Returns:
- O
SignerInformationVerifier
gerado - Throws:
VerificationException
- Exceção em caso de erro na construção do objeto
-
isExternalSignedData
public boolean isExternalSignedData()Informa se a assinatura possui conteúdo destacado- Specified by:
isExternalSignedData
in interfaceGenericCadesSignature
- Returns:
- Indica se a assinatura possui conteúdo destacado
-
getSignaturePolicyIdentifier
Retorna o identificador da política de assinatura usada- Specified by:
getSignaturePolicyIdentifier
in 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:
getSignatureValueHash
in 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:
addUnsignedAttribute
in 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 classeCounterSignatureGenerator
- Parameters:
counterSignatureAttribute
- O atributo da contra-assinatura
-
getSignerInformation
public org.bouncycastle.cms.SignerInformation getSignerInformation()Retorna oSignerInformation
.- Specified by:
getSignerInformation
in interfaceGenericCadesSignature
- Returns:
- O conjunto de informações do assinante
-
getSignatureValue
public byte[] getSignatureValue()Retorna os bytes de uma assinatura- Returns:
- Valor em bytes da assinatura
-
getUnsignedAttributes
public org.bouncycastle.asn1.cms.AttributeTable getUnsignedAttributes()Retorna os atributos não-assinados- Returns:
- Os atributos não-assinados
-
getSignedAttributes
public org.bouncycastle.asn1.cms.AttributeTable getSignedAttributes()Retorna os atributos assinados- Returns:
- Os atributos assinados
-
getCounterSignature
public CounterSignatureInterface getCounterSignature(X509Certificate signerCertificate) throws CounterSignatureExceptionRetorna a contra-assinatura- Specified by:
getCounterSignature
in interfaceGenericCadesSignature
- Parameters:
signerCertificate
- O certificado do contra assinante que se deseja obter a contra assinatura- Returns:
- A contra-assinatura feita pelo assinante dado
- Throws:
CounterSignatureException
- Exceção em caso de erro durante a busca pela contra-assinatura
-
getCounterSignatures
Retorna a lista de todas as contra-assinaturas- Specified by:
getCounterSignatures
in interfaceGenericCadesSignature
- Returns:
- A lista de contra-assinaturas
-
buildSignerIdentifier
protected org.bouncycastle.cms.SignerId buildSignerIdentifier(X509Certificate counterSignerCertificate)Contrói umSignerId
para o certificado passado como parâmetro- Parameters:
counterSignerCertificate
- Certificado o qual será criado umSignerId
- Returns:
- O objeto
SignerId
criado
-
replaceUnsignedAttribute
public void replaceUnsignedAttribute(SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> attribute, Integer index) throws PbadException, SignatureAttributeExceptionSubstitui um atributo não assinado qualquer- 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:
replaceChildSignature
in 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 ultimos iténs indicados com * são opicionais 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:
getSigAndRefsHashValue
in 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 ultimos iténs indicados com * são opicionais 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 doSignerInformation
da assinatura -
toString
Retorna o identificador do assinante -
getMode
Retorna o modo de assinatura- Specified by:
getMode
in interfaceGenericCadesSignature
- Returns:
- O modo da assinatura
-
getSignaturePolicyUri
Obtem a URI da LPA que contém a política de assinatura da assinatura- Specified by:
getSignaturePolicyUri
in interfaceGenericCadesSignature
- Returns:
- A URI da LPA
-
getSignaturePolicyHashValue
Retorna o valor de hash da política- Specified by:
getSignaturePolicyHashValue
in 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:
getArchiveTimeStampHashValue
in 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:
getArchiveTimeStampHashValue
in 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 calculo é 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:
PbadException
NoSuchAlgorithmException
IOException
-
isArchiveTimeStampWithATSHashValueValid
public boolean isArchiveTimeStampWithATSHashValueValid(String hashAlgorithmId, CadesSignature signature, byte[] atsHashIndexV3, byte[] expected) throws PbadException, IOException- Throws:
PbadException
IOException
-
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:
getSignedData
in interfaceCmsParent<CadesSignature>
- Returns:
- O objeto
CMSSignedData
-
getContentToBeSigned
public byte[] getContentToBeSigned()Retorna os bytes do conteúdo que será assinado- Specified by:
getContentToBeSigned
in interfaceCmsParent<CadesSignature>
- Returns:
- Os bytes do conteúdo que será assinado
-
getSignedContent
- Specified by:
getSignedContent
in interfaceCmsParent<CadesSignature>
- Throws:
CadesSignatureException
-
getContainer
Retorna o contêiner da assinatura- Specified by:
getContainer
in 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
-