Adicionar Assinaturas Digitais a Apresentações em Java

Introdução

Certificado digital é usado para criar uma apresentação do PowerPoint protegida por senha, marcada como criada por uma organização ou pessoa específica. O certificado digital pode ser obtido entrando em contato com uma organização autorizada – uma autoridade certificadora. Após instalar o certificado digital no sistema, ele pode ser usado para adicionar uma assinatura digital à apresentação via Arquivo->Informações->Proteger Apresentação:

todo:image_alt_text

Uma apresentação pode conter mais de uma assinatura digital. Após a assinatura digital ser adicionada à apresentação, uma mensagem especial aparecerá no PowerPoint:

todo:image_alt_text

Para assinar a apresentação ou verificar a autenticidade das assinaturas da apresentação, a Aspose.Slides API fornece a interface IDigitalSignature, a interface IDigitalSignatureCollection e o método IPresentation.getDigitalSignatures . Atualmente, assinaturas digitais são suportadas apenas no formato PPTX.

Adicionar uma Assinatura Digital a partir de um Certificado PFX

O exemplo de código abaixo demonstra como adicionar uma assinatura digital a partir de um certificado PFX:

  1. Abra o arquivo PFX e passe a senha do PFX para o objeto DigitalSignature.
  2. Adicione a assinatura criada ao objeto de apresentação.
// Abrindo o arquivo de apresentação
Presentation pres = new Presentation();
try {
    // Cria objeto DigitalSignature com arquivo PFX e senha PFX 
    DigitalSignature signature = new DigitalSignature("testsignature1.pfx", "testpass1");

    // Comentário da nova assinatura digital
    signature.setComments("Aspose.Slides digital signing test.");

    // Adiciona assinatura digital à apresentação
    pres.getDigitalSignatures().add(signature);

    // Salva a apresentação
    pres.save("SomePresentationSigned.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

Agora é possível verificar se a apresentação foi assinada digitalmente e não foi modificada:

// Abrir apresentação
Presentation pres = new Presentation("SomePresentationSigned.pptx");
try {
    if (pres.getDigitalSignatures().size() > 0)
    {
        boolean allSignaturesAreValid = true;

        System.out.println("Signatures used to sign the presentation: ");

        // Verificar se todas as assinaturas digitais são válidas
        for (IDigitalSignature signature : pres.getDigitalSignatures())
        {
            System.out.println(signature.getComments() + ", "
                    + signature.getSignTime().toString() + " -- " + (signature.isValid() ? "VALID" : "INVALID"));
            allSignaturesAreValid &= signature.isValid();
        }

        if (allSignaturesAreValid)
            System.out.println("Presentation is genuine, all signatures are valid.");
        else
            System.out.println("Presentation has been modified since signing.");
    }
} finally {
    if (pres != null) pres.dispose();
}

Perguntas Frequentes

Posso remover assinaturas existentes de um arquivo?

Sim. A coleção de assinaturas digitais suporta remover itens individuais e limpar totalmente ; depois de salvar o arquivo, a apresentação não terá assinaturas.

O arquivo se torna “somente leitura” após a assinatura?

Não. Uma assinatura preserva a integridade e a autoria, mas não bloqueia edições. Para restringir a edição, combine-a com “Somente leitura” ou uma senha.

A assinatura será exibida corretamente em diferentes versões do PowerPoint?

A assinatura é criada para o contêiner OOXML (PPTX). As versões modernas do PowerPoint que suportam assinaturas OOXML exibem o status dessas assinaturas corretamente.