Bu, dökümanın eski bir sürümüdür!
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.
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
İmzayı oluşturan kodlama tipidir. ASN1 kodlamalı binary(CAdES), xml kodlamalı(XAdES) olmak üzere iki ana yapı bulunmaktadır. Desteklenen İmza formatları CAdES, XAdES.
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 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) |
İ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.
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.
// 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));
// 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));
// 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));
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ğ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());