ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:pades:eimza-pades-kutuphanesi

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"));

esya/pades/eimza-pades-kutuphanesi.txt · Son değiştirilme: 2014/01/21 09:04 Değiştiren: Beytullah Yiğit