C# ile E-İmza
E-İmza prosedürünün hangi kart sağlayıcı olursa olsun çalışabilmesi için (E-Tuğra, TurkTrust, E-Güven veya E-İmzaTR)Smartcard yapısının oluşturulduğu kod satırının her bir kart tipi için try-catch ile denenmesi ve hangisi başarılı ise ona uygun SC (smartcard) yapısının oluşturulması yeterlidir:
SmartCard sc;
long[] PresentSlots;
try
{sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.AKIS);}
catch{}
try
{sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SAFESIGN);}
catch{}
try
{sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.GEMPLUS);}
catch{}
...
...
Sonra isterseniz oluşan sc yapısından cardtype string olarak alabiliyorsunuz. Gerçi normalde gerek yok:
sc.getCardType().ToString();
Sonraki aşamada
bsc = new P11SmartCard(sc.getCardType());
long[] PresentSlots;
PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
// secim kutusu haline getirerek slotid al
long SlotID = 0;
if (PresentSlots.Length == 1)
SlotID = PresentSlots[0];
else
{
SlotID = Convert.ToInt64(askOptionValue(null, null, PresentSlots, "Slot Listesi", new String[] { "Tamam" }));
}
bsc.openSession(sc.getTokenPresentSlotList())
Bu şekilde bir yol takip edilebilir.
Kullanılabilecek kart tipleri:
CardType.AEPKEYPER;
CardType.AKIS_KK;
CardType.ALADDIN;
CardType.CARDOS;
CardType.DATAKEY;
CardType.GEMPLUS;
CardType.KEYCORP;
CardType.NCIPHER;
CardType.SAFESIGN;
CardType.SEFIROT;
CardType.TKART;
CardType.UNKNOWN;
CardType.UTIMACO;
CardType.UNKNOWN;
Açık kaynak kodlu uygulama:
https://sourceforge.net/projects/eimza/
İbrahim KAZANCI
Healthy HBYS