FrameworkDemoiselle.gov.brCommunity Documentation
O código abaixo demostra como pode ser feita a chamada:
PKCS7Signer signer = PKCS7Factory.getInstance().factoryDefault();
Certificate[] certificateToTimeStamp = // Certificado que ir� requisitar o carimbo
signer.setCertificatesForTimeStamp(certificateToTimeStamp);
PrivateKey privateKeyToTimeStamp = // Chave privada que ir� requisitar o carimbo
signer.setPrivateKeyForTimeStamp(privateKeyToTimeStamp);
Certificate[] certificateToSign = // Certificado que ir� gerar a Assinatura
PrivateKey privateKeyToSign = // Chave privada que ir� gerar a Assinatura
signer.setCertificates(certificateToSign);
signer.setPrivateKey(privateKeyToSign);
// usando a politica com carimbo de tempo
signer.setSignaturePolicy(PolicyFactory.Policies.AD_RT_CADES_2_2);
// Assinatura desatachada
byte[] signature = signer.doDetachedSign(fileToSign);
O código abaixo demostra como pode ser feita a chamada neste caso, lembrando que o componente não anexa a assinatura no documento PDF:
PAdESSigner signerPades = new PAdESSigner();
Certificate[] certificateToTimeStamp = // Certificado que ir� requisitar o carimbo
signerPades.setCertificatesForTimeStamp(certificateToTimeStamp);
PrivateKey privateKeyToTimeStamp = // Chave privada que ir� requisitar o carimbo
signerPades.setPrivateKeyForTimeStamp(privateKeyToTimeStamp);
Certificate[] certificateToSign = // Certificado que ir� gerar a Assinatura
PrivateKey privateKeyToSign = // Chave privada que ir� gerar a Assinatura
signerPades.setCertificates(certificateToSign);
signerPades.setPrivateKey(privateKeyToSign);
// usando a politica com carimbo de tempo
signerPades.setSignaturePolicy(PolicyFactory.Policies.AD_RT_PADES_1_1);
// Assinatura desatachada
byte[] signature = signerPades.doDetachedSign(fileToSign);
Para obter um carimbo de tempo para uma assinatura CADeS, basta enviar o conteúdo da assinatura. O retorno será a assinatura com o carimbo embutido, veja no exemplo abaixo:
byte[] signatureFile = // array de bytes do conte�do a ser assinado e carimbado
CAdESTimeStampSigner varCAdESTimeStampSigner = new CAdESTimeStampSigner();
varCAdESTimeStampSigner.setCertificates(CertificateChain);
varCAdESTimeStampSigner.setPrivateKey(PrivateKey);
byte[] signatureWithTimeStamp = varCAdESTimeStampSigner
.doTimeStampForSignature(signatureFile);
É possível também obter o carimbo para o conteúdo de uma informação. Neste caso o carimbo não estará associado à assinatura
O código abaixo demosntra como é feita a requisição. O retorno é o arquivo do tipo TimeStampToken descrito na RFC 3161
byte[] content = // array de bytes do conte�do
CAdESTimeStampSigner varCAdESTimeStampSigner = new CAdESTimeStampSigner();
varCAdESTimeStampSigner.setCertificates(CertificateChain);
varCAdESTimeStampSigner.setPrivateKey(PrivateKey);
byte[] timeStampForContent = varCAdESTimeStampSigner.doTimeStampForContent(content);
A outra funcionalidade disponível permite enviar o resumo já calculado.
byte[] hash = // array de bytes do hash
CAdESTimeStampSigner varCAdESTimeStampSigner = new CAdESTimeStampSigner();
varCAdESTimeStampSigner.setCertificates(CertificateChain);
varCAdESTimeStampSigner.setPrivateKey(PrivateKey);
byte[] timeStampForContent = varCAdESTimeStampSigner.doTimeStampFromHashContent(hash);
Veja a sessão de Validação
byte[] signatureFile = // array de bytes da Assinatura
PAdESTimeStampSigner varPAdESTimeStampSigner = new PAdESTimeStampSigner();
List<Timestamp> listTimeStamp = varPAdESTimeStampSigner.checkTimeStampOnSignature(signatureFile);
if (!listTimeStamp.isEmpty()){
for (Timestamp ts : listTimeStamp){
System.out.println(ts.toString());
}
}
byte[] signatureFile = // array de bytes da Assinatura
CAdESTimeStampSigner varCAdESTimeStampSigner = new CAdESTimeStampSigner();
List<Timestamp> listTimeStamp = varCAdESTimeStampSigner.checkTimeStampOnSignature(signatureFile);
if (!listTimeStamp.isEmpty()){
for (Timestamp ts : listTimeStamp){
System.out.println(ts.toString());
}
}
Para validar o carimbo associado a um contéudo, é preciso enviar ao componente, o contéudo e a assinatura, conforme o código abaixo:
byte[] timeStampFile = // array de bytes da Assinatura
byte[] content = // array de bytes do conte�do assinado
CAdESTimeStampSigner varCAdESTimeStampSigner = new CAdESTimeStampSigner();
Timestamp varTimeStamp = varCAdESTimeStampSigner.checkTimeStampWithContent(timeStampFile, content);
byte[] timeStampFile = // array de bytes da Assinatura
byte[] hash = // array de bytes do hash do conte�do
CAdESTimeStampSigner varCAdESTimeStampSigner = new CAdESTimeStampSigner();
Timestamp varTimeStamp = varCAdESTimeStampSigner.checkTimeStampWithHash(timeStampFile, hash);