Class JadesVerifier
java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.jades.JadesVerifier
- All Implemented Interfaces:
Verifier
public class JadesVerifier extends Object implements Verifier
Esta classe implementa os métodos para verificação de uma assinatura JAdES.
Estende
Verifier
.-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
JadesVerifier.JsonStructureFinder
-
Field Summary
-
Constructor Summary
Constructors Constructor Description JadesVerifier(JadesSignatureComponent jadesSignatureComponent)
Construtor -
Method Summary
Modifier and Type Method Description protected void
addCertificatesToValidation(SignatureReport sigReport, Certificate cert)
Realiza a verificação dos certificados e CRLs do caminho de certificação da assinatura e adiciona os resultados ao relatório da assinaturavoid
addProcessedCriticalHeader(String attr)
Adiciona um atributo aos atributos processados que são críticosvoid
addValidationData(JadesSignature signature)
Adiciona novos certificados e CRLs ao SignatureIdentityInformation da assinatura de acordo com a presença dos atributos CertificateValues e RevocationValuesboolean
checkCertPath(X509Certificate certificate)
Verifica se é possível criar o caminho de certificação da assinaturaprotected boolean
checkSignaturePolicyPeriod()
Verifica se a assinatura foi feita dentro do período válido para o uso de políticas.boolean
clear()
Limpa as informações do verificadorSignatureAttribute
getAttribute(JadesSignature signature, Class<? extends SignatureAttribute<JadesAttrCommonStruct>> attributeClass)
Retorna Retorna um atributo na assinatura, se presenteSignatureAttribute<JadesAttrCommonStruct>
getAttribute(Class<? extends SignatureAttribute<JadesAttrCommonStruct>> attributeClass)
Retorna Retorna um atributo na assinatura, se presenteList<SignatureAttribute<JadesAttrCommonStruct>>
getAttributeInstancesList(List<String> attributeClasses)
Retorna a lista de atributos na assinaturaList<String>
getAvailableAttributes()
Retorna os atributos das assinaturasCertPath
getCertPath()
Retorna o caminho de certificaçãoCertPath
getCertPath(Certificate certificate)
Retorna o caminho de certificação do certificado dadoTime
getCurrentTimeReference()
Retorna o tempo atual definido pelo verificador.JadesSignatureComponent
getJadesSignatureComponent()
Obtém o componente de assinaturas JAdESList<String>
getMandatedAttributes()
Retorna uma lista de atributos obrigatóriosList<TstToken>
getOrderedTimeStamps()
Retorna uma lista de atributos de carimbo do tempo ordenada por identificador, de acordo com o especificado na lista de prioridade.PaReport
getPaReport()
Retorna o relatório da política de assinaturaProfile.AdESType
getPolicyType()
Retorna o tipo da política de assinaturaJadesSignature
getSelectedSignature()
Retorna a assinatura no documento selecionada para verificaçãoSignaturePolicyInterface
getSignaturePolicy()
Retorna a Política de Assinatura da assinatura passada na construção desta classe.X509Certificate
getSigningCertificate(JadesSignature sig)
Busca o certificado do assinanteX509Certificate
getSigningCertificateSigReport(SignatureReport sigReport)
Busca certificado do assinante de um relatório de assinaturaTime
getTimeReference()
Retorna o tempo em que o carimbo do tempo foi criado pela ACT.List<String>
getTimeStampPriorityList()
Retorna a lista de prioridades dos carimbos do tempoTime
getTSTimeReference()
Retorna o tempo em que o carimbo do tempo foi criado pela ACT.boolean
hasProofOfExistence()
Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.boolean
needSignedContent()
Verifica se a assinatura possui conteúdo destacadovoid
report(Report report, SignatureBytesWrapper wrapper)
Cria um objetoReport
com as informações da verificaçãovoid
selectSignatures(boolean isComplete)
Carrega as informações das assinaturas presentes no contâiner JAdESvoid
selectTarget(byte[] target, byte[] detachedPayload)
Inicializa os bytes do documento JAdES assinadovoid
setCurrentTimeReference(Time currentTimeReference)
Define o tempo atual à ser utilizado pelo verificador.void
setPolicyType(Profile.AdESType policyType)
Atribue o tipo da política de assinaturavoid
setTimeReference(Time timeReference)
Atribue uma refêrencia de tempo que será utilizada no algoritmo de validação dos caminhos de certificaçãoboolean
supports(byte[] signature, byte[] detached)
Verifica se o documento assinado é uma assinatura JAdESprotected boolean
verifyAttributesInMandatedList(List<String> signatureAttributeList, 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 void
verifyConformity(CertPath certPath, boolean advanced, SignatureReport report)
Verifica se a assinatura pertence a ICP-Brasil e adiciona a InitialSignatureReport a legislação ou âncoro de confiança que é respeitada pelo certificado do assinanteprotected boolean
verifyOnlyUnmandatedAttributes(List<String> signatureAttributeList, List<String> attributesToExclude, SignatureReport sigReport)
Verifica apenas os atributos que não são obrigatórios segundo a lista passada.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface br.ufsc.labsec.signature.Verifier
checkLastCertificateName, isAnchored, isGovBr, isICPBr
-
Field Details
-
certPath
Caminho de certificação do assinante
-
-
Constructor Details
-
JadesVerifier
Construtor- Parameters:
jadesSignatureComponent
- Componente de assinatura JAdES
-
-
Method Details
-
getJadesSignatureComponent
Obtém o componente de assinaturas JAdES- Returns:
- Componente de assinatura JAdES
-
selectTarget
Inicializa os bytes do documento JAdES assinado- Parameters:
target
- Os bytes do documento JAdES assinadodetachedPayload
- Os bytes do conteúdo assinado no documento- Throws:
VerificationException
- Exceção caso os bytes não sejam uma assinatura válida
-
selectSignatures
public void selectSignatures(boolean isComplete)Carrega as informações das assinaturas presentes no contâiner JAdES- Parameters:
isComplete
- Se o relatório deve ser completo ou não
-
verifyConformity
Verifica se a assinatura pertence a ICP-Brasil e adiciona a InitialSignatureReport a legislação ou âncoro de confiança que é respeitada pelo certificado do assinante- Parameters:
certPath
- caminho de certificaçãoadvanced
- se a assinatura é avançadareport
- O relatório de verificação da assinatura
-
getOrderedTimeStamps
Retorna uma lista de atributos de carimbo do tempo ordenada por identificador, de acordo com o especificado na lista de prioridade. No caso de a lista conter mais do que um carimbo com o mesmo identificador, eles são ordenado por tempo. Na ordenação por tempo, é considerado que o tempo mais recente (ou seja, maior) tem maior prioridade.- Returns:
- A lista de carimbo de tempo ordenada
- Throws:
SignatureAttributeException
-
verifyAttributesInMandatedList
protected boolean verifyAttributesInMandatedList(List<String> signatureAttributeList, 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 lista
errors
serão retornados os erros que comprometem a assinatura, já na lista dewarnings
seram 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
- Parameters:
signatureAttributeList
- lista de atributos presentes na assinatura que devem ser levados em contaattributesToExclude
- lista de atributos que devem ser desconsideradossigReport
- o relatório de verificação
-
verifyOnlyUnmandatedAttributes
protected boolean verifyOnlyUnmandatedAttributes(List<String> signatureAttributeList, 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á levada em conta.- Parameters:
signatureAttributeList
- lista de atributos da assinaturaattributesToExclude
- atributos a serem ignoradossigReport
-
-
getAttributeInstancesList
public List<SignatureAttribute<JadesAttrCommonStruct>> getAttributeInstancesList(List<String> attributeClasses)Retorna a lista de atributos na assinatura- Returns:
- lista de atributos presente na assinatura
-
getAttribute
public SignatureAttribute<JadesAttrCommonStruct> getAttribute(Class<? extends SignatureAttribute<JadesAttrCommonStruct>> attributeClass) throws SignatureAttributeExceptionRetorna Retorna um atributo na assinatura, se presente- Returns:
- Atributo requisitado presente na assinatura
- Throws:
SignatureAttributeException
- quando o atributo não está presente na assinatura ou mal codificado
-
getAttribute
public SignatureAttribute getAttribute(JadesSignature signature, Class<? extends SignatureAttribute<JadesAttrCommonStruct>> attributeClass) throws SignatureAttributeExceptionRetorna Retorna um atributo na assinatura, se presente- Returns:
- Atributo requisitado presente na assinatura
- Throws:
SignatureAttributeException
- quando o atributo não está presente na assinatura ou mal codificado
-
getAvailableAttributes
Retorna os atributos das assinaturas- Specified by:
getAvailableAttributes
in interfaceVerifier
- Returns:
- Os atributos das assinaturas
-
getSigningCertificateSigReport
Busca certificado do assinante de um relatório de assinatura- Specified by:
getSigningCertificateSigReport
in interfaceVerifier
- Parameters:
sigReport
- Relatório da assinatura que deseja descobrir o assinante- Returns:
- Certificado do assinate
-
clear
public boolean clear()Limpa as informações do verificador -
report
Cria um objetoReport
com as informações da verificação- Specified by:
report
in interfaceVerifier
- Parameters:
report
- O relatório a ser preenchidowrapper
- Wrapper com os bytes da assinatura e do conteúdo assinado- Throws:
VerificationException
- Exceção caso haja algum problema na verificação
-
needSignedContent
public boolean needSignedContent()Verifica se a assinatura possui conteúdo destacado- Specified by:
needSignedContent
in interfaceVerifier
- Returns:
- Indica se a assinatura possui conteúdo destacado
-
getMandatedAttributes
Retorna uma lista de atributos obrigatórios- Specified by:
getMandatedAttributes
in interfaceVerifier
- Returns:
- Uma lista de atributos obrigatórios
-
addValidationData
Adiciona novos certificados e CRLs ao SignatureIdentityInformation da assinatura de acordo com a presença dos atributos CertificateValues e RevocationValues- Parameters:
signature
- A assinatura JAdES- Throws:
CertificateException
- Ocorre esta exceção quando for encontrado algum erro no certificadoIOException
- Ocorre esta exceção quando for encontrado algum erro no arquivo de entrada/saída
-
addCertificatesToValidation
protected void addCertificatesToValidation(SignatureReport sigReport, Certificate cert) throws SignatureNotICPBrExceptionRealiza a verificação dos certificados e CRLs do caminho de certificação da assinatura e adiciona os resultados ao relatório da assinatura- Parameters:
sigReport
- O relatório da verificação da assinaturacert
- O certificado do assinante- Throws:
AIAException
- Exceção em caso de erro ao obter o caminho de certificaçãoSignatureNotICPBrException
-
supports
Verifica se o documento assinado é uma assinatura JAdES- Specified by:
supports
in interfaceVerifier
- Parameters:
signature
- Os bytes do documento assinadodetached
- Os bytes do arquivo destacado- Returns:
- Indica se o documento assinado é uma assinatura JAdES
- Throws:
SignatureNotICPBrException
- Exceção caso a assinatura não seja feita com um certificado ICP-Brasil
-
getCertPath
Retorna o caminho de certificação do certificado dado- Specified by:
getCertPath
in interfaceVerifier
- Parameters:
certificate
- O certificado usado para gerar o caminho de certificação- Returns:
- O caminho de certificação do certificado dado
-
getSigningCertificate
Busca o certificado do assinante- Parameters:
sig
- A assinatura a ser verificada- Returns:
- O certificado do assinante
-
checkCertPath
Verifica se é possível criar o caminho de certificação da assinatura- Parameters:
certificate
- Certificado utilizado na assinatura- Returns:
- Indica se o caminho de certificação foi criado com sucesso
-
setPolicyType
Atribue o tipo da política de assinatura- Parameters:
policyType
- O tipo da política
-
getPolicyType
Retorna o tipo da política de assinatura- Returns:
- O tipo da política
-
getSelectedSignature
Retorna a assinatura no documento selecionada para verificação- Returns:
- A assinatura selecionada para verificação
-
getSignaturePolicy
Retorna a Política de Assinatura da assinatura passada na construção desta classe.- Returns:
- A política de assinatura
-
setTimeReference
Atribue uma refêrencia de tempo que será utilizada no algoritmo de validação dos caminhos de certificação- Parameters:
timeReference
- tempo que será usado como referência para a validação do caminho de certificação
-
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.- Returns:
- Horário em que o camrimbo 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.- Returns:
- Horário de tempo atual.
-
setCurrentTimeReference
Define o tempo atual à ser utilizado pelo verificador. -
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 camrimbo do tempo foi criado pela ACT ou horário atual.
-
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.
-
getTimeStampPriorityList
Retorna a lista de prioridades dos carimbos do tempo- Returns:
- a lista de prioridades dos carimbos do tempo
-
getCertPath
Retorna o caminho de certificação- Returns:
- O caminho de certificação
-
getPaReport
Retorna o relatório da política de assinatura- Returns:
- O relatório da política de assinatura
- Throws:
SignatureAttributeException
- Exceção em caso de erro no atributo
-
checkSignaturePolicyPeriod
protected boolean checkSignaturePolicyPeriod()Verifica se a assinatura foi feita dentro do período válido para o uso de políticas.- Returns:
- Indica se a assinatura está dentro do período válido para o uso de políticas
-
addProcessedCriticalHeader
Adiciona um atributo aos atributos processados que são críticos- Parameters:
attr
- Os atributos processados
-