3.18. Passwort

Überblick

Generell gilt die Aussage, dass Sie alle Tests sowohl mit nicht-verschlüsselten als auch mit passwortgeschützten PDF-Dokumenten durchführen können. Passwörter werden beim Tag <assertThat /> angegeben. Die Syntax sieht folgendermaßen aus:

<!-- Tags for tests with passwords: -->

<hasEncryptionLength />
<hasOwnerPassword    />
<hasUserPassword     />

<!-- Access to encrypted PDF documents: -->
<assertThat testDocument=".."    (required)
            testPassword=".."    (required if the PDF under test is encrypted)
            masterDocument=".."  (required if a master PDF is used)
            masterPassword=".."  (required if the master PDF is encrypted)
/>

Diese Syntax gilt unabhängig davon, ob das Dokument mit einem User-Passwort oder einem Owner-Passwort verschlüsselt wurde.

Tests auf das Password selber

Es gibt Tests, die sich direkt auf ein Passwort beziehen. Wenn Sie ein PDF-Dokument mit einem Passwort öffnen (User- und Owner-Passwort), können Sie das andere Passwort auf seine Richtigkeit prüfen:

<!-- Verify the owner-password of the document: -->

<testcase name="hasOwnerPassword">
  <assertThat testDocument="content/diverseContentOnMultiplePages_encrypted.pdf"
              testPassword="user-password"              1
  >
    <hasOwnerPassword>owner-password</hasOwnerPassword> 2
  </assertThat>
</testcase>
<!-- Verify the user-password of the document: -->

<testcase name="hasUserPassword">
  <assertThat testDocument="content/diverseContentOnMultiplePages_encrypted.pdf"
              testPassword="owner-password"             1
  >
    <hasUserPassword>user-password</hasUserPassword>    2
  </assertThat>
</testcase>

1 1

Öffnen der Datei mit einem Passwort

2 2

Überprüfen des anderen Passwortes

Passwörter sollten im Source-Code lediglich für Testdokumente hart kodiert werden, wobei auch diese Aussage aus Sicherheitsgründen bedenklich ist. Hart kodiert bedeutet aber auch, dass das Passwort nie wechselt.

Test auf Verschlüsselungslänge

Mit welcher Verschlüsselungslänge wurde verschlüsselt:

<testcase name="hasEncryptionLength">
  <assertThat testDocument="content/diverseContentOnMultiplePages_encrypted.pdf"
              testPassword="user-password"
  >
    <hasEncryptionLength>128</hasEncryptionLength>
  </assertThat>
</testcase>