FrameworkDemoiselle.gov.brCommunity Documentation

Capítulo 16. Funcionalidades

16.1. Carimbo de tempo com componente policy-impl-cades
16.2. Carimbo de tempo com componente policy-impl-pades
16.3. Requisições de carimbo de tempo
16.3.1. Para uma assinatura padrão CAdES
16.3.2. Para um conteúdo
16.3.3. Para o resumo (hash) de um conteúdo
16.4. Validdação do Carimbo de tempo com componente policy-impl-cades e policy-impl-pades
16.5. Validações de carimbo de tempo
16.5.1. Para uma assinatura padrão CAdES
16.5.2. Para uma assinatura padrão PAdES
16.5.3. Para um conteúdo
16.5.4. Para o resumo (hash) de um conteúdo
16.5.5. Definir timeout e tentativas de conexão

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);

É 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);

Veja a sessão de Validação