ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:smartcard:sertifika-okuma

Bu, dökümanın eski bir sürümüdür!


Akıllı Kartan Sertifikanın Okunması

Akıllı karttan sertifika SmartCard sınıfının getSignatureCertificates() veyagetEncryptionCertificates() fonksiyonları ile okunabilir. Eğer imzalama işlemi yapılacaksa getSignatureCertificates() fonksiyonu, şifreleme işlemi yapılacaksa getEncryptionCertificates() fonksiyonu kullanılmalıdır.Bu fonksiyonlar sertifikaların kodlanmış hallerini byte [] olarak dönerler. Eğer ESYA APIasn modülünü (ma3api-asn-….jar / ma3api-asn.dll) kullanabiliyorsanız, karttan aldığınız bytedeğerlerini anlamlı hale getirmek için ECertificate sınıfını kullanabilirsiniz.

Atılacak imzanın kanuni hükümlülüklerinin olması için imzalamada kullanılan sertifikanın nitelikli olması gerekmektedir. Bu kontrol ECertificate sınıfının isQualifiedCertificate() fonksiyonu ileyapılabilir. ECertificate sınıfının getSubject().stringValue() fonksiyonu ile sertifikalar birbirindenayırt edilebilir. Kullanıcı bu bilgi ile seçim yapabilir.

Ayrıca ECertificate sınıfının getSubject().getCommonNameAttribute() fonksiyonusertifika sahibinin ismini dönmektedir. Karttaki sertifikaların isim bilgisi hepsi için aynıolacağından, karttaki sertifikaları ayırt etmek amacıyla kullanılamaz. Kimin imzayı attığını göstermek için kullanılabilir. Aşağıdaki kod bloğu akıllı kart içinden imzalama sertifikalarını alıp nitelikli olanların Subject alanını ekrana basılmaktadır.

List<byte []> certs = smartCard.getSignatureCertificates(session);
for (byte[] bs : certs) 
{
	ECertificate cert = new ECertificate(bs);
	if(cert.isQualifiedCertificate())
		System.out.println(cert.getSubject().stringValue());
}

List<byte[]> certBytes = sc.getSignatureCertificates(session);
foreach (byte[] bs in certBytes)
{
ECertificate cert = new ECertificate(bs);
//cert.isQualifiedCertificate()
Console.WriteLine(cert.getSubject().getCommonNameAttribute());
}

Eğer ESYA API asn sınıflarına erişim yoksa, ECertificate yerine java'nın x509Certificate sınıfı kullanılabilir. ECertificate sınıfının isQualifiedCertificate() fonksiyonu yerine aşağıdaki örnek kodda gösterildiği gibi kontrol yapılabilir. Sertifikaları birbirinden ayırt etmek amacıyla x509Certificate sınıfının getSubjectDN().toString() metodu kullanılabilir.

Aşağıdaki kod bloğu akıllı kart içinden imzalama sertifikalarını alıp nitelikli olanların Subject alanını ekrana basmaktadır.

List<byte []> certs = smartCard.getSignatureCertificates(session);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
String qcStatement = "1.3.6.1.5.5.7.1.3";
for (byte[] bs : certs) 
{
	X509Certificate cert = (X509Certificate)cf.generateCertificate(new
	ByteArrayInputStream(bs));
	if( cert.getExtensionValue(qcStatement) != null)
	System.out.println(cert.getSubjectDN().toString());
}

Akıllı Karttaki Nesne Adlarının Okunması

Akıllı kartta bulunan sertifika, açık anahtar ve özel anahtarın her biri nesne olarak adlandırılır. Akıllı karttaki nesnelerin adı ile de işlem yapılabilir. Nesne adları değişken olabileceğinden nesne adları ile işlem yapmak önerilmez. Yalnız bazı durumlarda nesne adları kullanıcıya daha anlamlı gelebilir. SmartCard sınıfının getSignatureKeyLabels(…) ve getEncryptionKeyLabels(…) fonksiyonları ile anahtarların adları okunabilir. Eğer anahtarın sertifikasının adı, anahtar adı ile aynı ise bu ad ile sertifika da okunabilir. Sertifikanın okunması için readCertificate(long aSessionID,String aLabel) fonksiyonu kullanılabilir.

esya/smartcard/sertifika-okuma.1374647833.txt.gz · Son değiştirilme: 2013/07/24 06:37 Değiştiren: Beytullah Yiğit