Adsense

28 Şubat 2013 Perşembe

E-Reçeteye E-İmza Entegrasyonu

Merhaba,

E-Reçeteye E-İmza geliştirmesi ile ilgili denetim aşamasına geldik.
Bu aşamaya gelena kadar Kamu Sertifika Merkezi sağolsun desteğini esirgemedi.
İlgilenenler için faydalı olur düşüncesi ve bilgilendirme amacı ile arada geçen yazışmaları aşağıda paylaşıyorum.
Saygılarımla,


From : HBYS
E-Reçete'yi E-imza ile imzalayabilmek için bir test imzasın nasıl elde edebiliriz?

To:  HBYS
Sayın İlgili,

Talebiniz xxxx numarası ile alınmıştır.

Test sertifikası için ücret 10+KDV(%18) TL
Mini (USB) kart okuyucu fiyatımız 15+KDV (%18) TL

Ücreti aşağıdaki hesap numarasına yatırdıktan sonra ekteki formu doldurmanızı ve ücret dekontu ile birlikte göndermenizi talep ederiz.
(http://www.kamusm.gov.tr/ adresinden başvuru kısmından faydalanarak forma  ulaşabilirsiniz)
Hesap Numarası

Ziraat Bankası Gebze Şubesi/ Şube Kodu: 164
IBAN TR310001000164347551965006
Fax:262 648 18 00


From :  HBYS

http://yazilim.kamusm.gov.tr adresindeki aşağıdaki paketi kullanarak entegrasyonu tamamladık. Sonraki adım ne olacak?


To :  HBYS

Merhaba,

Kamu Sertifikasyon Merkezi'ne (Kamu SM) Nitelikli Elektronik Sertifika (NES) talebinde bulunan kamu kurumlarının elektronik imza ve/veya mobil imza uygulamalarını hazırlayan yazılım firmalarının, e-imza mevzuatında geçen uluslararası teknik standartlara uygunluğunun Kamu SM tarafından değerlendirmeye alınması zorunludur.

e-imza uyum değerlendirme hizmeti ile ilgili aradığınız her türlü bilgiyi aşağıdaki sayfalarımızda bulabilirsiniz.
http://www.kamusm.gov.tr/hizmetler/e-imza_uyum_denetimi/
http://www.kamusm.gov.tr/hizmetler/e-imza_uyum_denetimi/fiyatlandirma.jsp
http://www.kamusm.gov.tr/hizmetler/danismanlik_ve_egitim/
http://www.kamusm.gov.tr/urunler/yazilim/
http://yazilim.kamusm.gov.tr

İmza atmadan önce yapılması gerekenler,
1. Sertifika doğrulama yapılması gerekmektedir.
2. İmza atıldıktan sonra oluşan XSIG uzantılı dosyayı kaydederek bundle'dan inen kodda bulunan validate signature metoduna bu dosyanın yolunu vererek imza sonucunu kontrol edebilirsiniz.
3. Biz testlerimizde Sağlık Bakanlığı kapsamında imza atma testleri yapacağız. Bu sebeple test yaparken imzaları kaydedip doğrulamanıza gerek kalmayacaktır.

Sağlık Bakanlığı e-reçete uygulamasında kullanılacak yazılımların değerlendirme süreçleri de şu şekilde revize edilmiştir:


E-imza uygulamalarının değerlendirmesinde uygulamanın e-imza oluşturulan bölümlerinde aşağıdaki maddeler incelenmektedir:


1.  Uygulamada oluşturulan elektronik imza formatlarının ETSI dokümanlarında belirtilen formatlara uygunluğu
2.  E-imza oluşturma uygulamasında aşağıdaki testler yapılmaktadır: 

    • İmzalanan Kullanıcı Belgesi ile İlgili Testlerü
    • İmzaya Dahil İmza Özellikleri ile İlgili Testler
    • Doğrulanabilir İmzanın Oluşturulması ile İlgili Testler
    • Güvenli Elektronik İmza Oluşturma Aracı İletişimi ile İlgili Testler
    • Kullanıcı Arayüzü ile İlgili Testler
    • Güvenli Elektronik İmza Oluşturma Yazılımı Dış Bağlantıları ile İlgili Testler
    • Kullanılan Algoritmaların Geçerliliği ile İlgili Testler

Yani, imza doğrulama süreçleri değerlendirme dışı olacak, oluşturma süreçleri değerlendirilecektir. Kullanılacak imza türü ise BES'tir.

Bu doğrultuda, uyum değerlendirme hizmeti fiyatı 1200TL+KDV(%18) olarak belirlenmiştir. Ayrıca şehir dışı firmalar için yol masrafları gibi bazı masraflar da ekstra talep edilmektedir.

e-İmza uyum değerlendirmesinden geçmek isteyen kurumların, bu isteklerini bildiren ıslak imzalı ve kaşeli bir üst yazıyla birlikte aşağıdaki bilgileri 0262 648 18 00 numarasına fax çekmeleri ve (Kamu Sertifikasyon Merkezi TÜBİTAK Yerleşkesi P.K. 74, Gebze 41470 Kocaeli) adresimize posta yoluyla göndermeleri yeterlidir.

Kurum Adı:
Adres:
Vergi Numarası:
Vergi Dairesi:
Tel No:
Fax No:
Yetkili Bilgileri;
Ad:
Soyad:
TC Kimlik:
Cep No:
Eposta:

Bilgilerinize,

From :  HBYS

ESYA-XADES-API-1.4.8-NET api ile imzalama yaparken reçeteyi XMLDocument’e çevirip diske kaydettikten sonra;
XMLSignature signature = new XMLSignature();
signature.addDocument(recetePath , null , true);  ///recetePath:reçetenin xmldocument’e çevrildikten sonra diskte kaydedildiği yol.
      signature.addKeyInfo(signingCert);
      signature.sign(signer);
addDocument metoduyla reçeteyi yüklüyoruz. Bu konuda sıkıntımız yok.
XMLDocument halini direk XMLSignature’a yükleme şansımız yok mu? Diske boşuna okuma yazma yapmak istemiyoruz.


To :  HBYS

Merhaba,
Son yayınlanan Xml imza .net 1.4.8 sürümünde bahsettiğiniz işlemin yapılması mümkündür. Aşağıdaki kodlara benzer şekilde imzalanmak istenen veri byte[] olarak verilip  imza değeri  de yine byte[] olarak alınabilir..
Xades .Net 1.4.8 sürüm linki
https://yazilim.kamusm.gov.tr/?q=tr/system/files/private/ESYA-XADES-API-1.4.8-NET.zip
 
FileStream fs = new FileStream(eReceteSourceFilePath, FileMode.Open, FileAccess.Read);
byte[] fileData = StreamUtil.ReadToEnd(fs);
fs.Close();

şeklinde alınan ya da başka şekilde edinilen dosya içeriği aşağıdaki örnekte gözüktüğü şekilde kullanılıp imzalanacak veri ve imza dosyaya yazılmadan alınabilir.

İyi çalışmalar,

public string eReceteImzalaByte(byte[] fileData)
{
LisansHelper.loadFreeLicense();
try
{
string currentDirectory = Directory.GetCurrentDirectory();
Context context = new Context(currentDirectory);
XMLSignature signature = new XMLSignature(context);
signature.SigningTime = DateTime.Now;

InMemoryDocument inMMDoc = new InMemoryDocument(fileData,"",null,null);
signature.addDocument(inMMDoc);
SmartCardManager smartCardManager = SmartCardManager.getInstance();
ECertificate signingCert = smartCardManager.getSignatureCertificate(true, false);
//İlk parameter Kart Pin
BaseSigner baseSigner = smartCardManager.getSigner("511661", signingCert);

bool validCertificate = isValidCertificate(signingCert);
if (!validCertificate)
{
    MessageBox.Show("İmza atılmak istenen sertifika geçerli değil.");
   return null;
}
// add certificate to show who signed the document
signature.addKeyInfo(signingCert);
//BaseSigner smartCardSigner = keyOrSmartCardSignManager.getSigner(signingCert);
signature.sign(baseSigner);
MemoryStream ms = new MemoryStream();
signature.write(ms);
byte[] signatureData = StreamUtil.ReadToEnd(ms);
string base64SignatureValue = Convert.ToBase64String(signatureData)
;
return base64SignatureValue;
}
catch (XMLSignatureException exc)
{
// cant create signature
MessageBox.Show("Hata Oluştu." + exc.Message);
}
catch (Exception exc)
{
// probably couldn't write to the file
MessageBox.Show("Hata Oluştu." + exc.Message);
}
return null;
}