===== PAdES E-İmza Kütüphanesi ===== PAdES (Pdf Advanced Electronic Signatures) PDS ISO 32000-1 standardında nasıl imza atılması gerektiğini açıklayan ve ETSI tarafından TS 102 778 teknik spesifikasyonu döküman seti ile açıklanmış imza standardıdır. Bu dökümanlar ilk kısmı genel bakış olmak üzere 6 parçadan oluşmaktadır. ESYA PAdES kütüphanesi 3. kısım (BES ve EPES imza), 4. kısım (LTV- uzun dönemde doğrulanabilir imza) bölümlerini desteklemektedir. Bu kütüphane ortak imza kütüphanesi arayüzleri ile kullanılmakta ve Elektronik imza ortak kütüphanesi tanımları ile * ES_BES, * ES_EPES, * ES_T, * ES_XL ve * ES_A tipinde imza oluşturulabilmektedir. PAdES kütüphanesi altyapısında IText pdf işleme kütüphanesi kullanmaktadır. Proje bağımlılıklarında IText kütüphanesi ayrıca temin edilmelidir. ==== ES_BES imza atma ==== PDF dosyası imza konteyneri olarak okunur. Daha sonra createSignature metodu ile imza yapısı PDF içerinde yaratılır. // pdf dökümanı oku SignatureContainer pc = SignatureFactory.readContainer( SignatureFormat.PAdES, new FileInputStream("hello.pdf"), new Context()); // imza ekle Signature signature = pc.createSignature(SIGNER_CERTIFICATE); signature.setSigningTime(Calendar.getInstance()); signature.sign(SIGNER); // dosyaya yaz pc.write() ==== İmza Doğrulama ==== // imzalı dosyayı oku SignatureContainer pc = SignatureFactory.readContainer( SignatureFormat.PAdES, new FileInputStream("signed-est.pdf"), new Context()); // dogrula ContainerValidationResult cvr = pc.verifyAll(); System.out.println(cvr); assert cvr.getResultType() == ContainerValidationResultType.ALL_VALID; ==== ES_T imza atma ==== PAdESContext context = new PAdESContext(); context.setSignWithTimestamp(true); // pdf'i oku SignatureContainer pc = SignatureFactory.readContainer( SignatureFormat.PAdES, new FileInputStream("hello.pdf"), context); // add signature Signature signature = pc.createSignature(SIGNER.getSignersCertificate()); signature.setSigningTime(Calendar.getInstance()); signature.sign(SIGNER); // dosyaya yaz pc.write(new FileOutputStream("signed-est.pdf")); ==== LTV (ES_A) imza atma ==== PAdESContext context = new PAdESContext(); // ilk imzayı ES_T olarak at context.setSignWithTimestamp(true); SignatureContainer pc = SignatureFactory.readContainer(SignatureFormat.PAdES, new FileInputStream("hello.pdf"), context); // imza ekle Signature signature = pc.createSignature(SIGNER.getSignersCertificate()); signature.setSigningTime(Calendar.getInstance()); signature.sign(SIGNER); // imzayı LTV tipine upgrade et signature.upgrade(SignatureType.ES_A); // dosyaya yaz pc.write(new FileOutputStream("signed-lta.pdf")); |Önceki: [[esya:xades:eimza-xades-kutuphanesi|XAdES Eİmza]]|[[:start|Ana sayfa]] | Sonraki: [[:esya:asic:eimza-asic-kutuphanesi|ASiC Eİmza Paketi]] |