Beispiel 7.4. Beispielimplementierung eines CryptoMaterialProvider
s
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 CryptoMaterialProvider
s
Das Beispiel zeigt wie der in Beispiel 7.4, „Beispielimplementierung eines CryptoMaterialProvider
s“ 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 |