ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:asic:eimza-asic-kutuphanesi

ASiC Eİmza Paketi

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.

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 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 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-İmzaAna sayfa Sonraki: CMS Zarf
esya/asic/eimza-asic-kutuphanesi.txt · Son değiştirilme: 2013/12/30 09:38 Değiştiren: Ahmet Yetgin