C_Initialize - This object is not connected to a module.
getSlotAndCardType veya findCardTypeAndSlot komutu ile takılı bütün kartları alması lazım. Ancak bir taraftanda KamuSM kılavuzunda Eğer kullanıcıya kart tipine göre akıllı kartı seçtirmek isteniyorsa,
SmartOpsınıfınınfindCardTypesAndSlots()ile bağlı olan bütün kartların slot numaralarını ve kart tiplerini alabilirsiniz.. Java 5 ve .NET'te ise akıllı kartın türü bilinmelidir....
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.
Merhaba;
MerhabaKodu paylaştığımı düşünüyorum :)
SmartCardConfigParser parser = new SmartCardConfigParser();var cards = parser.readConfig();CardType.applyCardTypeConfig( cards );
Yukarıdaki kodu program ilk açıldığında bir kere çalışırsa yeterli oluyor, onun dışında farklı bir kod kullanmadım. Atr değerini almak içinde gerekli methodu aşağıda veriyorum.public string AtrDegeri( string terminalAdi ) {var atr = WinsCard.getAtr( terminalAdi );if ( atr == null )return string.Empty;elsereturn BitConverter.ToString( atr ).Replace( "-", string.Empty );}smartcard-config.xml de ekte var.
2 Eylül 2014 Salı 14:12:31 UTC+3 tarihinde Dursun Çevik yazdı:
try
{
Pair<long, CardType> slotAndCardType = SmartOp.getSlotAndCardType(terminal);
bsc = new P11SmartCard(slotAndCardType.getmObj2());
bsc.openSession(slotAndCardType.getmObj1());
}
catch
{
// ekleyeceğimiz ekstra kodun baslangici...
SmartCard sc;
long[] PresentSlots;
sc = new SmartCard(CardTypeConverter.AsCardType(KayitliKartTipi));
PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
// secim kutusu haline getirerek slotid al
index = 0;
long SlotID = 0;
if (PresentSlots.Length == 1)
SlotID = PresentSlots[index];
else
{
SlotID = Convert.ToInt64(askOptionValue(null, null, PresentSlots, "Slot Listesi", new String[] { "Tamam" }));
}
bsc = new P11SmartCard(CardTypeConverter.AsCardType(KayitliKartTipi));
bsc.openSession(SlotID);
} // catch sonu
// normal koda devam....
mSerialNumber = StringUtil.ToString(bsc.getSerial());
CardType.AKIS döndürüyor, bunu program.cs içine ekleyebilirsiniz) : public static class CardTypeConverter
{
public static CardType AsCardType(string cardtype)
{
switch(cardtype)
{
case "AEPKEYPER": return CardType.AEPKEYPER;
case "AKIS": return CardType.AKIS;
case "AKIS_KK": return CardType.AKIS_KK;
case "ALADDIN": return CardType.ALADDIN;
case "CARDOS": return CardType.CARDOS;
case "DATAKEY": return CardType.DATAKEY;
case "GEMPLUS": return CardType.GEMPLUS;
case "KEYCORP": return CardType.KEYCORP;
case "NCIPHER": return CardType.NCIPHER;
case "SAFESIGN": return CardType.SAFESIGN;
case "SEFIROT": return CardType.SEFIROT;
case "TKART": return CardType.TKART;
case "UNKNOWN": return CardType.UNKNOWN;
case "UTIMACO": return CardType.UTIMACO;
default: return CardType.UNKNOWN;
}
}
}
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{}
...
...
PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
...
...
...
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/></startup>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
</configuration>
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.
Pair<long, CardType> slotAndCardType = SmartOp.getSlotAndCardType(terminal);
bu kısım yorum içinde ve try-catch blokları halinde ibrahim beyin yolladığı kodu yerine yazdım fakat hata hala düzelmedi en başta da bunu yaptıktan sonra da bu hatayı almaktayım .
Hata : An unhandled exception of type 'iaik.pkcs.pkcs11.wrapper.PKCS11RuntimeException' occurred in ma3api-managedPkcs11.dll
Additional information: C_Initialize - This object is not connected to a module. Acaba bu soruna bir çözüm sunabilecek birileri varsa şimdiden çok teşekkür ederim .
Ayrıca düzenlenen ve şu an çalışan bir kaynak kodu olanınız varsa bi iki birşey sormak isterim . Not : Kullandığım e-imza modülü e-Tugra ya aittir .
Arkadaşlar
Pair<long, CardType> slotAndCardType = SmartOp.getSlotAndCardType(terminal);
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.
Birazdan bakıcam daha bakmadım. Xp makine getirmelerini bekliyorum.
Üzerinde Sp kaç var bilmiyorum açıkçası
Win7 64 (SP1 yüklüdür)
private SmartCardManager() { try { LOGGER.Debug("New SmartCardManager will be created"); String[] terminals = SmartOp.getCardTerminals(); String terminal; if (terminals == null || terminals.Length == 0) throw new SmartCardException("Kart takılı kart okuyucu bulunamadı"); LOGGER.Debug("Kart okuyucu sayısı : " + terminals.Length); int index = 0; if (terminals.Length == 1) terminal = terminals[index]; else { index = askOption(null, null, terminals, "Okuyucu Listesi", new String[] { "Tamam" }); terminal = terminals[index]; } LOGGER.Debug("PKCS11 Smartcard will be created"); Pair<long, CardType> slotAndCardType = new Pair<long, CardType>(); /////////////////////////////////////// //ism Code açıklama: verilen tüm kart tipleri taranarak uygun kart bulunur //Eğer cart bulunumaz ise ismCard null dönecektir. long slotNum = -1; CardType ismCard = null; try { CardType[] myCards = CardType.getCardTypes(); foreach (CardType c in myCards) { slotNum = SmartOp.findSlotNumber(c); if (slotNum != -1) { ismCard = c; break; } } } catch { } bsc = new P11SmartCard(ismCard); bsc.openSession(slotAndCardType.getmObj1()); mSerialNumber = StringUtil.ToString(bsc.getSerial()); mSlotCount = terminals.Length; } catch (SmartCardException e) { throw e; } catch (PKCS11Exception e) { throw new SmartCardException("Pkcs11 exception", e); } catch (IOException e) { throw new SmartCardException("Smart Card IO exception", e); } }
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubunda bir konuya abone olduğunuz için aldınız.
Bu konunun aboneliğinden çıkmak için https://groups.google.com/d/topic/saglik_net/nyPklOP-CeQ/unsubscribe adresine gidin.
Bu grubun ve tüm konularının aboneliğinden çıkmak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Merhaba,Sorunsuz çalışan 32bit uygulamayı, büyük dosya imzalarında aldığım out of memory hatalarına karşın 64bit'e çevirmek istedim. ma3api-managedPkcs11.dll ve System.Data.SQLite.dll dosyalarının 64bit versiyonlarını referans olarak vermeme rağmen, SmartOp.findCardTypesAndSlots metodunda "C_Initialize - This object is not connected to a module." hatası alıyorum.Bu hatayı daha önce AKIS kart sürücünün yüklü olmadığı makinalarda 32bit uygulama ile de alıyordum. Sürücüyü yükleyince sorun düzeliyordu.Şimdi kartın 64bit sürücüsü olsa da 64bit uygulama ile "C_Initialize - This object is not connected to a module." hatasını alıyorum.Sorunu çözebilmiş miydiniz?Saygılar.
26 Şubat 2013 Salı 11:58:10 UTC+2 tarihinde cagdask yazdı:ma3api-managedPkcs11.dll ve System.Data.SQLite.dll dosyalarının 64bit versiyonları var. api klasörünün içinden çıkıyor. onlarla bir deneyin isterseniz.
Java versiyonunu yenilendikten sonra olmuş olabilir. Java update aldıysanız aşağıdaki kütüphaneleri deneyin lüten.
https://yazilim.kamusm.gov.tr/?q=tr/system/files/public/MA3-API-dotnet-2.2.1.4.zip
Windows 10 için Posta ile gönderildi
Kimden: Kerem Can
Gönderilme: 23 Ocak 2020 Perşembe 11:34
Kime: Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Konu: Re: E-İmza win 7 64 bit driver sorunu yaşayan var mı?
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/saglik_net/1f26bb47-2cb3-4074-96e1-8f0f2c91047f%40googlegroups.com adresini ziyaret edin.

Java versiyonunu yenilendikten sonra olmuş olabilir. Java update aldıysanız aşağıdaki kütüphaneleri deneyin lüten.
https://yazilim.kamusm.gov.tr/?q=tr/system/files/public/MA3-API-dotnet-2.2.1.4.zip
Windows 10 için Posta ile gönderildi
Kimden: Kerem Can
Gönderilme: 23 Ocak 2020 Perşembe 11:34
Kime: Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Konu: Re: E-İmza win 7 64 bit driver sorunu yaşayan var mı?
Merhaba,
Ekteki gibi hata alıyorum var mı bir öneriniz?
Hata : Could not load file or assembly 'ma3api-managedPkcs11, Version=0.0.0.0, Culture=neutral, PublicKeyToken=4d1d81e4a0cd6187' or one of its dependencies. An attempt was made to load a program with an incorrect format.
26 Şubat 2013 Salı 11:51:40 UTC+2 tarihinde Gökmen Soylu yazdı:Arkadaşlar
e imza için kamu sm .net kütüphaneleri ile win7 32 bitte testlerimizi tamamladık. e-recete numarasını aldık buraya kadar her şey güzel ama 64 bit bilgisayarlarda kart okuyucu driveri yüklüyoruz akisi yüklüyoruz, aygıt yöneticisinde bilinmeyen akıllı kart diyor ve kodu çalıştırdığımızda SmartCardManager da SmartOp.getCardTerminals() metodu ile terminalleri listelediğimizde herhangi bir terminal görmüyor. belirteyim Akis okuyucuyu, kartı görüyor ve sertifika detayına kadar gösteriyor. acaba bu sıkıntı ile karşılaşan ve çözen var mı?
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için sagli...@googlegroups.com adresine e-posta gönderin.
Merhaba,
https://sourceforge.net/projects/eimza/ baz alınarak,
windows arkaplanda çalışan ve diğer programlarla haberleşen aracı bir program yazdık.
yalnız takılı olan kart listesi almak istediğimizde, program ilk açıldığında bir problem olmuyor
ancak e-imza'yı çıkartıp aynısını ve ya başka bir e-imza taktığımızda,
listeyi tekrar çekmek ister isek (programı kapatmadan)
String[] terminals = SmartOp.getCardTerminals();
yukarıdaki satır patlamakta ve .dll Exception olarak "Nesne başvurusu bir nesnenin örneğine ayarlanmadı." şeklinde uyarı döndürmektedir.
bunu nasıl düzeltebiliriz.
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/saglik_net/f61c5e04-1c38-4d0d-8d8a-ddb0a5e38ca0%40googlegroups.com adresini ziyaret edin.
derlemeyi 32 bitte yapmıştım.programı yeniden başlatınca bir sıkıntı yok. Ancak program çalışır durumdayken ikinci kere listeyi çekmek istediğimizde alıyoruz.
--
Bu iletiyi Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/saglik_net/5687625c-2251-4baa-a215-07b2a9a103d2%40googlegroups.com adresini ziyaret edin.
String[] terminals = SmartOp.getCardTerminals(); String terminal;
SmartOp'da hata vermesi durumunda
//ism Code açıklama: verilen tüm kart tipleri taranarak uygun kart bulunur //Eğer cart bulunumaz ise ismCard null dönecektir. long slotNum = -1; CardType ismCard = null; try { CardType[] myCards = CardType.getCardTypes(); foreach (CardType c in myCards) { slotNum = SmartOp.findSlotNumber(c); if (slotNum != -1) { ismCard = c; break; } } } catch { }
bu yöntem ile, slottaki tüm kart tiplerini deneyerek ilgili kart okuması yaparak düzelttim.teşkkürler, iyi çalışmalar.