Class JadesSignature
java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.jades.JadesSignature
- All Implemented Interfaces:
Signature<JadesAttrCommonStruct>,SignatureObject
- Direct Known Subclasses:
CounterSignature
public class JadesSignature extends Object implements Signature<JadesAttrCommonStruct>, SignatureObject
Esta classe representa uma assinatura JAdES.
Implementa
Signature.-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classJadesSignature.ContentEncod -
Field Summary
Fields Modifier and Type Field Description booleanpayloadInBase64UrlIndica se é necessário codificar alguns elementos em Base64Url durante a verificação.protected DatetimeReference -
Constructor Summary
Constructors Constructor Description JadesSignature(String encodedProtectedHeader, String encodedSignature, JadesSignatureContainer container)Construtor de assinatura e sem atributos não assinadosJadesSignature(String encodedProtectedHeader, String encodedSignature, org.json.JSONObject unprotectedHeader, JadesSignatureContainer container)Construtor de assinatura e com atributos não assinados -
Method Summary
Modifier and Type Method Description voidaddProcessedCrit(String attr)voidaddUnsignedAttribute(SignatureAttribute<JadesAttrCommonStruct> attribute)Adiciona um atributo não-assinadobooleancontainsUnprotectedHeaders()Verifica a presença de unprotected headers na assinaturaStringgetAlgorithmOid()byte[]getArchiveTimeStampHashValue(String hashAlgorithmId)Calcula o valor de hash do carimbo de tempo de arquivamentoList<String>getAttributeList()Retorna a lista de Strings com os nomes dos atributos presentes na assinaturaList<X509Certificate>getCertificateChain()Busca por headers com os valores dos certificados.List<? extends Signature<JadesAttrCommonStruct>>getCounterSignatures()org.json.JSONObjectgetEncodedAttribute(String identifier)Retorna o atributo correspondente ao identificador dado como JSONObjectJadesAttrCommonStructgetEncodedAttribute(String identifier, Integer index)Retorna o atributo correspondente ao identificador ou índice dadoStringgetEncodedProtectedHeader()Retorna o valor codificado dos protected headersStringgetEncodedSignature()Retorna o valor codificado da assinaturaorg.json.JSONObjectgetEncodedUnprotectedHeaders()Retorna o valor do unprotected headers como JSONObject como um header 'etsiU'FileFormatgetFormat()StringgetPayloadFromSigDHeader()Retorna o valor do payload abtido por processamento do header sigDorg.json.JSONObjectgetProtectedHeaders()Retorna o valor do protected headers como JSONObjectObjectgetProtectedHeaderValue(String headerName)Retorna o valor de um protected headers através do nomebyte[]getRefsOnlyTimeStampHashValue(String hashAlgorithmId)Retorna o hash concatenado das referências do certificado com o hash das referências de revogação.byte[]getSigAndRefsHashValue(String hashAlgorithmId)Retorna o hash concatenado da assinatura, com o hash do carimbo do tempo, o hash das referências do certificado e com o hash das referências de revogação.StringgetSignaturePolicyIdentifier()Retorna o identificador da política de assinatura usadaStringgetSignaturePolicyUri()Obtem a URI da LPA que contém a política de assinatura da assinaturabyte[]getSignatureValueHash(String hashAlgorithmId)Retorna o valor de hash da assinaturaList<String>getSignedAttributeList()Retorna a lista de atributos assinadosbyte[]getSignerDataTimeStampHashValue(String hashAlgorithmId)Calcula o valor de hash do carimbo de tempoDategetTimeReference()org.json.JSONObjectgetUnprotectedHeaders()Retorna o valor do unprotected headers como JSONObjectObjectgetUnprotectedHeaderValue(String headerName)Retorna o valor de um unprotected headers através do nomeList<String>getUnsignedAttributeList()Retorna a lista de atributos não-assinadosinthashCode()voidinitiateCritHeader(Verifier jadesVerifier)booleanisDetached()Retorna se a assinatura é ou não destacadavoidreplaceUnsignedAttribute(SignatureAttribute<JadesAttrCommonStruct> attribute, int index)Substitui um atributo não-assinadovoidsetEtsiuEncod(JadesSignature.ContentEncod etsiuEncod)voidsetTimeReference(Date timeReference)voidvalidateCritHeader()voidverifyIntegrity(X509Certificate signerCertificate, SignatureReport report, boolean isComplete)Valida a integridade da assinatura
-
Field Details
-
payloadInBase64Url
public final boolean payloadInBase64UrlIndica se é necessário codificar alguns elementos em Base64Url durante a verificação. Isto é definido com o header 'b64'. -
timeReference
-
-
Constructor Details
-
JadesSignature
public JadesSignature(String encodedProtectedHeader, String encodedSignature, org.json.JSONObject unprotectedHeader, JadesSignatureContainer container) throws SignatureExceptionConstrutor de assinatura e com atributos não assinados- Parameters:
encodedProtectedHeader- Protected headers codficadosencodedSignature- Valor da assinatura codificadounprotectedHeader- Unprotected headerscontainer- Contêiner de assinatura JAdES- Throws:
SignatureException
-
JadesSignature
public JadesSignature(String encodedProtectedHeader, String encodedSignature, JadesSignatureContainer container) throws SignatureExceptionConstrutor de assinatura e sem atributos não assinados- Parameters:
encodedProtectedHeader- Protected headers codficadosencodedSignature- Valor da assinatura codificadocontainer- Contêiner de assinatura JAdES- Throws:
SignatureException
-
-
Method Details
-
hashCode
public int hashCode() -
setTimeReference
-
getTimeReference
-
getProtectedHeaderValue
Retorna o valor de um protected headers através do nome- Parameters:
headerName- O nome do header a ser buscado- Returns:
- O valor do header
-
getUnprotectedHeaderValue
Retorna o valor de um unprotected headers através do nome- Parameters:
headerName- O nome do header a ser buscado- Returns:
- O valor do header
-
verifyIntegrity
public void verifyIntegrity(X509Certificate signerCertificate, SignatureReport report, boolean isComplete)Valida a integridade da assinatura- Parameters:
report- O relatório de verificação da assinatura
-
getCertificateChain
Busca por headers com os valores dos certificados. Estes headers são "x5c" e "x5u", que podem conter toda a cadeia de certificados ou apenas o certificado do assinante.- Returns:
- A cadeia de certificados (pode conter apenas o certificado do assinante)
-
getSignedAttributeList
Description copied from interface:SignatureRetorna a lista de atributos assinados- Specified by:
getSignedAttributeListin interfaceSignature<JadesAttrCommonStruct>- Returns:
- lista de atributos assinados
-
getUnsignedAttributeList
Description copied from interface:SignatureRetorna a lista de atributos não-assinados- Specified by:
getUnsignedAttributeListin interfaceSignature<JadesAttrCommonStruct>- Returns:
- lista de atributos não-assinados
-
getAttributeList
Retorna a lista de Strings com os nomes dos atributos presentes na assinatura- Specified by:
getAttributeListin interfaceSignature<JadesAttrCommonStruct>- Returns:
- lista de Strings com os nomes dos atributos presentes na assinatura
-
getCounterSignatures
- Specified by:
getCounterSignaturesin interfaceSignature<JadesAttrCommonStruct>
-
getEncodedAttribute
public JadesAttrCommonStruct getEncodedAttribute(String identifier, Integer index) throws SignatureAttributeNotFoundExceptionRetorna o atributo correspondente ao identificador ou índice dado- Specified by:
getEncodedAttributein interfaceSignature<JadesAttrCommonStruct>- Parameters:
identifier- o identificador do atributoindex- o índice do atributo- Returns:
- o elemento XML do atributo na assinatura
- Throws:
SignatureAttributeNotFoundException
-
getFormat
- Specified by:
getFormatin interfaceSignature<JadesAttrCommonStruct>
-
getAlgorithmOid
- Specified by:
getAlgorithmOidin interfaceSignature<JadesAttrCommonStruct>
-
containsUnprotectedHeaders
public boolean containsUnprotectedHeaders()Verifica a presença de unprotected headers na assinatura- Returns:
- Indica se há unprotected headers na assinatura
-
getEncodedSignature
Retorna o valor codificado da assinatura- Returns:
- O valor codificado da assinatura
-
getEncodedProtectedHeader
Retorna o valor codificado dos protected headers- Returns:
- O valor codificado dos protected headers
-
getUnprotectedHeaders
public org.json.JSONObject getUnprotectedHeaders()Retorna o valor do unprotected headers como JSONObject- Returns:
- O JSONObject do unprotected headers
-
getEncodedUnprotectedHeaders
public org.json.JSONObject getEncodedUnprotectedHeaders()Retorna o valor do unprotected headers como JSONObject como um header 'etsiU'- Returns:
- O JSONObject do unprotected headers como entrada 'etsiU'
-
getProtectedHeaders
public org.json.JSONObject getProtectedHeaders()Retorna o valor do protected headers como JSONObject- Returns:
- O JSONObject do protected headers
-
getSignatureValueHash
Retorna o valor de hash da assinatura- Parameters:
hashAlgorithmId- O algoritmo a ser utilizado para o cálculo de hash- Returns:
- Array de bytes com valor de hash da assinatura
-
getRefsOnlyTimeStampHashValue
Retorna o hash concatenado das referências do certificado com o hash das referências de revogação.- Parameters:
hashAlgorithmId- O algoritmo a ser utilizado para o cálculo de hash- Returns:
- Array de bytes com valor de hash
-
getSigAndRefsHashValue
Retorna o hash concatenado da assinatura, com o hash do carimbo do tempo, o hash das referências do certificado e com o hash das referências de revogação.- Parameters:
hashAlgorithmId- O algoritmo a ser utilizado para o cálculo de hash- Returns:
- Array de bytes com valor de hash
- Throws:
PbadException- Exceção em caso de erro no cálculo
-
getArchiveTimeStampHashValue
public byte[] getArchiveTimeStampHashValue(String hashAlgorithmId) throws PbadException, IOExceptionCalcula o valor de hash do carimbo de tempo de arquivamento- Parameters:
hashAlgorithmId- O algoritmo a ser utilizado no cálculo- Returns:
- O valor de hash do carimbo
- Throws:
PbadExceptionIOException
-
getPayloadFromSigDHeader
Retorna o valor do payload abtido por processamento do header sigD- Returns:
- Throws:
SignatureAttributeExceptionIOException
-
getSignerDataTimeStampHashValue
public byte[] getSignerDataTimeStampHashValue(String hashAlgorithmId) throws PbadException, IOExceptionCalcula o valor de hash do carimbo de tempo- Parameters:
hashAlgorithmId- O algoritmo a ser utilizado no cálculo- Returns:
- O valor de hash do carimbo
- Throws:
PbadExceptionIOException
-
addUnsignedAttribute
public void addUnsignedAttribute(SignatureAttribute<JadesAttrCommonStruct> attribute) throws SignatureAttributeExceptionAdiciona um atributo não-assinado- Specified by:
addUnsignedAttributein interfaceSignature<JadesAttrCommonStruct>- Parameters:
attribute- O atributo a ser adicionado na assinatura- Throws:
SignatureAttributeException
-
replaceUnsignedAttribute
public void replaceUnsignedAttribute(SignatureAttribute<JadesAttrCommonStruct> attribute, int index) throws SignatureAttributeExceptionDescription copied from interface:SignatureSubstitui um atributo não-assinado- Specified by:
replaceUnsignedAttributein interfaceSignature<JadesAttrCommonStruct>- Parameters:
attribute- atributo a ser substituídoindex- índice do atributo a ser substituído- Throws:
SignatureAttributeException
-
getEncodedAttribute
public org.json.JSONObject getEncodedAttribute(String identifier) throws SignatureAttributeNotFoundExceptionRetorna o atributo correspondente ao identificador dado como JSONObject- Parameters:
identifier- O identificador do atributo- Returns:
- O JSONObject do atributo correspondente ao identificador dado
- Throws:
SignatureAttributeNotFoundException
-
isDetached
public boolean isDetached()Retorna se a assinatura é ou não destacada -
getSignaturePolicyUri
Obtem a URI da LPA que contém a política de assinatura da assinatura- Returns:
- A URI da LPA
-
getSignaturePolicyIdentifier
Retorna o identificador da política de assinatura usada- Returns:
- O identificador da política de assinatura
- Throws:
PbadException- Exceção em caso de erro na obtenção da PA na assinatura
-
initiateCritHeader
-
validateCritHeader
- Throws:
PbadException
-
addProcessedCrit
-
setEtsiuEncod
-