ESYA ASiC kütüphanesi ile 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.
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.
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. |
İmza paketlerini oluşturmakta kullanılan static metodları barındıran sınıf.
İç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 Ortak Eimza Kütüphanesi dökümantasyonuna bakılabilir.
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));
// 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));
// read package from file SignaturePackage sp = SignaturePackageFactory.readPackage(new Context(), inputFile); // verify PackageValidationResult pvr = sp.verifyAll(); // check result assert pvr.getResultType() == PackageValidationResultType.ALL_VALID;
// 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 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. Buradaki İmza Profillerine Uygun İmza Atma bölümüne de göz atılmalıdır.
Önceki: PAdES E-İmza | Ana sayfa | Sonraki: CMS Zarf |