E-İmza için ortak DLL veya EXE

8,041 views
Skip to first unread message

İbrahim KAZANCI

unread,
May 2, 2014, 12:13:36 PM5/2/14
to sagli...@googlegroups.com
Merhaba,

Arkadaşlar biliyorsunuz e-imza konusunda Sağlık Bakanlığı'ndan yazılar geliyor ve henüz çoğu firmanın e-imza konusunda çözümü yok.

Tübitak KamuSM'de API'ler ücretsiz sunuluyor ancak e-imza konusu oldukça farklı bir alan olduğu için yazılım geliştirme konusunda zorluk yaşanıyor. Üstelik HBYS yazılımcıları da Java ve C# dillerini bilenlerden ibaret değil. Hatta bazı firmalarda bu dilleri bilenler yok. KamuSM C# dilinde bir DLL hazırlayarak başka dillerde (Delphi) kullanılabileceğine dair örnek yayınladı. Ancak yine de e-imza kodunu, hiç bilmediğiniz bir dilde günlerce belki haftalarca uğraşarak geliştirmeniz gerekecek.

Üstüne üstlük yüzlerce HBYS firmasının haftalarca uğraşarak üreteceği kod birbirinin aynı olacak, nihayetinde hepsi de tamamen aynı işi yapacak, özetle aldığı XML'i dönüştürüp geri verecek.

Bu küçük ama uğraştırıcı kodun ortak bir çalışma ile üretilmesi gerektiğini düşünüyorum. Bu kod üretildiğinde sanırım DLL, EXE veya benzeri şekilde derleyerek her dil içerisinden kullanmak mümkün olacaktır.

Bir kamu kuruluşunun aynı kodu yüzlerce firmaya tekrar tekrar yazdırarak kamuya hizmet etmiş olmayacağından hareketle en başta olması gereken KamuSM tarafından basit imza atacak bir kodun onay alacak haliyle yayınlanmasıdır.

Eğer Sağlık Bakanlığı yetkilileri KamuSM'yi yönlendirmek suretiyle bu konuda bize destek olmayacaksa bu kodun gerekirse ortak bir çalışma ile açık kod olarak geliştirilmesi mantıklı olacaktır diye düşünüyorum.

Sizin fikriniz nedir?


İbrahim KAZANCI
Healthy HBYS


İsmail Kocacan

unread,
May 2, 2014, 1:22:29 PM5/2/14
to sagli...@googlegroups.com
Söyledikleriniz mantıklı.
Sizin söyledikleriniz toplantıda da dile getirildi.Ama nafile.
İşin ucunda "cukka" olduğu için,herşey olması gereken gibi olamıyor ne yazık ki....

Entegre etmediyseniz çalıştayda ki örnek projeyi indirip,bir kaç düzenleme ile entegre edebilirsiniz.
İçersinde .net ve java örneği vardı.
http://www.kamusm.gov.tr/dosyalar/sunumlar/calistay/2013/E-Recete_Calistay_Egitim_23_01_2013_Ankara.zip


2 Mayıs 2014 Cuma 19:13:36 UTC+3 tarihinde İbrahim KAZANCI yazdı:

cagdask

unread,
May 3, 2014, 2:09:40 AM5/3/14
to sagli...@googlegroups.com
bide bu kamusm nin api si ile entegrasyon yaptığımız zaman sadece ondan alınan dongle ilemi çalışıyor. yoksa doktorlar istediği yerden alıp direk kullanabiliyormu?

2 Mayıs 2014 Cuma 20:22:29 UTC+3 tarihinde İsmail Kocacan yazdı:
Message has been deleted

Namık Güngör

unread,
May 12, 2014, 10:48:57 AM5/12/14
to sagli...@googlegroups.com
Çok güzel bir çalışma olur. Elimden geleni yaparım. Bir yol haritası belirlersek başlayalım.


2 Mayıs 2014 Cuma 19:13:36 UTC+3 tarihinde İbrahim KAZANCI yazdı:
Merhaba,

İbrahim KAZANCI

unread,
May 15, 2014, 7:14:55 PM5/15/14
to sagli...@googlegroups.com

Nihayetinde paylaşsak da paylaşmasak da imzalama konusunda herkesin yazdığı kod ve elde edilecek imzalama fonksiyonları bütün HBYS firmalarında birbirinin aynı olacak.

Ben Delphi ile yazıyorum ve C# / Java konusunda tecrübem olmadığından ilerlemem biraz zaman alacak.

http://www.kamusm.gov.tr/dosyalar/sunumlar/calistay/2013/E-Recete_Calistay_Egitim_23_01_2013_Ankara.zip
ile
https://yazilim.kamusm.gov.tr/?q=tr/system/files/private/Delphide_Api_Kullanimi.rar

adreslerinde iki kod örneği var. Bu ikisinden yararlanacağım.

Şu an sisteme Visual Studio 2010 yükleyip İsmail Beyin bahsettiği projeyi C# 2010 Express'da çalışır hale getirdim. Ancak eski kart okuyucumda sıkıntı olduğundan imzalama aşamasında I/O error alıyorum. Geçen yılki denemede bu kısmı geçmiştim Şu an ilerlemek için KamuSM'den yeni kart okuyucuyu bekliyorum.

Bir kaç güne kadar kart okuyucu gelir. İmzalama aşamasını gerçekleştirerek -doğru veya yanlış- bir sonuç elde ettiğimde C# projesini buraya (veya uygun bir siteye) atacağım. Bu haliyle (doğru yolda ilerlediğimden emin olmadan) atmaya gerek yok. O noktadan sonrasında takıldığımız yerde bu kod üzerinden gitmek isteyen ve C# bilen arkadaşların da desteği ile ilerlenebilir.


İbrahim KAZANCI
Healthy HBYS


12 Mayıs 2014 Pazartesi 17:48:57 UTC+3 tarihinde Namık Güngör yazdı:

İbrahim KAZANCI

unread,
May 23, 2014, 7:40:26 AM5/23/14
to sagli...@googlegroups.com
Arkadaşlar,

Kart okuyucu geldi, bir kaç aşamayı geçtim ama şu an "İmza atılmak istenen sertifika geçerli değil." hatası alıyorum. Akis yazılımı ile karttaki sertifikaları sisteme yüklemiştim. Windows kullanıcı dizininin altında .SertifikaDeposu klasörüne SertifikaDeposu.svt'yi de attım. Yapılması gereken başka ne vardı bilen ya da hatırlayan var mı? (E-Recete_Calistay_Egitim_23_01_2013_Ankara.zip üzerinden gidiyorum)

İbrahim KAZANCI

SignHelper.cs
...
...
...
                //Signer Oluşturma
                BaseSigner signer = new SCSignerWithCertSerialNo(smartCard, session, slot, signingCert.getSerialNumber().GetData(), SignatureAlg.RSA_SHA256.getName());

                bool validCertificate = isValidCertificate(signingCert);
                if (!validCertificate)
                {
                    MessageBox.Show("İmza atılmak istenen sertifika geçerli değil.");
                    return null;
                }
...
...
...


16 Mayıs 2014 Cuma 02:14:55 UTC+3 tarihinde İbrahim KAZANCI yazdı:

Serkan KOCAMAN

unread,
May 23, 2014, 7:45:33 AM5/23/14
to sagli...@googlegroups.com
Biz bu ortak kütüphaneyi kullanmıyoruz ama aynı sorun bizim yazdığımız kütüphanede de çıkıyordu. SertifikaDeposunu güncellemeniz gerekiyor web sitesinde ki imzager yazılımını kurunca o otomatik olarak güncelliyor. Biz öyle çözdük isterseniz bir deneyin. 


23 Mayıs 2014 14:40 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

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

İbrahim KAZANCI

unread,
May 23, 2014, 8:43:34 AM5/23/14
to sagli...@googlegroups.com
Teşekkür ederim Serkan Bey.

İmzager'i tekrar kurdum, sertifikaDeposu dosyasını yeniledi ama olmadı...

Setifika deposunu okurken SQLite kullanılıyormuş, App.Config dosyasında SQLite tanımlı mı diye baktım, tanımlı.
SQLite dll'i de exe ile aynı klasörde mevcut.

Yine de olmadı. Yalnız debug yaparken hata mesajının aslı

"Sertifika Zinciri Sorunlu" olarak geliyor.

Yorum yapabilen var mı?

23 Mayıs 2014 Cuma 14:45:33 UTC+3 tarihinde Serkan KOCAMAN yazdı:

İbrahim KAZANCI

unread,
May 23, 2014, 8:56:08 AM5/23/14
to sagli...@googlegroups.com
İmzager'den baktığımda Akıllı karttaki sertifika iptal edilmiş görünüyor. Halbuki 2015'e kadar süresi vardı. kamusm'ye mail attım cevap bekliyorum.

23 Mayıs 2014 Cuma 15:43:34 UTC+3 tarihinde İbrahim KAZANCI yazdı:

Serkan KOCAMAN

unread,
May 23, 2014, 10:02:38 AM5/23/14
to sagli...@googlegroups.com
Dediğim gibi bizde bu şekilde sorun çözüldü. Gerçi bizde de şimdi meduladan Yazılımsal hata oluştu cevabı geliyor. Umarım çözüm bulursunuz.

Kolay gelsin.


23 Mayıs 2014 15:56 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

İbrahim KAZANCI

unread,
Jun 5, 2014, 2:12:44 AM6/5/14
to sagli...@googlegroups.com
Merhaba,

Biraz zaman aldı, akıllı kart iptal olduğundan yenisini temin etmem gerekti vs.

KamuSM'de yayınlanan Delphi için Dll örneğini geliştirerek imza işlemini gerçekleştirir hale geldim.Yeni halinde: İmzalanacak Reçete XML'ini fonksiyona String olarak gönderip dönüş değeri olarak imzalı halini yine string formatında alıyorsunuz. Dosya yazma okuma ihtiyacı yok.

Umarım henüz başlamamış arkadaşların işine yarar. Proje Visual Studio 2010 Express ile derlenmiş durumda. Delphiye TLB olarak aktarım için ekteki Delphide_Api_kullanımı_Raporu.docx dosyasındaki yöntemi takip ettim. Kurarsanız takıldığımız yerlerde ilerlemek daha kolay olur diye düşünüyorum.

Delphi'den kullanımı şu şekilde:

uses EImzaLibrary_TLB, ....

Function ReceteGonderImzali(HastaSistemKodu, ProtokolNo, DoktorKodu : string; FisNo: Byte; Nitelikli: Boolean):Byte;
var
  imzaarayuz: EImzaGui;
  XML: WideString;
  LocalPath: String;
begin
....
....
    imzaarayuz := CoEImzaDll.Create as EImzaGui;
   XML := imzaarayuz.ImzalaBes(LocalPath, LocalPath+'lisans.xml','12345',nitelikli, XML, '', LocalPath);
    imzaarayuz :=nil;
....
....
// sonunda medula gönderim kısmı şu ikisinden biri olacak sanırım:
    vImzaliEreceteGirisIstekDVO.imzaliErecete := TByteDynArray(frmMain.Encode64(XML))
// veya
    vImzaliEreceteGirisIstekDVO.imzaliErecete := TByteDynArray(XML);

Medula kısmını henüz denemedim.

// ImzalaBes fonksiyonu için parametreler şöyle:
// 1. parametre xmlsignature-config.xml dosyasının bulunduğu klasör 'D:\Healthy2006d2006\HstTakip\' gibi
// 2. parametre lisans.xml dosyasının yolu 'D:\Healthy2006d2006\HstTakip\lisans.xml' gibi
// 3. parametre pin no '12345' gibi
// 4. parametre nitelikli mi (normalde false olacak) boolean
// 5. parametre imzalanacak xml (widestring)
// 6. parametre imzalanacak xml dosyasının yolu (kullanmaya gerek yok, 5. parametre aynı veriyi string olarak kabul ediyor)
// 7. parametre imzalanmış xml dosyasının kaydedileceği klasör 'D:\Healthy2006d2006\HstTakip\' gibi

Delphide_Api_kullanımı_Raporu.docx
EImzaLibrary.7z

Coskun ÇINAR

unread,
Jun 9, 2014, 3:31:22 AM6/9/14
to sagli...@googlegroups.com
Kamu-sm nin verdiği Delphi için örnek ile yapılmak istediğinde 

C# projesini kendi bilgisayarınızda  derlendiği için belki fark edilmeyebilir  fakat  başka bir pc de denediğinizde pc  {xxxxx-xxxx-xx vb} GUID di ile sizden +COM a DLL kaydı isteyecektir, bu da her pc için yeni bir command çalıştırma zorunluluğu getirecektir. 




2 Mayıs 2014 Cuma 19:13:36 UTC+3 tarihinde İbrahim KAZANCI yazdı:
Merhaba,

İbrahim Kazanci

unread,
Jun 10, 2014, 1:24:22 AM6/10/14
to sagli...@googlegroups.com
Coşkun Bey, teşekkür ederim.

Bu arada bir de KamuSM'den gelen cevabı ileteyim.

Sayın İlgili,
Ereçete Xades enveloping(veri imza içinde base 64 formatında-zarflayan) imza olmalıdır, sizin ekte gönderdiğiniz imzalar enveloping değildir(Enveloped imzadır, imza verinin içerisinde-zarflanan). Api içerisindeki Xades enveloping imza örneği ile Ereçeteye doğru imza atabilirsiniz. Kolay gelsin.
Talebiniz 2014060710000146 numarası ile alınmıştır.

Proje içerisindeki Enveloped imza fonksiyonunu kullanmışım. Aynı proje içerisindeki Enveloping imza prosedürünü kullanmak gerekiyor.

9 Haziran 2014 Pazartesi 10:31:22 UTC+3 tarihinde Coskun ÇINAR yazdı:

İbrahim KAZANCI

unread,
Jun 19, 2014, 7:31:34 PM6/19/14
to sagli...@googlegroups.com
Projeyi enveloping türünde imzalayan exe haline çevirdim...

Şu an MEDULA'dan;

imza degeri dogruluğu başarılıdır.
imzalanmış özellik doğruluğu başarılıdır.
imzalanmamamış özellik doğruluğu başarılıdır.
referans geçerliliği doğruluğu başarılıdır.
imzacı sertifikası doğruluğu başarısızdır. Yazılımsal veya sistemsel bir hata oluştu...

mesajı dönüyor. İmzacı sertifikası ile ilgili hatanın nedeni sanırım gerçek reçeteyi Test sertifikasıyla göndermemden kaynaklanıyor.

Olacak inşallah.

İbrahim Kazancı
10 Haziran 2014 Salı 08:24:22 UTC+3 tarihinde İbrahim Kazanci yazdı:

İbrahim KAZANCI

unread,
Jun 24, 2014, 6:42:33 AM6/24/14
to sagli...@googlegroups.com
Merhaba,

Exe'yi ve kodları gönderiyorum.

Şu an imzalıyor, doğrulama da yapıyor. Ancak Medulada "imzacı sertifikası doğruluğu başarısızdır." hatası dönüyor. Ne yazık ki meduladan bu konuda cevap gelmedi. Gerçek akıllı kart ile test edilse çalışabileceğini düşüyorum. Daha önce kaydedilmiş bir reçeteyi tekrar göndermeyi deneyebilirsiniz. Meduladan gelen cevapta "Aynı ilaç daha önce kaydedilmiş" derse olmuş demektir.

Dll'lerin register edilmesi vs. gerekmiyor. Kendi bilgisayarımdan başka yeni kurulmuş iki bilgisayarda (XP Pro 32 bit ve Win 7 64 bit) denedim çalıştı, ekteki eimza.zip içindeki dosyalar aynen korundu ise ve net framework 3.5 kurulu ise sorun yok. Gerekirse ileride gerekli tüm dosyalar exe içerisine gömülerek programın dağıtım sorunu aşılabilir. C# bilmeyen biri olarak şimdilik bu kadar yaptım.
Programın çalışması için gerekenler Gereklilikler.txt içinde verildi.
Tabii Akis yazılımının zaten yüklü olması gerekli. Önce akis ile akıllı karta ulaşabildiğinizi deneyin. Sonra program çalışacaktır.
İmza işlemini gerçekleştirebilmek için elinizdeki karta ait sertifikayı trusted klasörüne import etmeniz gerekli.

Çalışma şekli şöyle:
eImzaOS.exe iki parametre alıyor. EXE'ye ilk parametre olarak imzalanacak kaynak XML verisi string formatta gönderiliyor. EXE'nin kaynak XML olarak dosya kullanması isteniyorsa ilk parametre boş olarak ( "" şeklinde) geçilip ikinci parametre olarak kaynak dosyanın yolu veriliyor. Eğer iki parametre de gönderilmişse program ilk parametreyi (string xml'i) dikkate alıyor.
Komut satırı:
cmd /C eImzaOS.exe "<ereceteBilgisi>..........</ereceteBilgisi>" "kaynak xml yolu"

İmzalama işlemi bittiğinde program kapanıyor ve imzalanmış veriyi yine string olarak döndürüyor. Aşağıda delphi üzerinden çalıştırma ve dönen veriyi alma örneği var:


Programı Delphi'den şöyle çalıştırıyorum:
var
  XML: WideString;
begin
  ...
  ...

  XML := XML + '<ereceteBilgisi>' +
  '  <tesisKodu>'+inttostr(frmMain.GSSTesisKodu)+'</tesisKodu>' +
  ...
  ...

    if Dosyadan = 0 then
    begin
      // hazirlanan XML textini gonder ve imzalanmis olarak geri al
      XML := frmMain.GetDosOutput(frmMain.LocalPath+'EImzaOS.exe '+'"'+XML+'"'+' "'+frmMain.LocalPath+'\"', frmMain.LocalPath);
    end
    else
    begin
      // XML'i dosyaya kaydet (dosya uzerinden islem yapmak isteniyorsa kullan)
      AssignFile(Logo,frmMain.LocalPath+'erecete.xml');
      Rewrite(Logo);
      Writeln(Logo,XML);
      CloseFile(Logo);
      XML := frmMain.GetDosOutput('EImzaOS.exe ""'+' "'+frmMain.LocalPath+'\"', frmMain.LocalPath);
    end;

    if XML = '' then
    begin
      frmRMemo.Memo1.Lines.Add('İmzalanmış reçete oluşmadı. Gönderim Yapılmadı');
      Exit;
    end;
    vImzaliEreceteGirisIstekDVO := ImzaliEreceteGirisIstekDVO.Create;
    //  imzaliErecete parametresi TByteDynArray iken string yaptim...
    vImzaliEreceteGirisIstekDVO.imzaliErecete := XML;
    vImzaliEreceteGirisIstekDVO.tesisKodu := frmMain.GSSTesisKodu;
  ...
  ...

Kullanmak isteyen olursa buyursun denesin...

Dosyaları sıkıştırıp atacaktım ama google grup dosya boyutu uyarısı verdi. https://sourceforge.net/projects/eimza/files/eImzaOS/ adresindeki eimza.zip yazılımın çalışır halidir. Kalan diğer tüm dosyalar ise kaynak kodlardır.
Visual C# 2010 Express ile hazırlanmıştır.

İbrahim KAZANCI
Healthy HBYS


TheCesur

unread,
Jun 24, 2014, 7:27:48 AM6/24/14
to sagli...@googlegroups.com

s.a

Kardeş Allah razı olsun. İmkanın dahilinde yaptığın bu kodları paylaşman takdire şayan.. Bir kişinin hayır duasını bile alman, belki binlerce liradan daha faydalı olcaktır.

Sevgi ve muhabbetle..

cagdask

unread,
Jun 24, 2014, 8:18:42 AM6/24/14
to sagli...@googlegroups.com
elinize sağlık İbrahim bey.

24 Haziran 2014 Salı 14:27:48 UTC+3 tarihinde TheCesur yazdı:

jenarasyon

unread,
Jun 24, 2014, 8:38:28 AM6/24/14
to sagli...@googlegroups.com
eline sağlık


24 Haziran 2014 15:18 tarihinde cagdask <cagda...@gmail.com> yazdı:

--

İbrahim KAZANCI

unread,
Jun 24, 2014, 11:34:09 AM6/24/14
to sagli...@googlegroups.com
Sağolun. Aslında elimde KamuSM'den alınmış gerçek sertifika bulunsaydı, programı gönderim yaptığından emin olarak paylaşmayı planlıyordum. Temin edebilirsem denemesini yapacağım. Ya da sizin imkânınız olursa bir deneme yapıp varsa hatayı bildirirseniz sorunu çözümleyebiliriz diye düşünüyorum. Bir ihtimal de hatasız gönderecektir.

Bu arada Delphi'den komut istemini çalıştırmak için kullandığım GetDosOutput fonkisyonunun içeriğini atlamışım. İnternette bulunabilir ama kullandığım hali aşağıdadır. C# vs kullanan arkadaşlar için bir açıklama yapayım. Exe'yi direk application olarak çalıştırdığınızda, dönen imzalanmış string veriyi almak mümkün olmayacaktır. Bu yüzden cmd /C komutunun ardından çalıştırarak console çıktısını almak gerekiyor. Benzeri fonksiyonlar kullanabilirsiniz:

public
  function GetDosOutput(CommandLine: string; Work: string = 'C:\'): string;
...
...

function TfrmMain.GetDosOutput(CommandLine: string; Work: string = 'C:\'): string;
var
  SA: TSecurityAttributes;
  SI: TStartupInfo;
  PI: TProcessInformation;
  StdOutPipeRead, StdOutPipeWrite: THandle;
  WasOK: Boolean;
  Buffer: array[0..255] of AnsiChar;
  BytesRead: Cardinal;
  WorkDir: string;
  Handle: Boolean;
begin
  Result := '';
  with SA do begin
    nLength := SizeOf(SA);
    bInheritHandle := True;
    lpSecurityDescriptor := nil;
  end;
  CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SA, 0);
  try
    with SI do
    begin
      FillChar(SI, SizeOf(SI), 0);
      cb := SizeOf(SI);
      dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
      wShowWindow := SW_HIDE;
      hStdInput := GetStdHandle(STD_INPUT_HANDLE); // don't redirect stdin
      hStdOutput := StdOutPipeWrite;
      hStdError := StdOutPipeWrite;
    end;
    WorkDir := Work;
    Handle := CreateProcess(nil, PChar('cmd.exe /C ' + CommandLine),
                            nil, nil, True, 0, nil,
                            PChar(WorkDir), SI, PI);
    CloseHandle(StdOutPipeWrite);
    if Handle then
      try
        repeat
          WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
          if BytesRead > 0 then
          begin
            Buffer[BytesRead] := #0;
            Result := Result + Buffer;
          end;
        until not WasOK or (BytesRead = 0);
        WaitForSingleObject(PI.hProcess, INFINITE);
      finally
        CloseHandle(PI.hThread);
        CloseHandle(PI.hProcess);
      end;
  finally
    CloseHandle(StdOutPipeRead);
  end;
end;


İbrahim Kazancı


24 Haziran 2014 Salı 15:38:28 UTC+3 tarihinde mmollaoglu yazdı:

İbrahim KAZANCI

unread,
Jun 26, 2014, 11:28:39 AM6/26/14
to sagli...@googlegroups.com


KamuSM'nin onaylayacağı şekle getirdikte sonra KamuSM'ye herkes1200 TL ödemeden bu EXE'nin bir defa onaylattırılması için ne yapabiliriz? Süreç nasıl işliyor? Fikri olan var mı?


İbrahim KAZANCI


24 Haziran 2014 Salı 18:34:09 UTC+3 tarihinde İbrahim KAZANCI yazdı:

cagdask

unread,
Jun 30, 2014, 9:41:57 AM6/30/14
to sagli...@googlegroups.com
merhaba,
bu sourceforge da projeyi komple indirme diye bişey yokmu?
illa dosyaları tek tek mi indirmek lazım acaba?

24 Haziran 2014 Salı 13:42:33 UTC+3 tarihinde İbrahim KAZANCI yazdı:

İbrahim KAZANCI

unread,
Jul 1, 2014, 8:07:13 AM7/1/14
to sagli...@googlegroups.com

Kök klasöre "EImzaOS-Project-Complete.7z" ismiyle projenin son halini tek bir dosya olarak attım.

Bu arada project properties içerisinde Build Events -> Post Build'de kendim için bir kaç satır eklemiştim. Size uymayacaktır. Build ederken belki hata verebilir, aşağıdaki satırdan sonraki satırları kaldırın:

copy "$(ProjectDir)eRecete.xml" "$(ProjectDir)$(OutDir)"

Kolay gelsin.



30 Haziran 2014 Pazartesi 16:41:57 UTC+3 tarihinde cagdask yazdı:

cagdask

unread,
Jul 1, 2014, 9:03:33 AM7/1/14
to sagli...@googlegroups.com
eyvallah

1 Temmuz 2014 Salı 15:07:13 UTC+3 tarihinde İbrahim KAZANCI yazdı:
Message has been deleted

İbrahim KAZANCI

unread,
Jul 1, 2014, 1:14:09 PM7/1/14
to sagli...@googlegroups.com
Merhaba,

Bir ufak sorun var. Son versiyonda eklediğim aşağıdaki kod hataya neden oluyor. her halukarda erecete.xml dosyasındaki xml'i imzalıyordu. String gelen xml parametresinin işlenmesini engelliyordu. Kaldırdım.

        private void tBoxERecetePath_TextChanged(
object sender, EventArgs e)
        {
          //  txtXML.Text = DosyaRead(tBoxERecetePath.Text);
        }

Projenin son hali güncellendi.

Source dosyalar : "EImzaOS-Project-Complete.7z" içerisindedir.



1 Temmuz 2014 Salı 16:03:33 UTC+3 tarihinde cagdask yazdı:

mehmet yağcı

unread,
Jul 9, 2014, 3:29:28 AM7/9/14
to sagli...@googlegroups.com
İbrahim Bey Merhaba,
Öncelikle ellerinize sağlık. Keşke tüm süreçleri detaylı anlatan dokümanlar ve uygulamalar olsa ama şimdiye kadar olmadı bundan sonra da olacağını sanmıyorum.
Uygulamayı test için aldığımız Akis kartı ile denediğimizde imzalama işlemi başarılı bir şekilde yapılıyor.
Akis karttaki sertifika dosyasını uygulamanın altında trusted klasörüne kopyalıyoruz.
Bütün doktorlar için böyle mi yapıcaz? Sadece bir kartın sertifika  dosyasının bu dizinde olması yeterli mi?
Teşekkürler...


1 Temmuz 2014 Salı 20:14:09 UTC+3 tarihinde İbrahim KAZANCI yazdı:

İbrahim KAZANCI

unread,
Jul 11, 2014, 9:35:44 AM7/11/14
to sagli...@googlegroups.com
Mehmet Bey,

Ben gerçek kartı bekliyorum şu an. Ancak denemeden evvel gerçek ortamda yapılmasını öngördüğüm iki değişiklik var.

1. Daha önce KamuSM tarafından belirtilen .sertifikadeposu klasöründeki sertifikaDeposu.svt dosyasının karttaki sertifikayı doğrulamakta kullanılacağı (bu durumda doktorun yine de bir defalığına sertifikasını import etmesi gerekecek mi emin değilim.) Gerçek ortama geçişte bu nedenle certval-policy.xml içerisinde ilk satırlarda yer alan;

            <class name="tr.gov.tubitak.uekae.esya.api.certificate.validation.find.certificate.trusted.TrustedCertificateFinderFromFileSystem">
                <param name="dizin" value="trusted"/>
            </class>

kısmını iptal etmek gerekecek.

Sertifika kontrolü için aşağıdaki kısım kalacak:

<class name="tr.gov.tubitak.uekae.esya.api.certificate.validation.find.certificate.trusted.TrustedCertificateFinderFromECertStore">

2. Şu an lisans klasöründe yer alan 3 Lisans dosyasından LisansFree.xml'i kullanıyor. Gerçek ortamda devreye alırken LisansFree.xml yerine Lisans.xml dosyasını kullanmak lazım. Bunun için lisans.xml'i lisansfree.xml olarak rename etmek yeterli olacaktır.

https://yazilim.kamusm.gov.tr/esya-api/doku.php?id=esya:sertifika:dogrulama-kutuphane

Onay alanlardan tecrübesi olan vardır herhalde. Bilgi verirlerse memnun oluruz.


İbrahim KAZANCI
Healthy HBYS

9 Temmuz 2014 Çarşamba 10:29:28 UTC+3 tarihinde mehmet yağcı yazdı:

cagdask

unread,
Jul 14, 2014, 6:21:37 AM7/14/14
to sagli...@googlegroups.com
e-reçete klavuzunda şöyle bir ifade var:

İmzalan orijinal XML dosyası imzalı dosyanın içinde 64’lük tabanda (base 64) kodlanarak yer alacaktır

 

burda ne demek istiyor tam olarak acaba? xml i oluşturduktan sonra base64 yapıp öylemi imzalıycaz?
 

11 Temmuz 2014 Cuma 16:35:44 UTC+3 tarihinde İbrahim KAZANCI yazdı:

cagdask

unread,
Jul 14, 2014, 6:23:33 AM7/14/14
to sagli...@googlegroups.com
yoksa imzaladıktan sonra base64 yapıp servise öylemi göndericez?

14 Temmuz 2014 Pazartesi 13:21:37 UTC+3 tarihinde cagdask yazdı:

İbrahim KAZANCI

unread,
Jul 14, 2014, 9:41:42 AM7/14/14
to sagli...@googlegroups.com

<ereceteBilgisi> diye başlayan xml imzalandıktan sonra elde edilen imzalanmış veri base64'e çevrilecek.

İmzalanmış hali byte olarak alıp ToBase64String ile base64 formatında string elde edebilirsin. Bunu gönderilecek xml içinde ilgili kısma koyacaksın.

KamuSM'nin son gönderdiği 2.0.2 dll'lerine göre hazırlanmış hali sourceforge'da yüklendi.


İbrahim KAZANCI
Healthy HBYS

14 Temmuz 2014 Pazartesi 13:23:33 UTC+3 tarihinde cagdask yazdı:

atilla acar

unread,
Dec 4, 2015, 7:09:31 AM12/4/15
to sagli...@googlegroups.com
Merhaba İbrahim Bey,

Öncelikle bu işe emek verip paylaştığınız için teşekkür ederim.

Ben de KamuSM .net esya apilerinin eski sürümlerini kullanarak e-imzayı benzer şekilde dll olarak yapmıştım. 
1) Fakat benim bu kütüphaneyi kullandığım zaman şöyle bir sorunum vardı TürkTrust ve E-Güven ile imza atabilmek için dışardan CardType parametresini vermem gerekiyordu.
Acaba sizin yaptığınız dll'de böyle bir zorunluluk var mı, KamuSM dışındaki kartları api otomatik tanıyor mu, yoksa dışardan parametre olarak veriyor musunuz?

2) Benim yazdığım dll'i uygulama içinden kullanabilmem için her doktora register (regasm...) etmem gerekiyordu, sizin dll'de de bunu yapmak gerekiyor mu? Gerekmediğini okudum bunu nasıl aştınız?

iyi çalışmalar.


iyi çalışmalar.



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



--
Atilla ACAR
Software Engineer
Monad Software&Consulting

Hacettepe Teknokent 1 Nolu AR-GE Binası
No:3 06800 Beytepe/ANKARA/Türkiye

Tel: +90 0312 299 23 60
Fax: +90 0312 299 23 58

harun ay

unread,
Dec 4, 2015, 11:00:49 AM12/4/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
zaman damgası eklememiz gerekiyor mu? recete klavuzunda yazmıyor.
receteyi servise gönderdiğmiz zaman imzalama algoritması, zaman damgası vb. kontrolleri yapılıyormu .bilgisi olan var mı acaba?
gönderdiğimiz recetenin geçerli olduğunu nasıl anlayabiliriz.

atilla acar

unread,
Dec 4, 2015, 11:02:53 AM12/4/15
to sagli...@googlegroups.com
Evet doğrulama yapıyorlar.
İmzarGer ile de birtakım doğrulamalar yapabilirsiniz.

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

atilla acar

unread,
Dec 4, 2015, 11:03:00 AM12/4/15
to sagli...@googlegroups.com
İmzaGer

İbrahim KAZANCI

unread,
Dec 5, 2015, 11:50:03 PM12/5/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin, atill...@monadyazilim.com
Daha önce bununla ilgili bir mesaj yazmışım ama iki çözümü bir arada verince biraz karmaşık görünüyor. Uzun zaman geçince ben de toparlamakta zorlandım.:

https://groups.google.com/forum/#!searchin/saglik_net/case$20%22AEPKEYPER%22$3A$20return$20CardType.AEPKEYPER$3B/saglik_net/nyPklOP-CeQ/S8mu6noDUqsJ

Özetle:

Smartcard yapısının oluşturulduğu kod satırını her bir kart tipi için try-catch ile deneyerek hangisinde başarılı ise ona uygun SC (smartcard) yapısının oluşmasını sağladım:

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

İbrahim KAZANCI


4 Aralık 2015 Cuma 14:09:31 UTC+2 tarihinde atilla acar yazdı:

İbrahim KAZANCI

unread,
Dec 7, 2015, 12:09:11 AM12/7/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin, atill...@monadyazilim.com
İkinci soruyu atlamışım.

Açıkçası Exe'lerde regasm gerekiyor mu bilmiyorum. Ancak benim hazırladığım çözüm exe. string gönderip string alıyorsunuz. Ancak deneme yaptığımı ve net framework varsa çalıştığını biliyorum. Derlerken x86 olarak derliyorum. Tabi alttaki klasör yapısı ile birlikte kopyalıyordum... Tübitakın dll'lerini vs. hepsinin mevcut olması gerekiyor zaten...

6 Aralık 2015 Pazar 06:50:03 UTC+2 tarihinde İbrahim KAZANCI yazdı:

harun ay

unread,
Dec 7, 2015, 2:21:02 AM12/7/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin, atill...@monadyazilim.com
Teşekkürler bilgileriniz için.  siz zaman damgasıyla mı gönderiyorsunuz?

4 Aralık 2015 Cuma 18:03:00 UTC+2 tarihinde atilla acar yazdı:

arslanya...@gmail.com

unread,
Dec 8, 2015, 6:32:08 PM12/8/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Test kiti ile denedim, az biraz da kodları kendime göre uyarladım şıkır şıkır çalıştı,
İbrahim bey elinize kolunuza, parmaklarınızın ucuna sağlık...

atilla acar

unread,
Dec 9, 2015, 2:33:11 AM12/9/15
to sagli...@googlegroups.com
Teşekkür ederim İbrahim Bey,

try catch ile SmartCard için "Smart" bir çözüm bulmuşsunuz :)

iyi çalışmalar.

İBRAHİM ÜZÜL

unread,
Dec 9, 2015, 9:13:28 AM12/9/15
to sagli...@googlegroups.com
Merhabalar,
KamuSM değerlendirmesinde 

4. madde : Sertifika doğrulama, yanlış pin girme,bloke olmuş kartla imzalama ve benzeri hatalı durumlarla ilgili kullanıcı bilgilendirmelerinde standart hata kabul edilmeyecektir. Kullanıcı bilgilendirmeleri hatayı net ifade edecek şekilde olmalıdır.

maddesi ile ilgili bir sorunum var.

XMLSignature sınıfır imzalama işlemini yapıyor. Ve bana hiç bir değer döndürmüyor. pin yalnış olduğunda içinde MessageBox gönderiyor. 4. maddeye göre benim bu mesajı göstermemem  ve hatayı bilip detaylı bir mesaj vermem gerekiyor. Siz bu kısmı nasıl çözdünüz ? XMLSignature.Sign void bir metod, 

9 Aralık 2015 09:33 tarihinde atilla acar <atill...@monadyazilim.com> yazdı:

İbrahim KAZANCI

unread,
Dec 10, 2015, 12:16:11 AM12/10/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
İbrahim Üzül kardeşim,

'Standart Hata'dan kastettkileri şu sanırım: Her çeşit hatada ortak bir 'İşlem Başarısız' gibi bir hata mesajı kabul edilmeyecek. Kartın takılı olmamasında veya PIN kodunun yanlış girilmesinde bunlara yönelik ayrı hata mesajları olacak. Yani orada yer alan hata mesajını kullanabilirsiniz. PIN yanlış ise 'PIN Kodu yanlış' gibi bir hata yeterli olacaktır. Bilmiyorum dediğinizi doğru anladım mı?

İbrahim KAZANCI

9 Aralık 2015 Çarşamba 16:13:28 UTC+2 tarihinde İBRAHİM ÜZÜL yazdı:

İBRAHİM ÜZÜL

unread,
Dec 10, 2015, 2:34:41 AM12/10/15
to sagli...@googlegroups.com
İbrahim bey , cevabınız için çok teşekkür ederim.
XMLSignature.Sign() metodu içinde mesajlarını kendisi veriyor zaten. Benim kafamı kurcalayan, bu metodun içindeki mesajları kapatıp farklı standart bir mesaj koyma şansımız olmadığı için neden böyle bir madde ekleme gereği duymuşlar. Sertifika geçerlilik kontrolüne ait mesajı ben yazıyorum. Belki bunun için yazmışlardır.
İnşallah sizin dediğiniz gibidir. 

10 Aralık 2015 07:16 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

Özgü

unread,
Dec 10, 2015, 7:45:35 AM12/10/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
GetDosOutput() function nunu açabilirmisin acaba

10 Aralık 2015 Perşembe 07:16:11 UTC+2 tarihinde İbrahim KAZANCI yazdı:

İbrahim KAZANCI

unread,
Dec 11, 2015, 4:26:47 AM12/11/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
GetDosOutput foksiyonunu stringi alabilmek için kullanıyorum. Eğer imzalanmış XML çıktısını dosyaya yazıp oradan Delphiye aktarıyorsanız belki buna gerek olmayabilir ancak direk xmli direk string parametre olarak gönderip string olarak almak için eimza exe'sini komut isteminde çalıştırmak gerekiyor.

GetDosOutput fonkisyonunun içeriğini internette bulunabilir ama kullandığım hali aşağıda. Exe'yi direk application olarak çalıştırdığınızda, dönen imzalanmış string veriyi almak mümkün olmuyor. Bu yüzden cmd /C komutunun ardından çalıştırarak console çıktısını almak gerekiyor. Kısacası programı konsolda çalıştırmak için gerekli... GetDosOutput yerine benzeri fonksiyonlar da kullanabilirsiniz:

   Delphi'den kullanmak için aşağıdaki gibi bir kullanım olabilir. Parametrelerin sayısını kontrol edin. EImzaOS exe'nin program.cs kısmında parametrelerin sayısı ve sırası bellidir. Ona göre parametre gönderilecek...


 
 
 XML
:= frmMain.GetDosOutput(frmMain.LocalPath+'EImzaOS.exe '+'"'+XML+'"'+' "'+frmMain.LocalPath+'\"', frmMain.LocalPath);


GetDosOutput Tanımı;
İbrahim KAZANCI
Healthy HBYS


10 Aralık 2015 Perşembe 14:45:35 UTC+2 tarihinde Özgü yazdı:

Özgü

unread,
Dec 11, 2015, 5:00:43 AM12/11/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
İbrahim bey Hangouts tan görüşebilirmiyiz..

11 Aralık 2015 Cuma 11:26:47 UTC+2 tarihinde İbrahim KAZANCI yazdı:

İbrahim KAZANCI

unread,
Dec 16, 2015, 4:58:14 AM12/16/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Merhaba,

VEM denetlemeleri vs. derken biraz yoğun geçti, hangouts da kullanmıyordum kusura bakmayın. Olabilir tabi...

11 Aralık 2015 Cuma 12:00:43 UTC+2 tarihinde Özgü yazdı:
Message has been deleted

Mustafa YILDIZ

unread,
Dec 16, 2015, 9:40:35 AM12/16/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
ibrahim hocam e-reçete e-imza çalışmanız için elinize emeğinize sağlık

 konuyla ilgili bir sorum olacaktı

- EImzaOs.exe nin bulunduğu trusted klasörüne akıllı kart'taki sertifikayı kopyalamak yerine karttan direk okuma yapabilir miyiz?
- e-imza işlemleri hep akıllı kart ile mi oluyor, yoksa başka yöntemler ilede imzalama işlemi yapılıyor mu?


teşekkürler







------------------------------------------------

2 Mayıs 2014 Cuma 19:13:36 UTC+3 tarihinde İbrahim KAZANCI yazdı:
Merhaba,

Arkadaşlar biliyorsunuz e-imza konusunda Sağlık Bakanlığı'ndan yazılar geliyor ve henüz çoğu firmanın e-imza konusunda çözümü yok.

Tübitak KamuSM'de API'ler ücretsiz sunuluyor ancak e-imza konusu oldukça farklı bir alan olduğu için yazılım geliştirme konusunda zorluk yaşanıyor. Üstelik HBYS yazılımcıları da Java ve C# dillerini bilenlerden ibaret değil. Hatta bazı firmalarda bu dilleri bilenler yok. KamuSM C# dilinde bir DLL hazırlayarak başka dillerde (Delphi) kullanılabileceğine dair örnek yayınladı. Ancak yine de e-imza kodunu, hiç bilmediğiniz bir dilde günlerce belki haftalarca uğraşarak geliştirmeniz gerekecek.

Üstüne üstlük yüzlerce HBYS firmasının haftalarca uğraşarak üreteceği kod birbirinin aynı olacak, nihayetinde hepsi de tamamen aynı işi yapacak, özetle aldığı XML'i dönüştürüp geri verecek.

Bu küçük ama uğraştırıcı kodun ortak bir çalışma ile üretilmesi gerektiğini düşünüyorum. Bu kod üretildiğinde sanırım DLL, EXE veya benzeri şekilde derleyerek her dil içerisinden kullanmak mümkün olacaktır.

Bir kamu kuruluşunun aynı kodu yüzlerce firmaya tekrar tekrar yazdırarak kamuya hizmet etmiş olmayacağından hareketle en başta olması gereken KamuSM tarafından basit imza atacak bir kodun onay alacak haliyle yayınlanmasıdır.

Eğer Sağlık Bakanlığı yetkilileri KamuSM'yi yönlendirmek suretiyle bu konuda bize destek olmayacaksa bu kodun gerekirse ortak bir çalışma ile açık kod olarak geliştirilmesi mantıklı olacaktır diye düşünüyorum.

Sizin fikriniz nedir?


İbrahim KAZANCI
Healthy HBYS


İBRAHİM ÜZÜL

unread,
Dec 17, 2015, 4:45:34 AM12/17/15
to sagli...@googlegroups.com
Merhabalar, 
Sertifika kontrolü yaparkan resimde ki hatayı alıyorum.
Sertifika zinciri sorunlu diyor. Ama sertifika normalde geçerli. Imzalayıp medulaya gönderim yapabiliyorum.
Bu sorunla karşılaşan ve çözen oldumu acaba ?

16 Aralık 2015 16:40 tarihinde Mustafa YILDIZ <mummy...@gmail.com> yazdı:
eimza.jpg

Enes Turan

unread,
Dec 17, 2015, 6:51:01 AM12/17/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
İbrahim bey,

Serfitika zinciri problemini Tübitak çözüyor. Hiç uğraşmayın, Tübitak'ı arayın.

İBRAHİM ÜZÜL

unread,
Dec 17, 2015, 6:58:12 AM12/17/15
to sagli...@googlegroups.com
Tamam da bizim programdan kaynaklanmıyor mu ?
Programdan kaynaklanmıyorsa sertifikadan mı kaynaklanıyor ? Her doktor için Tubitak mı çözecek yoksa bizim programda bir düzenleme mi yapmamız lazım ?

17 Aralık 2015 13:51 tarihinde Enes Turan <tekn...@gmail.com> yazdı:
İbrahim bey,

Serfitika zinciri problemini Tübitak çözüyor. Hiç uğraşmayın, Tübitak'ı arayın.

--

atilla acar

unread,
Dec 17, 2015, 7:02:25 AM12/17/15
to sagli...@googlegroups.com
Merhaba,

İmzager kurunca hala bu hata devam ediyor mu?

İBRAHİM ÜZÜL

unread,
Dec 17, 2015, 7:05:46 AM12/17/15
to sagli...@googlegroups.com
Client lara imzager kurmadık. 

17 Aralık 2015 14:02 tarihinde atilla acar <atill...@monadyazilim.com> yazdı:

atilla acar

unread,
Dec 17, 2015, 7:09:14 AM12/17/15
to sagli...@googlegroups.com
İmzager Kurunca .sertifikadeposu klasörüne sertifikaların köklerini otomatik yükler diye tahmin ediyorum.

Enes Turan

unread,
Dec 18, 2015, 7:40:57 AM12/18/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Sertifika zinciri problemi her doktorda ortaya çıkmadı, bazı doktorlarda oldu.
32 - 64 bit uyumsuzluğu ile ilgili bir durum sanırım, teknik servisteki arkadaşlar çözdüler.
Muhtemelen otomatik güncelleme yapıldı ve bununla ilgili bir uyuşmazlık oldu, durduk yere ortaya çıkan bir sıkıntı.

İbrahim KAZANCI

unread,
Dec 18, 2015, 2:20:43 PM12/18/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Mustafa Bey,

1. trusted klasörüne herhangi tarihi geçerli bir sertifika yüklemek yeterli sanırım. Şöyle ki benim trusted klasörümde tarihi geçmemiş test sertifikası var.

Önce E-Tuğra (SafeSign) dan kart alan bir hekimin gerçek kartını denemiştim. Reçeteyi gönderiyordu. Bugün hiç kullanmadığım bir kartı sadece sürücülerini (TNB E-İmza) yükleyip aynı bilgisayarda denedim. Sertifikasını vs. yüklemedim. Onu da gönderdi. Bu klasör certval-policy.xml dosyasında geçiyor. Şu an mantığını hatırlayamıyorum. Bununla ilgili Belki programda bir yerde bu klasörü arıyordur. XML dosyalardan birinde idi sanırım. bu klasöre olan ihtiyaç da kaldırılabilir diye düşünüyorum.

2. Akıllı kart olmadan göndermenin bir yolu olduğunu sanmıyorum. Bir şekilde akıllı kart olmalı. Ama doktorun kullandığı bilgisayara takılı olmasa da olabilir teknik olarak... Eimzanın getirilme amacına ters olsa da.


16 Aralık 2015 Çarşamba 16:40:35 UTC+2 tarihinde Mustafa YILDIZ yazdı:

İbrahim KAZANCI

unread,
Dec 18, 2015, 3:33:40 PM12/18/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Mustafa Bey,

Yanıltmış olmayayım. Bende trusted klasorunde test sertifikalarının olması yeterli oldu ve iki ayrı kart ile gönderim sağladım ama az evvel başka bir arkadaş aynı programla karttaki sertifika dostyasını trusted klasörüne atmadan

Sertifika Zinciri Sorunlu. Güvendiğiniz bir sertifika zinciri oluşturulamadı. Sertifikanın kök sertifikası güvenilir sertifikalarınızdan biri olmayabilir.


hatasını geçemedi. İmzager ile cer dosyasını trusted klasörüne çıkarttıktan sonra çalıştı... Belki kullanılan kartın yeni olması imzagerin yeni olması versiyonların farklı olması vs. etken olabilir. Şimdilik bilmiyorum.


İbrahim KAZANCI



18 Aralık 2015 Cuma 21:20:43 UTC+2 tarihinde İbrahim KAZANCI yazdı:

İbrahim KAZANCI

unread,
Dec 18, 2015, 4:41:32 PM12/18/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin

E-İmza yazılımının çalışan versiyonunun kodlarını güncel haliyle yükledim. Sadece kendime özel eklediğim kodları çıkardım. İmzalamayı etkilemeyen kodlardı. İndirebilirsiniz.

https://sourceforge.net/projects/eimza/

İbrahim Kazancı

18 Aralık 2015 Cuma 22:33:40 UTC+2 tarihinde İbrahim KAZANCI yazdı:

Coskun ÇINAR

unread,
Dec 18, 2015, 6:45:54 PM12/18/15
to sagli...@googlegroups.com
Merhabalar,

Bu tartışmayı ilk açarken c# da dll olarak derleyip  delphi de regasm yapmadan nasıl kullanabilirizi sorgulamak için açmıştım,
Cevaplar ya E-İmza için harici bir program yapıp delphi de command yöntemi ile sorgulamak ya da dll yapıp her bilgisayarda regasm yapma zorunluluğu getiriyor. Çoğu firmada çözmüştü diye biliyorum bu sorunu, ilk mesajı attıktan sonra bizde çözmüştük harici exe ye ve regasm a ihtiyaç duymadan Dll Export yöntemi ile . Fakat biz sadece Tubitakın imzasını için hazırlamıştık, diğerleri için test etmedim. Muhtemelen diğer eimzalar için de "smart" bir  çözüm bulunurdu.








18 Aralık 2015 23:41 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

--
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/2hK3PNBzZcc/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.

Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.



--
Coşkun ÇINAR
skype  : coskuncinar 

İbrahim KAZANCI

unread,
Dec 19, 2015, 3:51:44 AM12/19/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Bugüne kadar forumda katkıda bulunan arkadaşlara teşekkür ederim. Onların katkısı ve fikirleri olmasaydı bu ilerleme de sağlanamazdı. Şimdi isimleri saysam unuttuğum olur ancak bu konuda forumda yardım aldığım bir çok arkadaş var.

Başlangıçta hiç C# bilmediğim için buraya kadar getirebildim. Şimdi de fazla biliyor sayılmam. Tübitak'ın zorunlu tuttuğu niteliklere haiz olmasına da dikkat ettim. (PIN kodu girildikten bir süre sonra imzalama yapılmadıysa PIN kodunun boşaltılması, ".... sayılı kanuna göre geçerli bir elektronik imzadır" ibaresi, standart mesajların değiştirilmeden gösterilmesi, imza aşamasında kart takılıp çıkarıldı ise bunu yakalama, doktorun imzalayacağı XML'i görmesi, imzalamada kullanılacak sertifikayı görmesi vs).

İlave edilebilecek düzeltmeler ile ilgili fikri, çözüm önerisi olanlar paylaşırsa düzenleme yapılabilir. Veya kodu alıp düzenleyip yollayabilir isteyen.

İbrahim KAZANCI

 



18 Aralık 2015 Cuma 23:41:32 UTC+2 tarihinde İbrahim KAZANCI yazdı:

berker memişoğlu

unread,
Dec 19, 2015, 4:37:41 AM12/19/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Biz size teşekkür ederiz İbrahim bey ellerinize sağlık.

19 Aralık 2015 Cumartesi 10:51:44 UTC+2 tarihinde İbrahim KAZANCI yazdı:

İbrahim KAZANCI

unread,
Dec 20, 2015, 2:44:32 AM12/20/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Mustafa Bey'in sorusuna istinaden soruyorum. Doktorların kartlarındaki sertifikaları trusted klasörüne atmak bir zorunluluk mu? Enes Bey, bu konuda teknik servisteki arkadaşlarınızdan bir cevap alabilir misiniz, o sorunu nasıl çözdüler?

En azından benim denemelerimde hekimlerde bu gerekmedi. Cengiz Bey ise kendi hekimlerinden birinde denerken "Sertifika Zinciri Sorunlu. Güvendiğiniz bir sertifika zinciri oluşturulamadı. Sertifikanın kök sertifikası güvenilir sertifikalarınızdan biri olmayabilir." sorununu cer dosyasını atarak çözdü. Neye göre değişkenlik gösteriyor emin olamadım. Acaba klasörde belli firmalara ait bir cer dosyasının bulunması mı yeterli oluyor. Mesela ben Tübitaka ait cer dosyasının bulunduğu trusted klasörü içeriği ile hem e-tuğra, hem etnb, hem tübitak kartlarını imzaladım.

Eğer cer dosyalarını kaydetmek gerekli ise bunun otomatizasyonu ile ilgili bir link var. Ama mesele o değilse o işe girmeyelim.

https://blogs.msdn.microsoft.com/alejacma/2012/04/04/how-to-export-issued-certificates-from-a-ca-programatically-c/

https://blogs.msdn.microsoft.com/alejacma/2012/04/04/how-to-get-info-from-client-certificates-issued-by-a-ca-c-vs-2010/

İbrahim KAZANCI


16 Aralık 2015 Çarşamba 16:40:35 UTC+2 tarihinde Mustafa YILDIZ yazdı:
ibrahim hocam e-reçete e-imza çalışmanız için elinize emeğinize sağlık

İBRAHİM ÜZÜL

unread,
Dec 20, 2015, 7:51:48 AM12/20/15
to sagli...@googlegroups.com
Sertifika zinciri sertifika deposu ile ilgili bir sorun, ben bu sorunu policy.xml de ki yapılandırma ile çözdüm. Direkt olarak kamusm adresinde ki depo.xml adresini göstererek trusted klasörü ya da depo dosyasını local e taşımadan zincir hatası almadan sertifika doğrulama yapılabiliyor. Tabii internet erişimi gerekiyor o adrese.
Bir yöntem de o depo.xml i klasöre indirip , policy.xml dosyasında internet adresi yerine, klasör adresi yazılarak halledilebilir diye düşünüyorum. Şu an denemedim tabi ki.
Imzager de kurulumdan sonra policy.xml dosyasında kamusm adresine bakıyor. Ama kendi içine de depoyu indirmiş oluyor. yapılandırma ile o dosyalara da bağlanabiliyor. internet kullanmadan yani.

İşin medula kısmına geldiğimizde ise zaten geçersiz sertifikalarda karşı taraf bunu kontrol ettiği için sertifika geçersizdir diyor. Yani sizin sertifika geçerlimi kontrolü yapmanıza gerek kalmıyor.

20 Aralık 2015 09:44 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

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

Mor Med

unread,
Dec 21, 2015, 7:11:53 AM12/21/15
to sagli...@googlegroups.com
Selam Hbys  yazılımcıları
ben e imza ile ilgili  hiç bir bilgim ve deneyimim yok
bana yol gösterebilir misiniz


Selamlar


20 Aralık 2015 14:51 tarihinde İBRAHİM ÜZÜL <ibrahi...@gmail.com> yazdı:

Fatih Göncü - Ark Bilişim Octomed

unread,
Dec 21, 2015, 7:29:40 AM12/21/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
vallaha ibrahim bey in eline sağlık burada kodu açık olarak paylaştı. Konuları biraz incelerseniz sanırım tüm aradığınız cevapları burada bulabilirsiniz.
Bizde kendimiz yazdık ama herkesin kullanabileceği şekilde ortak bir hale getirecek vaktim olmadı açıkçası. Bir ara vaktim olur ise bende buradan paylaşacağım kodları

21 Aralık 2015 Pazartesi 14:11:53 UTC+2 tarihinde Mor MED yazdı:

Mor Med

unread,
Dec 21, 2015, 8:29:48 AM12/21/15
to sagli...@googlegroups.com
E imza entegrasyonu için
c# da geliştirdiğiniz bir uygulama var ise
ücret karşılığı almaya hazırım

kolay gelsin

21 Aralık 2015 14:29 tarihinde Fatih Göncü - Ark Bilişim Octomed <fatih...@gmail.com> yazdı:

İbrahim KAZANCI

unread,
Dec 21, 2015, 9:19:57 AM12/21/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Sourceforge'da son halinin hangisi olduğunu yazmamışım:
ESigner - 2.1.2 Desktop.7z son halidir.
C# kodları dosyanın içerisinde...
Eski hali ile bir farklılık var. İmzalanmış veriyi ayıklamada sorun olmasın diye imzalanmış verinin başına "esignerbase64:" ve sonuna ":esignerbase64" eklemiştim.
Bu değerler imzalanmış stringden aşağıdaki gibi ayıklanabiliyor. Bir de Esigner.exe'nin bulunduğu klasör ile ile ilgili bir sorun meydana gelebiliyor. Bulunduğu path'de boşluk karakteri varsa (document and settings klasöründeki gibi) komut satırında düzenleme yapmak gerekiyor. Bir kaç gün evvelki komut satırından farklı olduğu gözünüze çarpacaktır. Ben sourceforge'daki readme.txt'e de yazdım. Mantık şu:

CMD /C ""c:\bosluklu yol\esigner.exe" "<ereceteBilgisi>...</ereceteBilgisi>" """

Hem path'in çevresi "" ile kapatılmış hem de path ve bütün parametreler bütünüyle bir daha "" arasına alınmış olacak. O zaman path'de boşluk sorun oluşturmuyor.


    XML
:= frmMain.GetDosOutput('""'+frmMain.LocalPath+'ESigner.exe" '+'"'+XML+'" "" "', frmMain.LocalPath, '');
   
if XML = '' then
   
begin
      frmRMemo
.Memo1.Lines.Add('İmzalanmış reçete oluşmadı. Gönderim yapılmadı');
     
Exit;
   
end;
   
// esignerbase64: :esignerbase64 ayiklanmasi
   
if pos(WideString('esignerbase64:'),XML) > 0 then
   
begin
      XML
:= Copy(XML, pos(WideString('esignerbase64:'),XML)+14, pos(WideString(':esignerbase64'),XML)-(pos(WideString('esignerbase64:'),XML)+14));
   
end
   
else
   
begin
      frmRMemo
.Memo1.Lines.Add('Reçete imzalama esnasında hata oluştu'+ XML);
     
Exit;
   
end;
    vImzaliEreceteGirisIstekDVO
:= ImzaliEreceteGirisIstekDVO.Create;
    vImzaliEreceteGirisIstekDVO
.imzaliErecete := XML;
   
....
   
....


İbrahim KAZANCI


21 Aralık 2015 Pazartesi 14:29:40 UTC+2 tarihinde Fatih Göncü - Ark Bilişim Octomed yazdı:

İbrahim KAZANCI

unread,
Dec 21, 2015, 9:22:01 AM12/21/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin

Mor med, illa kendim yapmayacağım diyorsanız size satmak şeklinde değil de, -e-imzayı, programınızı kullanan yerlere ücretle verecekseniz- sizinle ortak paylaşım şeklinde ilerlenebilir diye aklıma geliyor. Benim aklıma gelen bu. Başka şekilde düşünen, sorununuzu çözmek isteyen de olabilir...


21 Aralık 2015 Pazartesi 15:29:48 UTC+2 tarihinde Mor MED yazdı:

Mor Med

unread,
Dec 21, 2015, 9:37:34 AM12/21/15
to sagli...@googlegroups.com
olabilir  İbrahim bey
ben visual basic 6.0 da clilent tarafını yazdım
medula ve sağlık net tarafını
asp net ve c# ile yazdım
işin gerçeği e imza nasıl başlanır nasıl bir yol izlenir bilmiyorum
her türlü çözüm yolu ve yöntemine açığım
e imza sürecinde neler yapmalıyım Kamu sertifikasyon tarafında onu bilmiyorum

bu konuda destek ve yardımlarınızı talep ediyorum


Saygılar

21 Aralık 2015 16:22 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

İbrahim KAZANCI

unread,
Dec 21, 2015, 1:27:04 PM12/21/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Zor bişey değil bence, en azından bu noktadan sonra...

Aşağıdaki komutu çalıştıracaksanız. VB veya C# üzerinden...


CMD /C ""c:\bosluklu yol\esigner.exe" "<ereceteBilgisi>...</ereceteBilgisi>" """

ESigner.exe verilen yolda bulunmalı, alt dizinleri ile birlikte... Mesela ana bilgisayarda olsa herkese kopyalamak gerekmez...

VB6 için şurada örnek kod var. Sanırım işe yarayacaktır...
http://www.freevbcode.com/ShowCode.asp?ID=3957
ESigner'ı çalıştırırken çalışma dizini de aynı yer (ESigner.exe'nin bulunduğu yer) olmalı.

Çalıştırma sonucunda fonksiyonun döndürdüğü string imzalı XML verisini içerecek. Bu XML içinde 'esignerbase64:' ve ':esignerbase64' ifadeleri arasında kalan veri imzalı XML verisi. Bunu Medula'ya göndereceksiniz.

İbrahim KAZANCI
Healthy HBYS

21 Aralık 2015 Pazartesi 16:37:34 UTC+2 tarihinde Mor MED yazdı:

İbrahim KAZANCI

unread,
Dec 21, 2015, 2:13:05 PM12/21/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin

Delphi'den yazanlar için. Eğer sorun yaşayan olursa. Ben GetDosOutput içeriğini şöyle değiştirdim. Eski halinde bazen sorun oluyordu. ESigner'in yeni hali buna uyumlu zaten... Program.cs'de -gelen XML'de varsa- "^" karakterini kaldırıyordum.

Eklenen sadece koyu renkli satır:

function TfrmMain.GetDosOutput(
CommandLine: string; Work: string =
'C:\'): string;

var
  SA: TSecurityAttributes;
  SI: TStartupInfo;
  PI: TProcessInformation;
  StdOutPipeRead, StdOutPipeWrite: THandle;
  WasOK: Boolean;
  Buffer: array[0..255] of AnsiChar;
  BytesRead: Cardinal;
  WorkDir: string;
  Handle: Boolean;
begin
  Result := '';
  CommandLine := stringReplace(stringReplace(CommandLine, '<', '^<', [rfReplaceAll]),'>', '^>', [rfReplaceAll]);
t redirect stdin
      hStdOutput
:= StdOutPipeWrite;

21 Aralık 2015 Pazartesi 20:27:04 UTC+2 tarihinde İbrahim KAZANCI yazdı:

jenarasyon

unread,
Dec 21, 2015, 7:32:24 PM12/21/15
to sagli...@googlegroups.com
mor med ibrahim beyin kodlarıyla çözemezseniz
etuğradan aldığımız ucretli dot.net dll var ben onu vb.net te com setup hazırladım, vb6 cağırıp işlem yapıyorum,
uzaktan bağlanıp size gösterebilirim kullanılış seklini fakat kullanabilmeniz için dll lisansını etuğradan almanız gerekiyor,
biz bu şekilde çözüm bulduk
kolay gelsin



21 Aralık 2015 21:13 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

İBRAHİM ÜZÜL

unread,
Dec 23, 2015, 8:03:15 AM12/23/15
to sagli...@googlegroups.com
Merhabalar,
Biz Tubitak ile onay sürecindeyiz.
Onlar orada test sertifikası ile test ediyorlarmış. Dolayısı ile o test sertifikalarını bizim bu tarafta yükleyip test etmemizi istediler. RootA.crt RootB.crt ve RootC.crt olmak üzere 3 adet sertifika gönderdiler. 
Ben bunları uygulama klasöründe trusted klasörü açıp içine attım. certval-policy.xml dosyasında ise 
<class name="tr.gov.tubitak.uekae.esya.api.certificate.validation.find.certificate.trusted.TrustedCertificateFinderFromFileSystem">
              <param name="dizin" value="\trusted" /> 
            </class>

şeklinde ayar yaptım. Fakat benim tarafımda tekrar sertifika zinciri hatası veriyor. Acaba aynı sertifikanın imza cihazında da olmasımı gerekiyor. Çünkü doktorların sertifikası ile kamusm nin adresinde ki depo üzerinden ben zaten sertifika geçerliliğini kontrol edebiliyorum. Tubitak bu konuda certval-policy.xml dosyasını kendisine göre düzenlemeye de yanaşmıyor.Bunu da benden istiyor ama ben zaten onun istediği yapılandırma ile hastanede kullanamam. 

Bu konuda bilgisi olan var mı acaba ?

22 Aralık 2015 02:32 tarihinde jenarasyon <mmoll...@gmail.com> yazdı:

atilla acar

unread,
Dec 23, 2015, 8:12:29 AM12/23/15
to sagli...@googlegroups.com
Çok uzun zaman oldu testten geçeli, Ben Ankara'da olduğum için Tübitak Ofisine gidip teste orada girmiştim.
Yanlış hatırlamıyorsam cetval-policy dosyasını orda beraber düzenlemiştik.
Ekte gönderiyorum şöyle birşey var ama işinize yarar mı bilmiyorum?

certval-policy.xml
RootCerts.rar

İBRAHİM ÜZÜL

unread,
Dec 23, 2015, 8:53:36 AM12/23/15
to sagli...@googlegroups.com
Atilla bey, çok teşekkür ediyorum ilgilendiğiniz için.
Bu policy'de D sürücüsünde klasör gösterilmiş. Bunu yine deneyecek olan onlar. Olmadı cevap olumsuz döner ise bir de bu ayarları gönderip ona göre test etmelerini isterim.

23 Aralık 2015 15:12 tarihinde atilla acar <atill...@monadyazilim.com> yazdı:

atilla acar

unread,
Dec 23, 2015, 9:03:28 AM12/23/15
to sagli...@googlegroups.com
Önemli değil, biz teste girdiğimizde bu şekilde yapmıştık olmuştu.

arslanya...@gmail.com

unread,
Dec 23, 2015, 7:54:05 PM12/23/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Üstad, etugra dan dll lisansına ne ödediniz sakıncası yoksa öğrenebilirmiyiz ?


22 Aralık 2015 Salı 02:32:24 UTC+2 tarihinde mmollaoglu yazdı:

İBRAHİM ÜZÜL

unread,
Dec 24, 2015, 9:08:32 AM12/24/15
to sagli...@googlegroups.com
Tubitak bizden şöyle bir istekte bulundu.
4-) Kart sökülüp yeniden takıldığında pin sorulmamaktadır. Kart session ı öldüğünde PIN tutulmamalıdır.

Bu isteği yapan var mı ? Yani usb cihazın söküldüğünü anlamam için en basidi ile bir thread çalıştırırım. Ama her defasında cihazdan sertifika yüklemem doğru olmaz gibi geldi bana. Sadece takılı cihaz durumunu veren bir metod var mı ?

24 Aralık 2015 02:54 tarihinde <arslanya...@gmail.com> yazdı:

atilla acar

unread,
Dec 24, 2015, 9:11:11 AM12/24/15
to sagli...@googlegroups.com
Tübitak için yapacağın versiyonunda her seferinde pin sorarak bu sorunu aşamaz mısın?

İBRAHİM ÜZÜL

unread,
Dec 24, 2015, 9:18:27 AM12/24/15
to sagli...@googlegroups.com
Maalesef, 
çünkü başka bir maddede de özellikle belli periyodda pin sorulmamasını istiyorlar. Bunu da ayarladım. Pin girişinden 1 saat sonra, veya 20 kez imzalama yaptıktan sonra pini tekrar soruyorum.

24 Aralık 2015 16:11 tarihinde atilla acar <atill...@monadyazilim.com> yazdı:

İbrahim KAZANCI

unread,
Dec 24, 2015, 2:59:48 PM12/24/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin

İmzala tuşuna basıldıktan sonra aşağıdaki 3 kontrolü yaparsan çözülür diye düşünüyorum:

                int index = 0;
                String[] terminals = SmartOp.getCardTerminals();

                if (terminals == null || terminals.Length == 0)
                {
                    MesajiIsle("Kart takılı kart okuyucu bulunamadı", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                    // throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
                }

                if (terminals.Length != Program.TerminalSayisi && Program.TerminalSayisi != 0)
                {
                    MesajiIsle("Kart seçildikten sonra imzalama aşamasında yeni kart okuyucu takıldı.", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                }
...
...
...
                if (Program.KartOkuyucuYok == 1) return null;
                ECertificate signingCert = smc.getSignatureCertificate(true, false);
                // SertifikaBilgisini ilk giriste kaydedip imzalama asamasindaki sertifika ile karsilastir
                if (Program.SertifikaBilgisi != signingCert.ToString())
                {       // sertifika bilgisi bos mu gelmis (programa giriste alinamamis mi?)
                        if (Program.SertifikaBilgisi == "")
                        {
                            MesajiIsle("Akıllı kartı, imza ekranına girmeden evvel takınız." + Program.HataMesaji, 1);
                            return null;
                        }
                        // ilk okunan sertifika bilgisi imza tusuna basildiktan sonra acilan sessiondaki sertifika bilgisinden farkli
                        MesajiIsle("Akıllı kart, imza ekranına girildikten sonra değiştirilmiş, işlemi kart değiştirmeden yapınız." + Program.HataMesaji, 1);
                        return null;
                }


İbrahim KAZANCI
Healthy HBYS

24 Aralık 2015 Perşembe 16:18:27 UTC+2 tarihinde İBRAHİM ÜZÜL yazdı:

İBRAHİM ÜZÜL

unread,
Dec 24, 2015, 3:50:06 PM12/24/15
to sagli...@googlegroups.com
İbrahim bey, Tubitak bunu kartı çıkarıp taktıktan sonra imzalarken pin sormasını istiyor. Yani kart takılı, pin girişi yapılmış. Tekrar imza atılacak. O sırada kart çıkarıldı. Tekrar takıldı. Bu durumda başta ki terminal bilgileri ile şu an ki bilgiler aynı olacağından sizin yazdığınız kontrol çalışmayacaktır. 
Ama şu var ki SmartOp.getCardTerminals(); kısmı bende var ise, (yarın ilk iş kontrol edeceğim) belki bir thread yardımı ile bunu sürekli kontrol edip değişim durumunda pini cache ten temizleyebilirim. İstenen, tam olarak bu. Yani kart takılı pin girdik 1. imzayı attık. Bu sürede 1 saatlik pin sormayacak şartı başlatıldı. Ama kişi kartı söktü tekrar taktı. Bu farklı kart da olabilir aynı kart da olabilir. Bu durumda kesinlikle pin sorulmasını istiyorlar. Zaten kartın çıkarıldığını veya kart sayısında değişikliği tespit edebilirsem , ondan sonra ki süreci işleyebilirim.

Çok teşekkür ederim gönderdiğiniz kod için.

24 Aralık 2015 21:59 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:

İbrahim KAZANCI

unread,
Dec 24, 2015, 4:55:58 PM12/24/15
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Merhaba İbrahim Bey,

Terminal kısmı ayrı bir kontrol olarak düşünelim. Mesela "bilgisayara ikinci bir kart daha takıldı mı?" 'nın kontrolü. Bunu geçti ise her imzalama işleminden sonra Sertifika bilgisini yeniden değişkene alsanız ve bir dahaki imzalamada karttaki sertifika bilgisi ile karşılaştırsanız diyeceğim. Üçüncü kısımdaki kod. Bana sanki çözer gibi geldi.

Bundan ayrı bir mesele olarak da; bir saat boyunca gönderilecek reçetelerde PIN istemeyecek olması güvenlik açığı değil mi? Bende soru işareti oluştu ama bu şekilde istiyorlarsa yapacak birşey yok...

İbrahim KAZANCI

24 Aralık 2015 Perşembe 22:50:06 UTC+2 tarihinde İBRAHİM ÜZÜL yazdı:

Coskun ÇINAR

unread,
Dec 24, 2015, 5:40:15 PM12/24/15
to sagli...@googlegroups.com
Merhabalar,
2013 Ocak ayında ki eimza toplantısında  E-İmza open close olayları imzalama süreçlerini çok yavaşlatacağından , bir sefer open yaptırıp sonra sürekli hafızada tutabileceğimi söylemişlerdi ( bu güvenlik açığı yaratabilir ama bunu E-Sağlık + Tubitak Yetkilileri önermişti.)
Biz de programımızda 2 şekilde kullanıma açtık.
1.Hekim istemesi durumda şifresini 1 kez kullanıp ilk imzayı atmaya gittiğinde eimzayı sessionu open yaptırtıp programı kapatana kadar veya e-imza kitini çıkarana kadar session open kalmasını sağladık.
2. Program imza atmaya giderken her seferinde e-imza şifresini sorup imzayı attırıp sonra logout işlemini gerçekleştirdik.








24 Aralık 2015 23:55 tarihinde 'İbrahim KAZANCI' via Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin <sagli...@googlegroups.com> yazdı:
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/2hK3PNBzZcc/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.

Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.



--

İBRAHİM ÜZÜL

unread,
Dec 25, 2015, 2:04:31 AM12/25/15
to sagli...@googlegroups.com
İbrahim bey öncelikle süre konusunda şunu belirteyim. 1 saat içinde en fazla 20 imza atabiliyor. 20 imzadan sonra saate bakmaksızın tekrar pin soruyor. Her imzada doktorlara pin sormamız durumunda sıkıntı çıkacaktır diye düşündük. Tubitak da bunu böyle istedi.

3. kısım koduna gelince , buradan anladığım kadarı ile sertifika değişmesi söz konusu. Ama tubitak test ederken aynı cihazı söküp takıyor. Bu durumda sertifika değişmemiş olacak. Cihaz aynı, sertifika aynı , herşey aynı ?

25 Aralık 2015 00:39 tarihinde Coskun ÇINAR <cinar...@gmail.com> yazdı:

jenarasyon

unread,
Dec 25, 2015, 4:08:58 AM12/25/15
to sagli...@googlegroups.com
tubitak bu sekilde inceliyor ama siz hastanede kullandırırken bu sekilde olması gerekmiyor, tubitağa bakarsanız xml dosyasını doktora göstermenizde gerekiyor imzalanmıl halinide göstermeniz gerekiyor,
ben hastanelerimde doktor ekranına girişte bilgileri girdiriyorum

25 Aralık 2015 09:04 tarihinde İBRAHİM ÜZÜL <ibrahi...@gmail.com> yazdı:

filiz

unread,
Jan 4, 2016, 2:42:10 AM1/4/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
ıbrahim bey bu 20 imza olayını tübitakla mı görüştünüz ve onay aldınız mı? Bizde bir çalışma yapmak istiyoruz bu konuda.

25 Aralık 2015 Cuma 09:04:31 UTC+2 tarihinde İBRAHİM ÜZÜL yazdı:
</bl

İBRAHİM ÜZÜL

unread,
Jan 4, 2016, 3:09:01 AM1/4/16
to sagli...@googlegroups.com
Onay alma sürecindeyiz. İlgili maddeyi aynen iletiyorum.

8. İmza oluşturma uygulamasının, karta log in olduktan belirli bir süre sonra veya belirli bir imza adedi sonrasında log out olması gerekmektedir. Uygulamanın bir kez log in olup sınırsız imzalamaya izin vermesi kabul edilmemektedir. 

Ben hem saat sınırı hem de adet sınırı koydum. 

4 Ocak 2016 09:42 tarihinde filiz <fs.d...@gmail.com> yazdı:

filiz

unread,
Jan 4, 2016, 3:42:47 AM1/4/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
anladım. onay alırsanız paylaşırmısınız ? 

4 Ocak 2016 Pazartesi 10:09:01 UTC+2 tarihinde İBRAHİM ÜZÜL yazdı:

--
<div dir=

İBRAHİM ÜZÜL

unread,
Jan 4, 2016, 3:47:51 AM1/4/16
to sagli...@googlegroups.com
Tabii ki.

4 Ocak 2016 10:42 tarihinde filiz <fs.d...@gmail.com> yazdı:

filiz

unread,
Jan 21, 2016, 9:22:03 AM1/21/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
ibrahim bey;

e imzada süreli şifre isteme durumu ile ilgili durum nedir. bir de sizde bununla ilgili bir yazı var mı acaba?
hekimler gerçekten bu konuda sıkıntı yaşamakta biz her seferinde şifre istiyoruz.

İBRAHİM ÜZÜL

unread,
Jan 21, 2016, 9:48:16 AM1/21/16
to sagli...@googlegroups.com
8. İmza oluşturma uygulamasının, karta log in olduktan belirli bir süre sonra veya belirli bir imza adedi sonrasında log out olması gerekmektedir. Uygulamanın bir kez log in olup sınırsız imzalamaya izin vermesi kabul edilmemektedir. 

Bu maddeye istinaden ben 1 saat sınırı ve 20 adet imza sınırı kodum.Şu ana kadar hastaneden bir sorun dönmedi. Zaten her seferinde şifre istetirsek kıyamet kopar. Tubitak da bunu düşünmüş olacak ki böyle bir esneklik sağlamış. Yani orta yolu bu diyebiliriz. Siz de kendinize uygun bir adet ayarlayabilirsiniz. Ya da süre.

21 Ocak 2016 16:22 tarihinde filiz <fs.d...@gmail.com> yazdı:

Ertan KÜÇÜK

unread,
Jan 21, 2016, 10:18:06 AM1/21/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
Arkadaşlar Merhaba

Tübitakın 2016 yılı içinde ve sonrasında üretilen AKİS 2.2.8  sertifikaları ile imza atabilen var mı ? 

Ben bu kartlarla imza atmak istediğimde Config.cantLoad mesajı alıyorum. Bu hata karta login olup imzala işlemi yapma esnasında context oluşturulurken alıyorum. context oluşturma kodum aşağıda yardımcı olabilicek arkadaş var mıdır ?

 Dim context As Context = New Context()
            context.Config = New Config(SystemPath & "xmlsignature-config.xml")
            Dim Signature As New XMLSignature(context) 

bu varyasyonu değişik şekillerde denedim ama bir türlü config dosyasını okutamadım.

atilla acar

unread,
Jan 21, 2016, 10:38:11 AM1/21/16
to sagli...@googlegroups.com
Merhaba,

Sanırım bu hatayı ben de almıştım, ama farklı bir sebebi vardı (networke bağlı bir kaynaktan dll çalıştırmak gibi...)

Benim sürüm 2.1.2 ben aşağıdaki gibi yapıyorum, sorun olmuyor.
assembly içine xmli gömüyorum.

                Context context = new Context();
                context.Config = new Config(this.GetType().Assembly.GetManifestResourceStream("nuclEimza.config.xmlsignature-config.xml"));
                XMLSignature signature = new XMLSignature(context);

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

filiz

unread,
Jan 22, 2016, 2:00:34 AM1/22/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
bu maddelerin olduğu listeyi bana mail atabilirmisiniz peki

21 Ocak 2016 Perşembe 16:48:16 UTC+2 tarihinde İBRAHİM ÜZÜL yazdı:
...

Ayhan Çalışkan

unread,
Jan 22, 2016, 2:44:59 AM1/22/16
to sagli...@googlegroups.com

Filiz Hanım,

Tübitak’tan değerlendirme hazırlıkları için gelen dokümanı ekte ilettim.

 

Ayhan ÇALIŞKAN

HBYS_AHBS_Uyum_Degerlendirme_Hazirliklari.pdf

Ertan KÜÇÜK

unread,
Jan 22, 2016, 4:56:09 AM1/22/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin, atill...@monadyazilim.com
networke bağlı değilde exe çalışırken runtime'da imza atacak dll atanıyor. sizin aşağıda yazdığın şekilde de yaptım ama yine aynı hatayı verdi. Benim projemin framework versiyon 4.5 bu apiler 3.5 ta yazılmış acaba ondan olabilir mi ? Çünkü kendim bir exe yazdım orda çalışıyor ama kendi projemden çalıştıramıyorum.

21 Ocak 2016 Perşembe 17:38:11 UTC+2 tarihinde atilla acar yazdı:
...

cagdask

unread,
Jan 22, 2016, 5:25:02 AM1/22/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin, atill...@monadyazilim.com
aynı şey değil ama benzer bir sıkıntı bende de olmuştu. projeyi debug moda alınca sıkıntı olmuyordu. ama ben release modda derliyorum o zaman dll ler hata veriyordu.
ayrı bir dll yapıp e-imza işlerini o dll e aktardım ve yeni yaptığım dll i programdan çağırdım o şekilde düzelmişti. dll i dll yapmış oldum saçma oldu biraz ama çözüldü sonuçta

22 Ocak 2016 Cuma 11:56:09 UTC+2 tarihinde Ertan KÜÇÜK yazdı:

filiz

unread,
Jan 22, 2016, 6:51:59 AM1/22/16
to Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin
cokk teşekkürler. çok işime yaradı 

22 Ocak 2016 Cuma 09:44:59 UTC+2 tarihinde Ayhan Çalışkan yazdı:
It is loading more messages.
0 new messages