| 12
 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;
	} |