Adicionar assinaturas digitais a apresentações em C++
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:
A apresentação pode conter mais de uma assinatura digital. Após a assinatura digital ser adicionada à apresentação, uma mensagem especial aparecerá no PowerPoint:
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.DigitalSignatures. 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:
- Abra o arquivo PFX e passe a senha do PFX para o objeto DigitalSignature.
- Adicione a assinatura criada ao objeto da apresentação.
auto pres = System::MakeObject<Presentation>();
// Criar objeto DigitalSignature com arquivo PFX e senha PFX
auto signature = System::MakeObject<DigitalSignature>(u"testsignature1.pfx", u"testpass1");
// Comentar nova assinatura digital
signature->set_Comments(u"Aspose.Slides digital signing test.");
// Adicionar assinatura digital à apresentação
pres->get_DigitalSignatures()->Add(signature);
// Salvar apresentação
pres->Save(u"SomePresentationSigned.pptx", SaveFormat::Pptx);
Agora é possível verificar se a apresentação foi assinada digitalmente e não foi modificada:
// Abrir apresentação
auto pres = System::MakeObject<Presentation>(u"SomePresentationSigned.pptx");
if (pres->get_DigitalSignatures()->get_Count() > 0)
{
bool allSignaturesAreValid = true;
Console::WriteLine(u"Signatures used to sign the presentation: ");
// Verificar se todas as assinaturas digitais são válidas
for (auto signature : pres->get_DigitalSignatures())
{
Console::WriteLine(signature->get_Certificate()->get_SubjectName()->get_Name()
+ u", "
+ signature->get_SignTime().ToString(u"yyyy-MM-dd HH:mm")
+ u" -- "
+ (signature->get_IsValid() ? System::String(u"VALID") : System::String(u"INVALID")));
allSignaturesAreValid &= signature->get_IsValid();
}
if (allSignaturesAreValid)
{
Console::WriteLine(u"Presentation is genuine, all signatures are valid.");
}
else
{
Console::WriteLine(u"Presentation has been modified since signing.");
}
}
Perguntas frequentes
Posso remover assinaturas existentes de um arquivo?
Sim. A coleção de assinaturas digitais suporta remover itens individuais e limpar completamente; depois de salvar o arquivo, a apresentação não terá assinaturas.
O arquivo torna‑se “somente‑leitura” após a assinatura?
Não. Uma assinatura preserva a integridade e a autoria, mas não impede edições. Para restringir a edição, combine-a com “Read-only” ou uma senha.
A assinatura será exibida corretamente em diferentes versões do PowerPoint?
A assinatura é criada para o contêiner OOXML (PPTX). Versões modernas do PowerPoint que suportam assinaturas OOXML exibem o status dessas assinaturas corretamente.