1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
public static final boolean signPdf(String fname, String fnameS, String MdPCertificat, String PathToCertificat)
throws IOException, DocumentException, Exception
{
String FileKeyUncrypted="";
try {
CryptageSignatureElectronique CSE = new CryptageSignatureElectronique("***********");
traceur.tracer(ERREUR, "fileKeyPassword : "+PathToCertificat);
FileKeyUncrypted = CSE.decode(MdPCertificat);
traceur.tracer(ERREUR, "fileKeyPassword decrypté: "+FileKeyUncrypted);
}
catch(Exception e)
{
traceur.tracer(ERREUR, "Message: "+ e.getMessage());
}
traceur.tracer(ERREUR, "Fichier à signer: "+fname);
traceur.tracer(ERREUR, "Fichier signe: "+fnameS);
// Creation d'un KeyStore
traceur.tracer(ERREUR, "1");
KeyStore ks = KeyStore.getInstance("pkcs12");
traceur.tracer(ERREUR, "2");
// Chargement du certificat p12 dans el magasin
ks.load(new FileInputStream(PathToCertificat), FileKeyUncrypted.toCharArray());
traceur.tracer(ERREUR, "3");
String alias = (String)ks.aliases().nextElement();
traceur.tracer(ERREUR, "4");
// Recupération de la clef privée
PrivateKey key = (PrivateKey)ks.getKey(alias, FileKeyUncrypted.toCharArray());
traceur.tracer(ERREUR, "5");
// et de la chaine de certificats
Certificate[] chain = ks.getCertificateChain(alias);
traceur.tracer(ERREUR, "6");
// Lecture du document source
traceur.tracer(ERREUR, "7");
PdfReader pdfReader = new PdfReader((new File(fname)).getAbsolutePath());
traceur.tracer(ERREUR, "8");
File outputFile = new File(fnameS);
traceur.tracer(ERREUR, "9");
// Creation du tampon de signature
PdfStamper pdfStamper;
traceur.tracer(ERREUR, "10");
pdfStamper = PdfStamper.createSignature(pdfReader, null, '\0', outputFile);
traceur.tracer(ERREUR, "11");
PdfSignatureAppearance sap = pdfStamper.getSignatureAppearance();
traceur.tracer(ERREUR, "12");
sap.setCrypto(key, chain, null, PdfSignatureAppearance.SELF_SIGNED);
traceur.tracer(ERREUR, "13");
sap.setReason("Authentification sécurisée du document");
traceur.tracer(ERREUR, "14");
sap.setLocation("");
traceur.tracer(ERREUR, "15");
// Position du tampon sur la page (ici en bas a gauche page 1)
sap.setVisibleSignature(new Rectangle(10, 10, 50, 35), 1, "sign_rbl");
traceur.tracer(ERREUR, "16");
pdfStamper.setFormFlattening(true);
traceur.tracer(ERREUR, "17");
pdfStamper.close();
traceur.tracer(ERREUR, "18");
return true;
} |
Partager