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.
Hesap Numarası
|
|
Ziraat Bankası Gebze Şubesi/ Şube Kodu: 164
IBAN TR310001000164347551965006
|
From : HBYS
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
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;
}