Class AbstractVerifier
java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.cades.AbstractVerifier
- All Implemented Interfaces:
CadesAbstractVerifierInterface, AbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>
- Direct Known Subclasses:
SignatureVerifier, TimeStampVerifier
Esta classe trata as partes de verificação comuns entre assinaturas CAdES e
carimbos do tempo.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringprotected CertPathCaminho de certificação do assinanteprotected CadesSignatureComponentComponente de assinatura CAdESprotected AttributeListprotected List<org.bouncycastle.cert.ocsp.OCSPResp> Repositório de respostas OCSPprotected X509CertificateCertificado da autoridade de OCSPprotected AttributeListprotected AttributeListprotected booleanDefine se a referência de tempo foi definida com prova de existênciaprotected CadesSignatureAssinatura a ser verificadaprotected X509CertificateCertificado do assinante -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidVerifica se os algoritmos utilizados para assinatura e resumo criptográfico de carimbos de tempo são válidos conforme o DOC ICP-01.01.Retorna o caminho de certificaçãoRetorna o componente de assinaturas CAdESRetorna o tempo atual definido pelo verificador.protected SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> getInstance(Map<String, Integer> indexes, String identifier) Retorna a instância de um atributo específicoList<org.bouncycastle.cert.ocsp.OCSPResp> Retorna uma lista de respostas OCSP conhecida pelo verificadorRetorna o certificado do servidor OCSPRetorna uma lista de atributos de Carimbo do Tempo (aqueles referenciados na lista de prioridade) ordenada por identificador, de acordo com o especificado na lista de prioridade, e com cada grupo de mesmo identificador ordenado por tempo (TimeReference).Retorna os paramêtros passados para esse verificadorRetorna a assinatura passada na construção da classe.Retorna o certificado do assinanteRetorna o tempo em que o carimbo do tempo foi criado pela ACT.Retorna a lista de prioridades dos carimbos do tempoRetorna uma lista com todos os atributos de Carimbo do Tempo existentes na assinatura que foram referenciados na lista de prioridade.Retorna o tempo em que o carimbo do tempo foi criado pela ACT.booleanRetorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.voidinitialize(CadesSignature signature) Método para inicializar um CAdES Verifiervoidinitialize(CadesSignature signature, boolean isTimeStamp) Inicializa os valores de atributos da classevoidinitialize(CadesSignature signature, SignatureVerifierParams param) Método para inicializar um CAdES Verifiervoidinitialize(CadesSignature signature, SignatureVerifierParams params, boolean isTimeStamp) Inicializa os valores de atributos da classebooleanInforma se a assinatura a ser verificada é um carimbo de tempoprotected voidmakeVerificationPackage(SignatureReport signatureReport) orderTimeStamps(List<TimeStamp<?>> disorderedTimeStampList) Método auxiliar para ordenar os carimbos de tempovoidsetComponent(CadesSignatureComponent component) Define o componente de assinaturas cades.voidsetCurrentTimeReference(Date currentTimeReference) Define o tempo atual a ser utilizado pelo verificador.voidInforma a lista de OCSPs que devem ser usadas pelo verificadorvoidsetOcspServerCertificate(X509Certificate ocspServerCertificate) Define o certificado do servidor OCSPprotected voidDefine o certificado do signatáriovoidsetTimeReference(Date timeReference) Atribui uma refêrencia de tempo criado por alguma ACT confiável.abstract booleanverify(SignatureReport report) Verifica apenas os atributos obrigatórios e valida a assinatura.voidverifyAttributesInMandatedList(List<PbadException> exceptions, List<String> signatureAttributeList, List<String> mandatedAttributeList, List<String> attributesToExclude, SignatureReport sigReport) Os atributos da assinatura que tem o seu identificador presente na lista de atributos obrigatórios passados aqui serão verificados.protected voidverifyConformity(CertPath certPath, boolean advanced, SignatureReport report) Verifica se a assinatura pertence a ICP-Brasil e adiciona a InitialSignatureReport a legislação ou âncora de confiança respeitada pelo certificado do assinantevoidverifyOnlyUnmandatedAttributes(List<PbadException> exceptions, List<String> signatureAttributeList, List<String> mandatedAttributeList, List<String> optionalAttributeList, List<String> attributesToExclude, SignatureReport sigReport) Verifica apenas os atributos que não são obrigatórios segundo a lista passada.protected booleanMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface AbstractVerifierInterface
getSignaturePolicy
-
Field Details
-
ATTRIBUTE_NOT_FOUND
- See Also:
-
mandatedAttributes
-
optionalAttributes
-
prohibitedAttributes
-
signature
Assinatura a ser verificada -
certPath
Caminho de certificação do assinante -
ocspServerCertificate
Certificado da autoridade de OCSP -
ocspRespList
Repositório de respostas OCSP -
signerCert
Certificado do assinante -
proofOfExistence
protected boolean proofOfExistenceDefine se a referência de tempo foi definida com prova de existência -
component
Componente de assinatura CAdES
-
-
Constructor Details
-
AbstractVerifier
public AbstractVerifier()
-
-
Method Details
-
initialize
Método para inicializar um CAdES Verifier- Throws:
SignatureVerifierException
-
initialize
public void initialize(CadesSignature signature, SignatureVerifierParams param) throws SignatureVerifierException Método para inicializar um CAdES Verifier- Throws:
SignatureVerifierException
-
initialize
public void initialize(CadesSignature signature, boolean isTimeStamp) throws SignatureVerifierException Inicializa os valores de atributos da classe- Parameters:
signature- A assinatura a ser verificadaisTimeStamp- Indica se a assinatura a ser verificada é um carimbo de tempo- Throws:
SignatureVerifierException
-
initialize
public void initialize(CadesSignature signature, SignatureVerifierParams params, boolean isTimeStamp) throws SignatureVerifierException Inicializa os valores de atributos da classe- Parameters:
signature- A assinatura a ser verificadaparams- Os parâmetros de validaçãoisTimeStamp- Indica se a assinatura a ser verificada é um carimbo de tempo- Throws:
SignatureVerifierException
-
withReturnArtifacts
protected boolean withReturnArtifacts() -
makeVerificationPackage
-
getInstance
protected SignatureAttribute<org.bouncycastle.asn1.cms.Attribute> getInstance(Map<String, Integer> indexes, String identifier) throws UnknowAttributeException, SignatureAttributeExceptionRetorna a instância de um atributo específico- Parameters:
indexes- Índice do identificadoridentifier- Identificador- Returns:
- instância específica
- Throws:
UnknowAttributeException- Erro de atributo desconhecidoSignatureAttributeException- Erro no atributo
-
getTimeStamps
protected List<TimeStamp<?>> getTimeStamps() throws SignatureAttributeException, UnknowAttributeExceptionRetorna uma lista com todos os atributos de Carimbo do Tempo existentes na assinatura que foram referenciados na lista de prioridade. Passa por todos os atributos da assinatura, instanciando e adicionando na lista de retorno aqueles que tem um identificador referenciado na lista de prioridade.- Returns:
- A lista de carimbos de tempo na assinatura
- Throws:
SignatureAttributeException- Exceção em caso de erro nos atributos da assinaturaUnknowAttributeException- Exceção em caso de atributo desconhecido na assinatura
-
orderTimeStamps
-
getOrderedTimeStamps
public List<TimeStamp<?>> getOrderedTimeStamps() throws SignatureAttributeException, UnknowAttributeExceptionRetorna uma lista de atributos de Carimbo do Tempo (aqueles referenciados na lista de prioridade) ordenada por identificador, de acordo com o especificado na lista de prioridade, e com cada grupo de mesmo identificador ordenado por tempo (TimeReference). Na ordenação por tempo, é considerado que o tempo mais recente (ou seja, maior) tem maior prioridade.- Specified by:
getOrderedTimeStampsin interfaceCadesAbstractVerifierInterface- Returns:
- A lista de carimbo de tempo ordenada
- Throws:
SignatureAttributeException- Exceção em caso de erro nos atributos da assinaturaUnknowAttributeException- Exceção em caso de atributo desconhecido na assinatura
-
verifyAttributesInMandatedList
public void verifyAttributesInMandatedList(List<PbadException> exceptions, List<String> signatureAttributeList, List<String> mandatedAttributeList, List<String> attributesToExclude, SignatureReport sigReport) Os atributos da assinatura que tem o seu identificador presente na lista de atributos obrigatórios passados aqui serão verificados. Na listaerrorsserão retornados os erros que comprometem a assinatura, já na lista dewarningsseram retornados os erros que aconteceram mas não infuenciam na validade da assinatura. Os atributos que tem seu identificador presente na lista attributesToExclude não serão verificados mesmo que presentes na lista de atributos obrigatórios. O resultado da verificação será adicionado ao relatório dado.- Parameters:
exceptions- Lista de erros da verificação. Será atualizada com a lista de erros que tornam a assinatura inválidasignatureAttributeList- Lista de atributos presentes na assinatura que devem ser levados em contamandatedAttributeList- Lista de atributos que devem ser considerados obrigatóriosattributesToExclude- Lista de atributos que devem ser desconsideradossigReport- O relatório da verificação da assinatura
-
verifyOnlyUnmandatedAttributes
public void verifyOnlyUnmandatedAttributes(List<PbadException> exceptions, List<String> signatureAttributeList, List<String> mandatedAttributeList, List<String> optionalAttributeList, List<String> attributesToExclude, SignatureReport sigReport) Verifica apenas os atributos que não são obrigatórios segundo a lista passada. A lista de atributos que não devem ser verificados mesmo que não sejam obrigatórios será considerada.- Parameters:
signatureAttributeList- Lista de atributos da assinaturamandatedAttributeList- Lista de atributo obrigatórios, conforme a política de assinaturaattributesToExclude- Atributos a serem ignorados
-
setSignerCert
Define o certificado do signatário- Throws:
SignerCertificationPathException- Exceção em caso de erro durante a busca pelo certificado
-
getSignature
Retorna a assinatura passada na construção da classe.- Specified by:
getSignaturein interfaceAbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>- Returns:
- A assinatura CAdES
-
getTimeReference
Retorna o tempo em que o carimbo do tempo foi criado pela ACT. Caso nenhum carimbo do tempo existir na assinatura, retorna-se o tempo atual.- Returns:
- Horário em que o carimbo do tempo foi criado pela ACT ou horário atual.
-
getTSTimeReference
Retorna o tempo em que o carimbo do tempo foi criado pela ACT. Caso nenhum carimbo do tempo existir na assinatura, retorna-se nulo.- Specified by:
getTSTimeReferencein interfaceAbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>- Returns:
- Horário em que o carimbo do tempo foi criado pela ACT.
-
getCurrentTimeReference
Retorna o tempo atual definido pelo verificador. Caso o tempo atual não ter sido definido previamente, retorna-se nulo.- Specified by:
getCurrentTimeReferencein interfaceAbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>- Returns:
- Horário de tempo atual.
-
setCurrentTimeReference
Define o tempo atual a ser utilizado pelo verificador. -
hasProofOfExistence
public boolean hasProofOfExistence()Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.- Returns:
- Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.
-
setTimeReference
Atribui uma refêrencia de tempo criado por alguma ACT confiável. Esta referência será utilizada na validação dos caminhos de certificação. Portanto, deve-se atribuir somente referências de tempo válidas, que foneça prova de existência à assinatura.- Parameters:
timeReference- O horário criado por alguma ACT confiável que será usado na validação do caminho de certificação
-
getOcspList
Retorna uma lista de respostas OCSP conhecida pelo verificador- Returns:
- A lista de respostas OCSP
-
getOcspServerCertificate
Retorna o certificado do servidor OCSP- Returns:
- O certificado do servidor OCSP
-
setOcsps
Informa a lista de OCSPs que devem ser usadas pelo verificador- Parameters:
ocsps- A lista de respostas OCSP
-
setOcspServerCertificate
Define o certificado do servidor OCSP- Parameters:
ocspServerCertificate- O certificado do servidor
-
getTimeStampPriorityList
-
getParams
Retorna os paramêtros passados para esse verificador- Returns:
- Os parâmetros do verificador
-
getComponent
Retorna o componente de assinaturas CAdES- Specified by:
getComponentin interfaceAbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>- Specified by:
getComponentin interfaceCadesAbstractVerifierInterface- Returns:
- O componente de assinaturas CAdES
-
verify
Verifica apenas os atributos obrigatórios e valida a assinatura. Independente do resultado desse método, o método getSignatureValidationErrors deve ser chamado.- Parameters:
report- O relatório de verificação da assinatura- Returns:
- Indica se a assinatura é válida
- Throws:
PbadException- Exceção em caso de erro durante a validaçãoVerificationException- Exceção em caso de erro durante a validação
-
getCertPath
Retorna o caminho de certificação- Specified by:
getCertPathin interfaceAbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>- Returns:
- O caminho de certificação
-
getSignerCert
Retorna o certificado do assinante- Specified by:
getSignerCertin interfaceAbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>- Returns:
- O certificado do assinante
-
isTimeStamp
public boolean isTimeStamp()Informa se a assinatura a ser verificada é um carimbo de tempo- Specified by:
isTimeStampin interfaceAbstractVerifierInterface<CadesInformation, org.bouncycastle.asn1.cms.Attribute, CadesSignature>- Returns:
- Indica se a assinatura a ser verificada é um carimbo
-
setComponent
Define o componente de assinaturas cades.- Parameters:
component- Componente de assinatura cades.
-
checkTimeStampAlgorithmsConstraints
Verifica se os algoritmos utilizados para assinatura e resumo criptográfico de carimbos de tempo são válidos conforme o DOC ICP-01.01. Caso sejam inválidos, um erro é adicionado ao relatório de assinatura- Parameters:
sigReport- Relatório do carimbo de tempo
-
verifyConformity
Verifica se a assinatura pertence a ICP-Brasil e adiciona a InitialSignatureReport a legislação ou âncora de confiança respeitada pelo certificado do assinante- Parameters:
certPath- caminho de certificaçãoadvanced- se a assinatura é avançada
-