Beispiel 7.4. Beispielimplementierung eines CryptoMaterialProviders
In diesem Beispiel wird gezeigt, wie ein CryptoMaterialProvider
implementiert werden kann. Dabei werden drei Passwörter definiert und es wird
eine sequenzielle Autorisierung versucht.
import com.levigo.jadice.format.pdf.crypt.CryptoMaterialProvider;
import com.levigo.jadice.format.pdf.crypt.CryptoMaterialReceiver;
import com.levigo.jadice.format.pdf.crypt.PasswordMaterial;
public class CompanyPasswordsProvider implements CryptoMaterialProvider<PasswordMaterial> {
private static final PasswordMaterial[] companyPasswords =
new PasswordMaterial[]{
new PasswordMaterial("foo"), //
new PasswordMaterial("bar"), //
new PasswordMaterial("foobar")
};
@Override
public void provide(CryptoMaterialReceiver<PasswordMaterial> receiver) {
for(PasswordMaterial companyPassword : companyPasswords) {
if(receiver.receive(companyPassword))
return;
}
receiver.cancel();
}
}
| Beispielpasswörter. |
| Durchlaufen jedes Passworts |
| Überprüfung des Passworts. Wenn der Receiver das Passwort autorisiert hat, wird 'true' zurückgegeben. Das PDF kann entschlüsselt werden. |
| Die Methode kann verlassen werden. Der Receiver hat das Passwort zur weiteren Verarbeitung an den SecurityHandler bereits weitergegeben. |
| Abbruch der Übermittlung des Passworts. Wenn die Autorisierung eines der drei vordefinierten Passwörter nicht erfolgreich war, muss ein Abbruch signalisiert werden. |
Beispiel 7.5. Setzen eines CryptoMaterialProviders
Das Beispiel zeigt wie der in Beispiel 7.4, „Beispielimplementierung eines CryptoMaterialProviders“ implementierte
CryptoMaterialProvider beim Ladevorgang verfügbar gemacht wird.
Reader reader = new Reader();
PDFStandardSecurityHandlerSettings settings =
reader.getSettings(PDFStandardSecurityHandlerSettings.class);
settings.setCryptoMaterialProvider(new CompanyPasswordsProvider());
// reader.read(..)
| Anfrage des Konfigurations-Objekts |
| Setzen des Providers aus vorangegangenem Beispiel |


