Class JadesVerifier
java.lang.Object
br.ufsc.labsec.signature.AbstractSignatureVerifier<JadesSignature>
br.ufsc.labsec.signature.conformanceVerifier.jades.JadesVerifier
- All Implemented Interfaces:
Verifier
public class JadesVerifier extends AbstractSignatureVerifier<JadesSignature>
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 classJadesVerifier.JsonStructureFinder -
Field Summary
Fields Modifier and Type Field Description protected CertPathcertPathCaminho de certificação do assinanteprotected TimetimeReferenceTempo que será levado em conta para validar a assinaturaFields inherited from class br.ufsc.labsec.signature.AbstractSignatureVerifier
component, report, selectedSignature, signatureChanged, signatureContainer -
Constructor Summary
Constructors Constructor Description JadesVerifier(JadesSignatureComponent component)Construtor -
Method Summary
Modifier and Type Method Description protected voidaddCertificatesToValidation(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 assinaturavoidaddProcessedCriticalHeader(String attr)Adiciona um atributo aos atributos processados que são críticosvoidaddValidationData(JadesSignature signature)Captura e adiciona artefatos presentes na assinatura (como certificados e CRLs) ao SignatureIdentityInformation da assinatura conforme a presença dos atributos CertificateValues e RevocationValuesbooleancheckCertPath(X509Certificate certificate)Verifica se é possível criar o caminho de certificação da assinaturaprotected booleancheckSignaturePolicyPeriod()Verifica se a assinatura foi feita dentro do período válido para o uso de políticas.booleanclear()Limpa as informações do verificadorSignatureAttributegetAttribute(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 assinaturasCertPathgetCertPath()Retorna o caminho de certificaçãoCertPathgetCertPath(Certificate certificate)Retorna o caminho de certificação do certificado dadoJadesSignatureComponentgetComponent()Obtém o componente de assinaturasList<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.PaReportgetPaReport()Retorna o relatório da política de assinaturaProfile.AdESTypegetPolicyType()Retorna o tipo da política de assinaturaJadesSignatureContainergetSignatureContainer()Retorna o container contendo a assinaturaSignaturePolicyInterfacegetSignaturePolicy()Retorna a Política de Assinatura da assinatura passada na construção desta classe.X509CertificategetSigningCertificate(JadesSignature sig)Busca o certificado do assinanteX509CertificategetSigningCertificateSigReport(SignatureReport sigReport)Busca certificado do assinante de um relatório de assinaturaTimegetTimeReference()Retorna o tempo em que o carimbo do tempo foi criado pela ACT.List<String>getTimeStampPriorityList()Retorna a lista de prioridades dos carimbos do tempoTimegetTSTimeReference()Retorna o tempo em que o carimbo do tempo foi criado pela ACT.booleanhasProofOfExistence()Retorna se há a presença de pelo menos um carimbo de tempo que forneça prova de existência.booleanhasSignedData()Verifica se a assinatura selecionada possui dados assinados.booleanneedSignedContent()Verifica se a assinatura possui conteúdo destacadovoidreport(Report report, SignatureContainer<JadesSignature> signatureContainer)Cria um objetoReportcom as informações da verificaçãovoidreport(Report report, SignatureWrapper wrapper)voidselectSignatures(boolean isComplete)Carrega as informações das assinaturas presentes no contâiner JAdESvoidselectTarget(byte[] target, byte[] detachedPayload)Inicializa os bytes do documento JAdES assinadovoidsetPolicyType(Profile.AdESType policyType)Atribue o tipo da política de assinaturavoidsetTimeReference(Time timeReference)Atribue uma refêrencia de tempo que será utilizada no algoritmo de validação dos caminhos de certificaçãobooleansupports(byte[] signature, byte[] detached)Verifica se o documento assinado é uma assinatura JAdESprotected booleanverifyAttributesInMandatedList(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 voidverifyConformity(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 booleanverifyOnlyUnmandatedAttributes(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 br.ufsc.labsec.signature.AbstractSignatureVerifier
getContainerBytes, getCurrentTimeReference, getSelectedSignature, makeVerificationPackage, setCurrentTimeReference, setup, setupLpaSig, signatureContainerChanged, withReturnArtifactsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface br.ufsc.labsec.signature.Verifier
checkLastCertificateName, isAnchored, isGovBr, isICPBr
-
Field Details
-
timeReference
Tempo que será levado em conta para validar a assinatura -
certPath
Caminho de certificação do assinante
-
-
Constructor Details
-
JadesVerifier
Construtor- Parameters:
component- Componente de assinatura JAdES
-
-
Method Details
-
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
errorsserã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
- 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
-
getComponent
Description copied from class:AbstractSignatureVerifierObtém o componente de assinaturas- Specified by:
getComponentin interfaceVerifier- Specified by:
getComponentin classAbstractSignatureVerifier<JadesSignature>- Returns:
- Componente de assinatura
-
getSignatureContainer
Description copied from class:AbstractSignatureVerifierRetorna o container contendo a assinatura- Specified by:
getSignatureContainerin classAbstractSignatureVerifier<JadesSignature>- Returns:
- Container da assinatura
-
getAvailableAttributes
Retorna os atributos das assinaturas- Returns:
- Os atributos das assinaturas
-
getSigningCertificateSigReport
Busca certificado do assinante de um relatório de assinatura- 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- Returns:
- Indica se a limpeza foi bem sucedida
-
report
public void report(Report report, SignatureContainer<JadesSignature> signatureContainer) throws VerificationExceptionCria um objetoReportcom as informações da verificação- Specified by:
reportin classAbstractSignatureVerifier<JadesSignature>- Parameters:
report- O relatório a ser preenchidosignatureContainer- Contêiner com as assinaturas- Throws:
VerificationException- Exceção caso haja algum problema na verificação
-
report
- Throws:
VerificationException
-
needSignedContent
public boolean needSignedContent()Verifica se a assinatura possui conteúdo destacado- Returns:
- Indica se a assinatura possui conteúdo destacado
-
getMandatedAttributes
Retorna uma lista de atributos obrigatórios- Returns:
- Uma lista de atributos obrigatórios
-
addValidationData
Description copied from class:AbstractSignatureVerifierCaptura e adiciona artefatos presentes na assinatura (como certificados e CRLs) ao SignatureIdentityInformation da assinatura conforme a presença dos atributos CertificateValues e RevocationValues- Specified by:
addValidationDatain classAbstractSignatureVerifier<JadesSignature>- Parameters:
signature- A assinatura
-
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- 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- 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- Specified by:
getSigningCertificatein classAbstractSignatureVerifier<JadesSignature>- 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
-
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.
-
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.
-
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
-
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
-
hasSignedData
public boolean hasSignedData()Verifica se a assinatura selecionada possui dados assinados. Retorna true se a assinatura não for do tipo detached, ou se for do tipo detached e houver dados assinados (signedData) disponíveis. Caso a assinatura seja detached e não haja dados assinados, retorna false.- Returns:
- true se há dados assinados ou se a assinatura não for detached, caso contrário false.
-