Download Latest Version ESignerServer - 2.1.2.7z (2.6 MB)
Email in envelope

Get an email when there's a new version of ESigner

Home / eImzaOS
Name Modified Size InfoDownloads / Week
Parent folder
readme.txt 2016-11-06 8.3 kB
ESignerServer - 2.1.2.7z 2016-02-01 2.6 MB
ESigner - 2.1.2.7z 2016-01-05 4.4 MB
beni_oku.txt 2015-12-18 2.3 kB
Gereklilikler.txt 2014-06-24 1.1 kB
Totals: 5 Items   7.0 MB 2
İbrahim KAZANCI
Healthy HBYS
www.hbys.web.tr
https://plus.google.com/u/1/+ibrahimKazanci_1

************************************************************************
Son Versiyon / Last Version
ESigner - 2.1.2 Desktop.7z:  xades 2.1.2 dll'leri ile hazırlanmış kaynak dosyalar (ve bin klasörü altında .exe)
ESigner - 2.1.2 Desktop.7z:  sources with xades 2.1.2 dlls


************************************************************************
Eski Versiyonlar / Old Versions
eimzaOS-2.0.2.zip: 			xades 2.0.2 dll'leri ile hazırlanmış exe
EImzaOS-Project-Complete-2.0.2.7z: 	xades 2.0.2 dll'leri ile hazırlanmış kaynak dosyası

eimza.zip:				xades 1.4.15 dll'leri ile hazırlanmış exe
EImzaOS-Project-Complete.7z: 		xades 1.4.15 dll'leri ile hazırlanmış kaynak dosyası
************************************************************************


Dll'lerin hedef bilgisayarlarda register edilmesi vs. gerekmiyor. Kendi bilgisayarimdan 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.

Tabii Akis veya kart hangi kuruma ait ise sürücüsünün yazılımının zaten yüklü olması gerekli. Önce imzager ile akıllı karta ve içindeki sertifikaya ulaşabildiğinizi deneyin. Sonra program çalışacaktır.
İmza işlemini gerçekleştirebilmek için elinizdeki karta ait sertifikayı ESigner.exe'nin bulundugu klasörün altındaki trusted klasörüne import etmeniz gerekli.

Programın çalışması için gerekli dosyalar altta gereklilikler kısmında verildi.

Programın Çalışma şekli şöyle:

ESigner.exe dört parametre alır. 1: İmzalanacak XML string. XML dosyadan okunacaksa ilk parametreyi boş ( "" ) geçin. 2. parametre kaynak dosya yolu. Eğer iki parametre de gönderilmişse ilki (string xml) dikkate alınır. 3: kart tipi, "SAFESIGN", "AKIS" gibi. 4: PIN kodu.

İmzalama gerçekleşince program imzalanmış veriyi string olarak döndürüp kapanır.

Komut satırı:
cmd /C ""ESigner.exe" "<ereceteBilgisi>...</ereceteBilgisi>" "kaynak xml yolu" "AKIS" "1234""

ESigner.exe gets four parameters. First is the source XML data. If you want to use an XML file as the source then send the first parameter empty "" and send the path of the XML file as the second parameter. Third is CardType like "AKIS". Fourth is PIN code.

Returns signed XML as string.
Usage:
cmd /C ""ESigner.exe" "XML string" "Path of XML file (Optional)" "AKIS" "1234""


Aşağıda delphi üzerinden çalıştırma ve dönen veriyi alma örneği var:


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

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

    if FromFile = 0 then
    begin
      // hazirlanan XML textini gonder ve imzalanmis olarak geri al (send XML as string parameter and get signed XML as string)
      SignedXML := frmMain.GetDosOutput('""'+ESignerPath+'ESigner.exe" "'+XML+'" "" "'+KartTipi+'" "'+PinKodu+'""', ESignerPath, '');
    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);
      // SignedXML := frmMain.GetDosOutput('""'+frmMain.LocalPath+'ESigner.exe" '+'"'+XML+'" """', frmMain.LocalPath);
    end;

    if SignedXML = '' then
    begin
      frmRMemo.Memo1.Lines.Add('İmzalanmış reçete oluşmadı. Gönderim Yapılmadı');
      Exit;
    end;
    // imzalanirken eklenen esignerbase64: :esignerbase64 ayiklanmasi
    if pos(WideString('esignerbase64:'),SignedXML) > 0 then
    begin
      SignedXML := Copy(SignedXML, pos(WideString('esignerbase64:'),SignedXML)+14, pos(WideString(':esignerbase64'),SignedXML)-(pos(WideString('esignerbase64:'),SignedXML)+14));
    end
    else
    begin
      frmRMemo.Memo1.Lines.Add('Reçete imzalama esnasında hata oluştu'+ SignedXML);
      Exit;
    end;

    vImzaliEreceteGirisIstekDVO := ImzaliEreceteGirisIstekDVO.Create;
    vImzaliEreceteGirisIstekDVO.imzaliErecete := SignedXML;
  ...
  ...

// GetDosOutput fonksiyonu
function TfrmMain.GetDosOutput(CommandLine: string; Work: string = 'C:\'; Shell: string = ''): 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;
  iWaitRes: Integer;
  Wait: DWord;
begin
  Result := '';
//  Exit;
  Wait := 60000;  // ConnTimeOut;
  CommandLine := stringReplace(stringReplace(CommandLine, '<', '^<', [rfReplaceAll]),'>', '^>', [rfReplaceAll]);
  Memo1.Lines.Add(CommandLine);
  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;
    if shell = '' then Shell := 'cmd.exe /C ';
//    Handle := CreateProcess(nil, PChar('cmd.exe /C ' + CommandLine),
//                            nil, nil, True, 0, nil,
//                            PChar(WorkDir), SI, PI);
    Handle := CreateProcess(nil, PChar(Shell + CommandLine),
                            nil, nil, True, 0, nil,
                            PChar(WorkDir), SI, PI);
    CloseHandle(StdOutPipeWrite);
    if Handle then
    begin
      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);
        // wait unitl there is no more data to receive, or the timeout is reached
        iWaitRes := WaitForSingleObject(PI.hProcess, Wait);
        // timeout reached ?
        if (iWaitRes = WAIT_TIMEOUT) then
        begin
          Handle := False;
          TerminateProcess(PI.hProcess, UINT(ERROR_CANCELLED));
        end;
      finally
        CloseHandle(PI.hThread);
        CloseHandle(PI.hProcess);
      end;
    end
    else
    begin
      Result := 'Komut çalıştırılamadı';
    end;
  finally
    CloseHandle(StdOutPipeRead);
  end;
end;


Kullanmak isteyen olursa denesin... 

Visual C# 2010 Express ile hazırlanmıştır.

İbrahim KAZANCI
Healthy HBYS
www.hbys.web.tr
https://plus.google.com/u/1/+ibrahimKazanci_1

Gereklilikler:

ESigner.exe'nin bulunduğu dizinde
  xmlsignature-config.xml
  ESigner.exe.config
  ESigner.vshost.exe.config
  certval-policy.xml
  asn1rt.dll
  log4net.dll
  ma3api-asn.dll
  ma3api-certstore.dll
  ma3api-certvalidation.dll
  ma3api-cmssignature.dll
  ma3api-common.dll
  ma3api-crypto-bouncyprovider.dll
  ma3api-crypto.dll
  ma3api-iaik_wrapper.dll
  ma3api-infra.dll
  ma3api-managedPkcs11.dll
  ma3api-mssclient-aveaprovider.dll
  ma3api-mssclient-turkcellprovider.dll
  ma3api-mssclient.dll
  ma3api-pkcs11net.dll
  ma3api-signature.dll
  ma3api-smartcard.dll
  ma3api-xmlsignature.dll
  nunit.framework.dll
  System.Data.SQLite.dll
dosyaları olmalıdır.(exe ile aynı klasörde)

Ayrıca exe'nin bulunduğu klasörün altında 4 klasör olmalıdır. Bunlar;
  trusted klasörü: akıllı karta ait .cer uzantılı sertifika import edilip kaydedilmelidir.
  lisans klasörü: Full_lisans.xml adıyla lisans dosyası kayıtlı olmalıdır (path bilgisi lisanshelper.cs içinde yer alıyor. Dosya kamusm'den geliyor)
  en-US klasörü: (dll dosyaları)
  tr-TR klasörü: (dll dosyaları)


Source: readme.txt, updated 2016-11-06