Bu sayfanın seçili sürümü ile mevcut sürümü arasındaki farkları gösterir.
esya:ortakimza:imza-api-kullanim [2013/07/15 11:53] Ahmet Yetgin |
esya:ortakimza:imza-api-kullanim [2013/08/19 05:50] (mevcut) Dindar Öz |
||
---|---|---|---|
Satır 1: | Satır 1: | ||
====== Kütüphane Kullanımı ====== | ====== Kütüphane Kullanımı ====== | ||
- | ==== İmza Atma ==== | + | ===== İmza Atma ===== |
+ | |||
+ | ==== Basit (ES-BES) İmza Atma ==== | ||
<sxh java;highlight:[8,11] ;title:Java & .NET> | <sxh java;highlight:[8,11] ;title:Java & .NET> | ||
// imza konteyneri yarat | // imza konteyneri yarat | ||
Satır 38: | Satır 40: | ||
container.write(new FileOuputStream(fileName)); | container.write(new FileOuputStream(fileName)); | ||
</sxh> | </sxh> | ||
+ | |||
+ | ===== İmza Geliştirme ===== | ||
==== Basit (ES-BES) İmzayı Zaman Damgalı İmzaya Çevirme ==== | ==== Basit (ES-BES) İmzayı Zaman Damgalı İmzaya Çevirme ==== | ||
Satır 88: | Satır 92: | ||
olarak değiştimek yeterlidir. | olarak değiştimek yeterlidir. | ||
- | ==== İmza Doğrulama ==== | + | ===== İmza Doğrulama ===== |
İmza doğrulamada ''SignatureContainer'' içindeki ''verifyAll()'' metodu kullanılır. | İmza doğrulamada ''SignatureContainer'' içindeki ''verifyAll()'' metodu kullanılır. | ||
Satır 116: | Satır 120: | ||
</sxh> | </sxh> | ||
- | ===== İmza doğrulama Sonuç Nesnesi ===== | + | ==== İmza doğrulama Sonuç Nesnesi ==== |
- | İmza doğrulama sonuç nesnesi toString() metodu, imza nesne hiyerarşisini bir ağaç yapısında formatlı olarak döner. | + | İmza doğrulama sonuç nesnesi ''toString()'' metodu, imza nesne hiyerarşisini bir ağaç yapısında formatlı olarak döner. |
- | SignatureContainer nesnesine ait doğrulama sonucu ContainerValidationResult, | + | |
- | her bir imzaya ait doğrulama sonucu SignatureValidationResult nesnesidir. | + | ''SignatureContainer'' nesnesine ait doğrulama sonucu ''ContainerValidationResult'', her bir imzaya ait doğrulama sonucu ''SignatureValidationResult'' nesnesidir. ''SignatureValidationResult'' nesneleri ''ContainerValidationResult'' içerisinde yer alır. |
- | SignatureValidationResult nesneleri ContainerValidationResult içerisinde yer alır. | + | |
- | İmza doğrulama sonucunu anlamak için ContainerValidationResult içindeki ContainerValidationResultType alanına bakmak yeterlidir. | + | İmza doğrulama sonucunu anlamak için ''ContainerValidationResult'' içindeki ''ContainerValidationResultType'' alanına bakmak yeterlidir. |
- | Hangi imzanın hatalı olduğu bilinmek isterse ilgili imza sonuçları kontrolden geçirilmelidir. | + | |
- | Java Code | + | Hangi imzanın hatalı olduğu bilinmek istenirse ilgili imza sonuçları kontrolden geçirilmelidir. |
+ | |||
+ | <sxh java; title: Java Code> | ||
// NOT bu metod ContainerValidationResult içinde | // NOT bu metod ContainerValidationResult içinde | ||
// halihazırda mevcuttur !!! | // halihazırda mevcuttur !!! | ||
Satır 155: | Satır 161: | ||
} | } | ||
} | } | ||
+ | </sxh> | ||
- | .NET Code | + | <sxh csharp; title:.NET Code> |
ContainerValidationResult cvr = container.verifyAll(); | ContainerValidationResult cvr = container.verifyAll(); | ||
Satır 168: | Satır 175: | ||
Console.WriteLine("Geçersiz imza "+svr); | Console.WriteLine("Geçersiz imza "+svr); | ||
} | } | ||
+ | </sxh> | ||
===== Çoklu imza ===== | ===== Çoklu imza ===== | ||
==== İmza Ekleme ==== | ==== İmza Ekleme ==== | ||
- | Seri imza | + | |
- | Bir imzayı imzalayan imzaya seri imza denir. Örneğin çalışan izin talebini imzalar. Yönetici de onay imzası atar. Seri imza oluşturmak için Signature nesnesi createCounterSignature(Certificate) metodu kullanılır. | + | === Seri imza === |
- | Java Code | + | |
+ | Bir imzayı imzalayan imzaya **seri imza** denir. Örneğin çalışan izin talebini imzalar. Yönetici de onay imzası atar. Seri imza oluşturmak için Signature nesnesi createCounterSignature(Certificate) metodu kullanılır. | ||
+ | |||
+ | <sxh java;title:Java Code;> | ||
// imza konteynerini dosyadan oku | // imza konteynerini dosyadan oku | ||
SignatureContainer sc = SignatureFactory.readContainer(fileInputStream); | SignatureContainer sc = SignatureFactory.readContainer(fileInputStream); | ||
Satır 188: | Satır 198: | ||
// imza konteynerini dosyaya yaz | // imza konteynerini dosyaya yaz | ||
sc.write(new FileOuputStream(fileName)); | sc.write(new FileOuputStream(fileName)); | ||
+ | </sxh> | ||
- | .NET Code | + | <sxh csharp; title:.NET Code;> |
// imza konteynerini dosyadan oku | // imza konteynerini dosyadan oku | ||
SignatureContainer sc = SignatureFactory.readContainer(fileInputStream); | SignatureContainer sc = SignatureFactory.readContainer(fileInputStream); | ||
Satır 204: | Satır 215: | ||
// imza konteynerini dosyaya yaz | // imza konteynerini dosyaya yaz | ||
sc.write(new FileOuputStream(fileName)); | sc.write(new FileOuputStream(fileName)); | ||
+ | </sxh> | ||
=== Paralel imza === | === Paralel imza === | ||
- | SignatureContainer içinde her createSignature() metodu çağrıldığında bir imza yaratılmış ve imza konteynere eklenmiş olur. SignatureContainer içindeki birbirinden bağımsız(birbirini imzalamayan) bu imzalara paralel imza denir. | + | |
- | Java & .NET Code | + | ''SignatureContainer'' içinde ''createSignature()'' metodu her çağrıldığında bir imza yaratılmış ve imza konteynere eklenmiş olur. ''SignatureContainer'' içindeki birbirinden bağımsız(birbirini imzalamayan) bu imzalara **paralel imza** denir. |
+ | |||
+ | <sxh java; title:Java & .NET Code;> | ||
// imza konteynerini dosyadan oku | // imza konteynerini dosyadan oku | ||
SignatureContainer container = | SignatureContainer container = | ||
Satır 222: | Satır 236: | ||
// imzayı dosyaya yaz | // imzayı dosyaya yaz | ||
container.write(new FileOuputStream(fileName)); | container.write(new FileOuputStream(fileName)); | ||
+ | </sxh> | ||
==== İmza Çıkarma ==== | ==== İmza Çıkarma ==== | ||
- | İmzayı üst yapısından ayırmak için detachFromParent() metodu kullanılır. Bu metodun uygulandığı imza, eğer bir seri imza ise üst imzadan, ilk seviyede bir imza ise konteynerden(SignatureContainer) ayrılmış olur. Ayrılan imzanın kendi seri imzaları varsa onlarda imza ile birlikte konteynerden çıkar. | + | |
- | Java Code | + | İmzayı üst yapısından ayırmak için ''detachFromParent()'' metodu kullanılır. Bu metodun uygulandığı imza, eğer bir seri imza ise üst imzadan, ilk seviyede bir imza ise konteynerden(''SignatureContainer'') ayrılmış olur. Ayrılan imzanın kendi seri imzaları varsa onlarda imza ile birlikte konteynerden çıkar. |
+ | |||
+ | <sxh java;title:Java Code> | ||
// konteynerdeki ilk imzayı al | // konteynerdeki ilk imzayı al | ||
Signature s = sc.getSignatures().get(0); | Signature s = sc.getSignatures().get(0); | ||
Satır 249: | Satır 266: | ||
// imzayı yaz | // imzayı yaz | ||
container.write(stream); | container.write(stream); | ||
+ | </sxh> | ||
===== İmza Profillerine Uygun İmza Atma ===== | ===== İmza Profillerine Uygun İmza Atma ===== | ||
- | İmza profilleri hakkında detaylı açıklama için bu dökümanın İmza Profilleri bölümüne bakınız. | + | İmza profilleri hakkında detaylı açıklama için bu dökümanın [[esya:eimza:profiller|İmza Profilleri]] bölümüne bakınız. |
Türkiyede tanımlı imza profil politikaları TurkishESigProfiles sınıfında tanımlıdır. | Türkiyede tanımlı imza profil politikaları TurkishESigProfiles sınıfında tanımlıdır. | ||
- | P1 İmza Atma | + | ==== P1 İmza Atma ==== |
P1 profili, temel olarak içinde imza zamanı özelliği olan ES-BES imzadır. | P1 profili, temel olarak içinde imza zamanı özelliği olan ES-BES imzadır. | ||
- | Java & .NET Code | + | |
+ | <sxh java; title:Java & .NET Code;> | ||
SignatureContainer container = SignatureFactory.createContainer(format); | SignatureContainer container = SignatureFactory.createContainer(format); | ||
Signature signature = container.createSignature(signersCertificate); | Signature signature = container.createSignature(signersCertificate); | ||
Satır 267: | Satır 286: | ||
// imzayı yaz | // imzayı yaz | ||
container.write(stream); | container.write(stream); | ||
- | P2 İmza Atma | + | </sxh> |
+ | |||
+ | ==== P2 İmza Atma ==== | ||
P2 profili zaman damgalı imzadır. | P2 profili zaman damgalı imzadır. | ||
- | Java & .NET Code | + | |
+ | <sxh java; title:Java & .NET Code> | ||
SignatureContainer container = SignatureFactory.createContainer(format); | SignatureContainer container = SignatureFactory.createContainer(format); | ||
Signature signature = container.createSignature(signersCertificate); | Signature signature = container.createSignature(signersCertificate); | ||
Satır 283: | Satır 306: | ||
// imzayı yaz | // imzayı yaz | ||
container.write(stream); | container.write(stream); | ||
+ | </sxh> | ||
+ | |||
+ | ==== P3 İmza Atma ==== | ||
- | === P3 İmza Atma === | ||
P3 profili doğrulama için SİL(Sertifika İptal Listesi) kullanılan uzun ömürlü imzalar içindir. | P3 profili doğrulama için SİL(Sertifika İptal Listesi) kullanılan uzun ömürlü imzalar içindir. | ||
- | Java & .NET Code | + | |
+ | <sxh java;title:Java & .NET Code;> | ||
// context yarat | // context yarat | ||
Context context = new Context(new File(workingDir).toURI()); | Context context = new Context(new File(workingDir).toURI()); | ||
Satır 311: | Satır 337: | ||
// imzayı yaz | // imzayı yaz | ||
c.write(stream); | c.write(stream); | ||
+ | </sxh> | ||
+ | |||
+ | ==== P4 İmza Atma ==== | ||
- | === P4 İmza Atma === | ||
P4 profili doğrulama için ÇiSDuP(OCSP) kullanılan uzun ömürlü imzalar içindir. | P4 profili doğrulama için ÇiSDuP(OCSP) kullanılan uzun ömürlü imzalar içindir. | ||
- | Java & .NET Code | + | |
+ | <sxh java; title:Java & .NET Code> | ||
// context yarat | // context yarat | ||
Context context = new Context(new File(workingDir).toURI()); | Context context = new Context(new File(workingDir).toURI()); | ||
Satır 339: | Satır 368: | ||
// imzayı yaz | // imzayı yaz | ||
c.write(stream); | c.write(stream); | ||
+ | </sxh> | ||