====== ASiC Eİmza Paketi ======
ESYA ASiC kütüphanesi ile [[http://www.etsi.org/deliver/etsi_ts/102900_102999/102918/01.01.01_60/ts_102918v010101p.pdf | ETSI TS 102 918]] standardına uygun şekilde imza paketleri oluşturulabilmektedir. Bu sayede bir ya da daha fazla imza, imzalanan veri(ler), ve doğrulama verileri bir zip dosyası içinde taşınabilmektedir.
===== Gerekler =====
ESYA API ASiC 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. Bunu yanında CAdES ya da XAdES imza atma kütüphanesi atılacak imza türüne göre ihtiyaçlar arasındadı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 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 üreticilerinin sağladığı bir kart izleme programı ile bilgisayarın karta erişimi ve kart içeriği kontrol edilebilir.
===== Kavramlar =====
==== Paket Tipi ====
public enum PackageType
{
ASiC_S,
ASiC_E
}
| **Basit (ASIC_S)** | Paket içinde bir imza ve veri bulunur. |
| **Extended (ASIC_E)** | Paket içinde bir yada birden fazla veri ve bir yada birden fazla imza bulunur. Bir imza birden fazla veriyi imzalamış olabilir. |
===== Anahtar API Arayüzleri ve Tasarım ======
==== SignaturePackageFactory ====
İmza paketlerini oluşturmakta kullanılan static metodları barındıran sınıf.
==== SignaturePackage ====
İçinde ''SignatureContainer'' ve imzalı veri(yi/leri) barındıran ZIP yapısını temsil eden sınıf.
İlgili ''SignatureContainer'', ''Signature'', ''Signable'' arayüzleri için [[esya:ortakimza:eimza-ortak-kutuphanesi|Ortak Eimza Kütüphanesi]] dökümantasyonuna bakılabilir.
===== Kütüphane Kullanımı =====
==== Basit Paket oluşturma ====
Context c = new Context();
SignatureFormat format = SignatureFormat.CAdES; // SignatureFormat.XAdES de olabilir
SignaturePackage signaturePackage = SignaturePackageFactory
.createPackage(c, PackageType.ASiC_S, format);
// imzalanacak dosyayı pakete ekle
Signable inPackage = signaturePackage.addData(new SignableFile(dataFile, "text/plain"), "sample.txt");
SignatureContainer container = signaturePackage.createContainer();
Signature signature = container.createSignature(CERTIFICATE);
// paketteki imzalanacak veriyi imzaya ver(false=veriyi imzanın içine ayrıca ekleme)
signature.addContent(inPackage, false);
signature.sign(SIGNER);
// paketi dosyaya yaz
signaturePackage.write(new FileOutputStream(fileName));
==== Çoklu Paket Oluşturma ====
// read package from file
SignaturePackage sp = SignaturePackageFactory.readPackage(new Context(), inputFile);
// create new container in package
SignatureContainer sc = sp.createContainer();
// create new signature in container
Signature s = sc.createSignature(CERTIFICATE);
// get signable from package
s.addContent(sp.getDatas().get(0), false);
s.sign(SIGNER);
// write
sp.write(new FileOutputStream(outFileName));
==== Paket Doğrulama ====
// read package from file
SignaturePackage sp = SignaturePackageFactory.readPackage(new Context(), inputFile);
// verify
PackageValidationResult pvr = sp.verifyAll();
// check result
assert pvr.getResultType() == PackageValidationResultType.ALL_VALID;
==== İmza Geliştirme ====
// read package from file
Context c = new Context();
SignaturePackage sp = SignaturePackageFactory.readPackage(c, new File(fileName));
// get first signature container
SignatureContainer sc = signaturePackage.getContainers().get(0);
// get first signature in container
Signature signature = sc.getSignatures().get(0);
// upgrade
signature.upgrade(SignatureType.ES_T);
signaturePackage.write(new FileOutputStream(outFileName));
İmza ile ilgili daha fazla örnek için [[esya:ortakimza:eimza-ortak-kutuphanesi|Ortak İmza Kütüphanesi]] dökümanına bakılmalıdır. Bunun yanında bu dökümanda kodlar okunaklılık açısından kısa tutulmaya çalışılmıştır. [[esya:ortakimza:imza-api-kullanim|Burada]]ki İmza Profillerine Uygun İmza Atma bölümüne de göz atılmalıdır.
|Önceki: [[esya:pades:eimza-pades-kutuphanesi|PAdES E-İmza]]|[[:start|Ana sayfa]]| Sonraki: [[esya:cmszarf:cms-zarf|CMS Zarf]]|