6 Aralık 2015 Pazar

E-İmza'da bütün kart türlerinin otomatik algılanabilmesi

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;
                    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