ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:ortakimza:eimza-ortak-kutuphanesi

Bu, dökümanın eski bir sürümüdür!


Ortak E-İmza Kütüphanesi

ESYA Eİmza Ortak kütüphanesi ile farklı format ve tiplerde imzaların ortak programlama arayüzleri ile kullanılabilmesi sağlanmıştır. Elektronik imza hakkında daha fazla bilgiyi Bölüm 2 Elektronik İmza başlığında bulabilirsiniz.

Gereksinimler

ESYA API CMS Signature kütüphanesinin kullanılabilmesi için lisans dosyasına, sertifika doğrulama politikası ve sertifika deposu dosyalarına ihtiyacınız vardır. İmza doğrulama işlemi için ise yukarıdaki dosyalarla birlikte ESYA kütüphanesi yeterli olacaktır. Kanuni geçerliliği olan nitelikli imzaların atılabilmesi için ise güvenli bir donanım kullanılması zorunluğu vardır. Genel kullanım olarak akıllı kart kullanılmaktadır. Akıllı karta erişilebilmesi için akıllı kart okuyucusu sürücüsünün ve akıllı kartın sürücüsünün kurulması gerekmektedir. Akıllı kartın üreticisinin sağladığı kart izleme programı ile bilgisayarın karta erişimi kontrol

Kavramlar ve Arayüzler

İmza Formatı

İmzayı oluşturan kodlama tipidir. ASN1 kodlamalı binary(CAdES), xml kodlamalı(XAdES) olmak üzere iki ana yapı bulunmaktadır. Desteklenen İmza formatları CAdES, XAdES.

İmza Tipi

Eİmza standartları ile berlirlenmiş, bir imzanın içinde yer alan zaman damgası, doğrulama referansları gibi verilerin hangilerinin yer aldığını belirten yapılardır.

İmza kütüphanesinin desteklediği imza tipleri

İmza Tipi Özelliği
ES_BES Basit(Basic) Elektronik İmza
ES_T Zaman damgalı imza
ES_C Doğrulama verisine referans var
ES_X_Type1 Doğrulama verisi referansları ve imza değeri zaman damgalı
ES_X_Type2 Doğrulama verisi referansları zaman damgalı
ES_XL Doğrulama verisi imza içinde
ES_XL_Type1 Doğrulama verisi imza içinde ve doğrulama verisi referansları ve imza değeri zaman damgalı
ES_XL_Type2 Doğrulama verisi imza içinde Doğrulama verisi referansları zaman damgalı
ES_A Arşiv fomatı(uzun ömürlü koruma)

Ayrık/bütünleşik İmza

İmza verisinin imza içerisinde yer alıp almaması durumuna göre ayrık ve bütünleşik denilmektedir. Bunun yanında XML imza formatına özel enveloped imza vardır. Enveloped imza standartlaştırılamadığı (custom) için ortak kütüphane tarafından desteklenmemektedir. Enveloped imza için XML İmza bölümüne bakabilirsiniz.

Anahtar API Arayüzleri ve Tasarım

Bir kişinin ıslak imzasının, programlama arayüzü karşılığı Signature, bir yada daha fazla imzayı içinde barındıran yapı SignatureContainer İmza formatına göre SignatureContainer yaratma amacı ile kullanılan arayüz SignatureFactory'dir.

İmza yaratıldığında ES-BES tipindedir. Daha kompleks bir imza tipine Signature#upgrade metodu ile çevrilebilir.

Kütüphane Kullanımı

İmza Atma

// imza konteyneri yarat
SignatureContainer container = 	SignatureFactory.createContainer(SignatureFormat.CAdES, context);

// konteyner içinde imza nesnesi oluştur
Signature signature = container.createSignature(certificate);

// imzalanacak içerik ekle
signature.addContent(new SignableFile(file), false);

// imzala
signature.sign(cardSigner);

// imzayı yaz
container.write(new FileOuputStream(fileName));

Zaman damgalı(ES-T) İmza Atma

// konteyner içinde imza nesnesi oluştur
Signature signature = container.createSignature(certificate);

// imzalanacak içerik ekle
signature.addContent(new SignableFile(file), false);

// imzala
signature.sign(cardSigner);

// imzayı zaman damgalı imza tipine geliştir
signature.upgrade(SignatureType.ES_T);

// imzayı dosyaya yaz
container.write(new FileOuputStream(fileName));

Basit (ES-BES) İmzayı Zaman Damgalı İmzaya Çevirme

// imza konteynerinidosyadan oku
SignatureContainer container = SignatureFactory.readContainer(fileInputStream);

// ilk imzayı al
Signature signature = container.getSignatures().get(0);

// imzayı zaman damgalı imza tipine geliştir
signature.upgrade(SignatureType.ES_T);

// imzayı dosyaya yaz
container.write(new FileOuputStream(fileName));

// imza konteynerinidosyadan oku
SignatureContainer container = SignatureFactory.readContainer(fileInputStream);

// ilk imzayı al
Signature signature = container.getSignatures()[0];

// imzayı zaman damgalı imza tipine geliştir
signature.upgrade(SignatureType.ES_T);

// imzayı dosyaya yaz
container.write(new FileOuputStream(fileName));

Gelişmiş (ES-XL) imza

Doğrulama bilgisini de içinde bulunduran imza tipi olan ES_XL tipinde imza oluşturmak için zaman damgalı imza atma örneklerindeki

// imza oluştur
...
// ve geliştir
signature.upgrade(SignatureType.ES_T);

satırını

// geliştir
signature.upgrade(SignatureType.ES_XL);

olarak değiştimek yeterlidir.

İmza Doğrulama

İmza doğrulamada SignatureContainer içindeki verifyAll() metodu kullanılır.

// imzayı oku
SignatureContainer container = SignatureFactory.readContainer(inputstream);
inputstream.close();

// imza doğrula
ContainerValidationResult cvr = container.verifyAll();

// imza yapısı içerisindeki bütün imzalar geçerli mi?
assertEquals(ContainerValidationResultType.ALL_VALID, cvr.getResultType());

// imzayı oku
SignatureContainer container = SignatureFactory.readContainer(inputstream);
inputstream.Close();

// imza doğrula
ContainerValidationResult cvr = container.verifyAll();

// imza yapısı içerisindeki bütün imzalar geçerli mi?
Assert.AreEqual(ContainerValidationResultType.ALL_VALID, cvr.getResultType());

İmza Kütüphanesi Kullanımı

Bu bölümde imza atma, gelişirme, doğrulama ve benzer işlemler kod ile birlikte örneklenmektedir.

İmza Kütüphanesi Konfigürasyonu

Bir konfigürasyon dosyası aracılığı ile imza atma ve doğrulama ayarları yapılmakta ve çalışma zamanında değiştirilebilmektedir.

esya/ortakimza/eimza-ortak-kutuphanesi.1373887551.txt.gz · Son değiştirilme: 2013/07/15 11:25 Değiştiren: Ahmet Yetgin