import java.io.FileInputStream;
Import java.io.FileOutputStream;
Import java.io.IOException;
Import java.security.GeneralSecurityException;
Import java.security.KeyStore;
Import java.security.PrivateKey;
Import java.security. Sicherheit;
Import java.security.cer t.Certificate;
Import java.security.cer t.CertificateException;
Import java.security.cer t.CertificateFactory;
Import java.security.cer t.X509Certificate;
Import java.util. Eigenschaften;
Import org.bouncycastle.jce.provider.BouncyCastleProvider;
Import com.itextpdf.text. Dokument;
Import com.itextpdf.text.DocumentException;
Import com.itextpdf.text. Punkt;
Import com.itextpdf.text.pdf.PdfReader;
Import com.itextpdf.text.pdf.PdfStamper;
Import com.itextpdf.text.pdf.PdfWriter;
allgemeine Kategorie EncryptWithCertificate {
/** Das resultierende pdf *
allgemeine statische Schnur RESULT1 = „c: /results/part1/chapter01/certificate_encryption.pdf“;
/** Das resultierende pdf *
allgemeine statische Schnur RESULT2 = „c: /results/part1/chapter01/certificate_decrypted.pdf“;
/** Das resultierende pdf *
allgemeine statische Schnur RESULT3 = „c: /results/part1/chapter01/certificate_encrypted.pdf“;
/**
* Eine Eigenschaftenakte, die PRIVAT ist.
* Sie sollten Ihre eigene Eigenschaftenakte bilden und diese Linie anpassen.
*
allgemeiner statischer Schnur WEG = „c: /home/blowagie/key.properties“;
/** Einige Eigenschaften verwendeten, als unterzeichnend. *
allgemeine Eigenschaften der statischen Eigenschaften = neue Eigenschaften ();
/**
* Stellt ein pdf her, das using zwei verschiedene allgemeine Bescheinigungen verschlüsselt wird.
* @param Dateiname der Weg zur resultierenden pdf-Akte
* @throws IOException
* @throws DocumentException
* @throws GeneralSecurityException
*
Öffentlichkeit leeres createPdf (Schnurdateiname)
Würfe IOException, DocumentException, GeneralSecurityException {
//-Schritt 1
Dokument dokumentieren = neues Dokument ();
//-Schritt 2
PdfWriter Verfasser = PdfWriter.getInstance (Dokument, neues FileOutputStream (RESULT1));
Bescheinigung cert1 = getPublicCertificate („c: /resources/encryption/foobar.cer“);
Bescheinigung cert2 = getPublicCertificate (properties.getProperty („ÖFFENTLICHKEIT“));
writer.setEncryption (neue Bescheinigung [] {cert1, cert2},
neuer int [] {PdfWriter.ALLOW_PRINTING, PdfWriter.ALLOW_COPY}, PdfWriter.ENCRYPTION_AES_128);
//-Schritt 3
document.open ();
//-Schritt 4
document.add (neuer Punkt („hallo Welt! "));
//-Schritt 5
document.close ();
}
/**
* Erhält eine allgemeine Bescheinigung von einer Bescheinigungsakte.
* @param Weg der Weg zur Bescheinigung
* @return ein Bescheinigungsgegenstand
* @throws IOException
* @throws CertificateException
*
allgemeines Bescheinigung getPublicCertificate (Schnurweg)
Würfe IOException, CertificateException {
FileInputStream ist = neues FileInputStream (Weg);
CertificateFactory CF = CertificateFactory.getInstance („X.509“);
X509Certificate CERT = (X509Certificate) cf.generateCertificate (ist);
Rückholcert;
}
/**
* Erhält einen privaten Schlüssel von einem KeyStore.
* @return ein PrivateKey Gegenstand
* @throws GeneralSecurityException
* @throws IOException
*
allgemeines PrivateKey getPrivateKey () wirft GeneralSecurityException, IOException {
Schnurweg = „c: /resources/encryption/.keystore“;
KeyStore ks = KeyStore.getInstance (KeyStore.getDefaultType ());
ks.load (neues FileInputStream (Weg), „f00b4r“ .toCharArray ());
PrivateKey PK = (PrivateKey) ks.getKey („foobar“, „f1lmf3st“ .toCharArray ());
Rückholpk;
}
/**
* Entschlüsselt ein pdf, das using eine Bescheinigung verschlüsselt wurde
* @param src das verschlüsselte pdf
* @param DEST das entschlüsselte pdf
* @throws IOException
* @throws DocumentException
* @throws GeneralSecurityException
*
Öffentlichkeit leeres decryptPdf (Schnur src, Schnur DEST)
Würfe IOException, DocumentException, GeneralSecurityException {
PdfReader Leser = neues PdfReader (src,
getPublicCertificate („c: /resources/encryption/foobar.cer“), getPrivateKey (), „BC“);
PdfStamper Stampfer = neues PdfStamper (Leser, neues FileOutputStream (DEST));
stamper.close ();
}
/**
* Verschlüsselt ein pdf using eine allgemeine Bescheinigung.
* @param src das originale pdf-Dokument
* @param DEST das verschlüsselte pdf-Dokument
* @throws IOException
* @throws DocumentException
* @throws CertificateException
*
Öffentlichkeit leeres encryptPdf (Schnur src, Schnur DEST)
Würfe IOException, DocumentException, CertificateException {
PdfReader Leser = neues PdfReader (src);
PdfStamper Stampfer = neues PdfStamper (Leser, neues FileOutputStream (DEST));
Bescheinigung CERT = getPublicCertificate („c: /resources/encryption/foobar.cer“);
stamper.setEncryption (neue Bescheinigung [] {CERT},
neuer int [] {PdfWriter.ALLOW_PRINTING}, PdfWriter.ENCRYPTION_AES_128);
stamper.close ();
}
/**
* Hauptmethode.
*
* @param args, die keine Argumente benötigten
* @throws DocumentException
* @throws IOException
* @throws GeneralSecurityException
*
allgemeine Staticlücke hauptsächlich (Schnur [] args)
Würfe IOException, DocumentException, GeneralSecurityException {
Security.addProvider (neues BouncyCastleProvider ());
properties.load (neues FileInputStream (WEG));
EncryptWithCertificate hallo = neues EncryptWithCertificate ();
hello.createPdf (RESULT1);
hello.decryptPdf (RESULT1, RESULT2);
hello.encryptPdf (RESULT2, RESULT3);
}
}
|