PHP'de Sunumlara Dijital İmza Ekleme

Giriş

Dijital sertifika bir şifreyle korunan PowerPoint sunumu oluşturmak için kullanılır, belirli bir kuruluş veya kişi tarafından oluşturulmuş olarak işaretlenir. Dijital sertifika, yetkili bir kuruluş - bir sertifika otoritesi ile iletişime geçilerek temin edilebilir. Dijital sertifika sisteme kurulduktan sonra, Dosya -> Bilgi -> Sunumu Koru aracılığıyla sunuma dijital imza eklemek için kullanılabilir:

todo:image_alt_text

Sunum birden fazla dijital imza içerebilir. Dijital imza sunuma eklendikten sonra, PowerPoint’te özel bir mesaj görüntülenir:

todo:image_alt_text

Sunumu imzalamak veya sunum imzalarının özgünlüğünü kontrol etmek için Aspose.Slides API DigitalSignature sınıfını, DigitalSignatureCollection sınıfını ve Presentation::getDigitalSignatures methodunu 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 nasıl eklenir gösterir:

  1. PFX dosyasını açın ve PFX şifresini DigitalSignature nesnesine iletin.
  2. Oluşturulan imzayı sunum nesnesine ekleyin.
  # Sunum dosyasını açma
  $pres = new Presentation();
  try {
    # PFX dosyası ve PFX şifresi ile DigitalSignature nesnesi oluştur
    $signature = new DigitalSignature("testsignature1.pfx", "testpass1");
    # Yeni dijital imzaya yorum ekle
    $signature->setComments("Aspose.Slides digital signing test.");
    # Dijital imzayı sunuma ekle
    $pres->getDigitalSignatures()->add($signature);
    # Sunumu kaydet
    $pres->save("SomePresentationSigned.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

Artık sunumun dijital olarak imzalanıp imzalanmadığını ve değiştirilip değiştirilmediğini kontrol edebilirsiniz:

  # Sunumu aç
  $pres = new Presentation("SomePresentationSigned.pptx");
  try {
    if (java_values($pres->getDigitalSignatures()->size()) > 0) {
      $allSignaturesAreValid = true;
      echo("Signatures used to sign the presentation: ");
      # Tüm dijital imzaların geçerli olup olmadığını kontrol et
      foreach($pres->getDigitalSignatures() as $signature) {
        echo($signature->getComments() . ", " . $signature->getSignTime()->toString() . " -- " . $signature->isValid() ? "VALID" : "INVALID");
        $allSignaturesAreValid &= $signature->isValid();
      }
      if ($allSignaturesAreValid) {
        echo("Presentation is genuine, all signatures are valid.");
      } else {
        echo("Presentation has been modified since signing.");
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

SSS

Bir dosyadan mevcut imzaları kaldırabilir miyim?

Evet. Dijital imza koleksiyonu tek tek öğeleri kaldırmayı ve tamamen temizlemeyi destekler; dosyayı kaydettikten sonra sunumun hiç imzası olmaz.

İmzaladıktan sonra dosya “yalnızca okuma” olur mu?

Hayır. Bir imza bütünlüğü ve yazarlığı korur ancak düzenlemeleri engellemez. Düzenlemeyi kısıtlamak için bunu "Yalnızca okuma" veya bir şifre ile birleştirin.

İmza farklı PowerPoint sürümlerinde doğru görüntülenecek mi?

İmza OOXML (PPTX) konteyneri için oluşturulur. OOXML imzalarını destekleyen modern PowerPoint sürümleri, bu imzaların durumunu doğru bir şekilde gösterir.