Bu sayfa salt okunur. Kaynağı görebilirsiniz ama değiştiremezsiniz. Bunun yanlış olduğunu düşünüyorsanız yöneticiye danışın.
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 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.
Signature#upgrade
<sxh java;highlight:[8,11] ;title:Java & .NET> 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)); </sxh> ==== Zaman damgalı(ES-T) İmza Atma ==== <sxh java;highlight:[11];title:Java & .NET Code> konteyner içinde imza nesnesi oluştur Signature signature = container.createSignature(certificate);
imzayı zaman damgalı imza tipine geliştir signature.upgrade(SignatureType.ES_T); imzayı dosyaya yaz container.write(new FileOuputStream(fileName)); </sxh>
<sxh java; highlight:[8]; title:Java Code> imza konteynerinidosyadan oku SignatureContainer container = SignatureFactory.readContainer(fileInputStream); ilk imzayı al Signature signature = container.getSignatures().get(0);
<sxh csharp; highlight:[8]; title:.NET Code> imza konteynerinidosyadan oku SignatureContainer container = SignatureFactory.readContainer(fileInputStream); ilk imzayı al Signature signature = container.getSignatures()[0];
Doğrulama bilgisini de içinde bulunduran imza tipi olan ES_XL tipinde imza oluşturmak için zaman damgalı imza atma örneklerindeki
<sxh java> imza oluştur … ve geliştir signature.upgrade(SignatureType.ES_T); </sxh>
satırını
<sxh java> geliştir signature.upgrade(SignatureType.ES_XL); </sxh> olarak değiştimek yeterlidir. ==== İmza Doğrulama ==== İmza doğrulamada SignatureContainer içindeki verifyAll() metodu kullanılır. <sxh java; highlight:[6]; title:Java Code> imzayı oku SignatureContainer container = SignatureFactory.readContainer(inputstream); inputstream.close();
SignatureContainer
verifyAll()
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()); </sxh>
<sxh csharp; highlight:[6]; title:.NET Code > 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()); </sxh> İ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.