====== 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]]|