C++ ile Sunumlara Dijital İmza Ekleme
Giriş
Dijital sertifika bir parola korumalı PowerPoint sunumu oluşturmak, belirli bir kuruluş veya kişi tarafından oluşturulmuş olarak işaretlenmek için kullanılır. Dijital sertifika, yetkili bir kuruluş – bir sertifika otoritesi – ile iletişime geçilerek elde edilebilir. Dijital sertifika sistemi kurulduktan sonra, File -> Info -> Protect Presentation yoluyla sunuma dijital imza eklemek için kullanılabilir:
Sunum birden fazla dijital imza içerebilir. Dijital imza sunuma eklendikten sonra, PowerPoint’te özel bir mesaj görüntülenecektir:
Sunumu imzalamak veya sunum imzalarının özgünlüğünü kontrol etmek için Aspose.Slides API IDigitalSignature arayüzünü, IDigitalSignatureCollection arayüzünü ve IPresentation.DigitalSignatures yöntemini sağlar. Şu anda dijital imzalar yalnızca PPTX formatı için desteklenmektedir.
PFX Sertifikasından Dijital İmza Ekleme
Aşağıdaki kod örneği, bir PFX sertifikasından dijital imza eklemeyi gösterir:
- PFX dosyasını açın ve PFX şifresini DigitalSignature nesnesine geçirin.
- Oluşturulan imzayı sunum nesnesine ekleyin.
auto pres = System::MakeObject<Presentation>();
// PFX dosyası ve PFX şifresi ile DigitalSignature nesnesi oluştur
auto signature = System::MakeObject<DigitalSignature>(u"testsignature1.pfx", u"testpass1");
// Yeni dijital imzaya yorum ekle
signature->set_Comments(u"Aspose.Slides digital signing test.");
// Dijital imzayı sunuma ekle
pres->get_DigitalSignatures()->Add(signature);
// Sunumu kaydet
pres->Save(u"SomePresentationSigned.pptx", SaveFormat::Pptx);
Şimdi sunumun dijital olarak imzalanıp imzalanmadığını ve değiştirilip değiştirilmediğini kontrol etmek mümkündür:
// Sunumu aç
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: ");
// Tüm dijital imzaların geçerli olup olmadığını kontrol et
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.");
}
}
SSS
Dosyadan mevcut imzaları kaldırabilir miyim?
Evet. Dijital imza koleksiyonu, tek bir öğeyi kaldırma ve tamamen temizleme yeteneklerini destekler; dosyayı kaydettikten sonra, sunumda hiçbir imza bulunmayacaktır.
İmzaladıktan sonra dosya “salt okunur” olur mu?
Hayır. Bir imza bütünlüğü ve yazar kimliğini korur ancak düzenlemeyi engellemez. Düzenlemeyi kısıtlamak için “Read-only” or a password ile birleştirebilirsiniz.
İmza farklı PowerPoint sürümlerinde doğru şekilde görüntülenecek mi?
İmza, OOXML (PPTX) kapsayıcısı için oluşturulmuştur. OOXML imzalarını destekleyen modern PowerPoint sürümleri, bu imzaların durumunu doğru bir şekilde gösterir.