/// <summary> /// Laden der Zertifikate, Erstellen eines XML Objektes der Form rzeAntwort, Signierung und Verschlüsselung des Objektes, /// und Entschlüsselung und Prüfung der Signatur /// </summary> public static void DemoRzeAntwort() { //---------------------------------------------------------------------------------------------------------------------------- //Auf Server Seite: //---------------------------------------------------------------------------------------------------------------------------- // --> Antwort vom fachlichen Service XmlDocument antwortFachlicherService = new XmlDocument(); antwortFachlicherService.LoadXml(testXmlAntwort); //Laden des Server KeyStores: Pkcs12Store serverSitesRzkeyStore = CertHelper.LadePkcsStore(zertpfad + "\\" + rzCertDateiname + ".pfx", rzPasswort); //Laden des Client Zerfifikats: X509Certificate serverSiteClientCertificate = CertHelper.Ladex509Certificate(zertpfad + "\\" + clientCertDateiname + ".der"); rzeAntwort serverAntwort = ServerHelper.ErstelleRzeAntwort("kein Hinweis vorhanden", serverSiteClientCertificate, serverSitesRzkeyStore, rzPasswort, new SecurityKonfiguration(), antwortFachlicherService); //---------------------------------------------------------------------------------------------------------------------------- //Auf Client Seite: //---------------------------------------------------------------------------------------------------------------------------- Pkcs12Store clientSiteClientKeyStore = CertHelper.LadePkcsStore(zertpfad + "\\" + clientCertDateiname + ".pfx", clientPasswort); //Überprüfung ob Signatur in Ordnung ist: bool istEntschluesselungErfolgreich; bool istSignaturValide; bool istSigniertesXmlValide; X509Certificate signatureCertificate; string xmlAsString = ClientHelper.VerifiziereServerAntwort(serverAntwort.rzDatenBox, clientSiteClientKeyStore, clientPasswort, out istEntschluesselungErfolgreich, out istSignaturValide, out istSigniertesXmlValide, out signatureCertificate); }
/// <summary> /// /// </summary> /// <param name="antwortHinweis"></param> /// <param name="clientKeyStore"></param> /// <param name="clientKeyStorePasswort"></param> /// <param name="konfiguration"></param> /// <param name="fachlicheAntwortXml"></param> /// <returns></returns> public static rzeAntwort ErstelleRzeAntwort(string antwortHinweis, X509Certificate clientCertificate, Pkcs12Store rzKeyStore, string rzKeyStorePasswort, SecurityKonfiguration konfiguration, XmlDocument fachlicheAntwortXml = null) { rzeAntwort antwort = new rzeAntwort(); antwort.hinweis = antwortHinweis; if (fachlicheAntwortXml != null) { XmlHelper.SignAndEncryptXml(fachlicheAntwortXml, rzKeyStore, rzKeyStorePasswort, konfiguration, clientCertificate); antwort.rzDatenBox = Standards.DefEncoding.GetBytes(ParseHelper.ConvertXmlDocumentToString(fachlicheAntwortXml)); } return(antwort); }
public static void DemoTestAnfrageNARZTestservice() { using (NARZService.FiverxLinkSecurityService_PortTypeClient client = new NARZService.FiverxLinkSecurityService_PortTypeClient()) { NARZService.einParameterRequestMsg anfrageObjectLadeRzSecurityVersion = new NARZService.einParameterRequestMsg(); rzeLadeRzSecurityVersionAnfrage anfrageLadeRzSecurityVersion = ClientHelper.ErstelleRzeLadeRzSecurityVersionAnfrage("9998", "303706931", "Testapotheke FiveRxSecurity", "ladeRzVersion", "Musterhersteller", "Mustersoftware", "Musterversion"); anfrageObjectLadeRzSecurityVersion.rzeEingabeDaten = ParseHelper.GetStringFromXMLObject <rzeLadeRzSecurityVersionAnfrage>(anfrageLadeRzSecurityVersion); NARZService.genericResponseMsg antwortSecurityVersion = client.ladeRzSecurityVersion(anfrageObjectLadeRzSecurityVersion); NARZService.zweiParameterRequestMsg anfrageObjectVerarbeiteAuftrag = new NARZService.zweiParameterRequestMsg(); //Laden des Client KeyStores: Pkcs12Store clientkeyStore = CertHelper.LadePkcsStore(zertpfad + "\\" + clientCertDateiname + ".pfx", clientPasswort); //Laden des Server Zerfifikats (üblich vom Server geladen per Webservice): X509Certificate caCertifikate = CertHelper.Ladex509Certificate(zertpfad + "\\" + rzCertDateiname + ".der"); //Laden des fachliches Dokuments XmlDocument fachlichesDokumentClient = new XmlDocument(); fachlichesDokumentClient.PreserveWhitespace = true; fachlichesDokumentClient.LoadXml(testXmlAnfrage); //Generierung des Serviceanfrage: rzeAnfrage anfrageVerarbeiteAuftrag = ClientHelper.ErstelleRzeAnfrageObjekt(fachlichesDokumentClient, "1111", "111111111", "testapo", "testmethode", "testhersteller", "testsoftware", "testversion", clientkeyStore, clientPasswort, new SecurityKonfiguration(), caCertifikate); anfrageObjectVerarbeiteAuftrag.rzeEingabeDaten = ParseHelper.GetStringFromXMLObject <rzeAnfrage>(anfrageVerarbeiteAuftrag); anfrageObjectVerarbeiteAuftrag.rzeLadeRzSecurityVersion = "Test"; NARZService.genericResponseMsg antwortVerarbeiteAuftrag = client.verarbeiteAuftrag(anfrageObjectVerarbeiteAuftrag); bool istEntschluesselungErfolgreich; bool istSignaturValide; bool istSigniertesXmlValide; X509Certificate signatureCertificate; rzeAntwort serverAntwort = ParseHelper.GetObjectFromXML <rzeAntwort>(antwortVerarbeiteAuftrag.rzeAusgabeDaten); string xmlAsString = ClientHelper.VerifiziereServerAntwort(serverAntwort.rzDatenBox, clientkeyStore, clientPasswort, out istEntschluesselungErfolgreich, out istSignaturValide, out istSigniertesXmlValide, out signatureCertificate); } }
public static void DemoServiceAnfrageVerarbeiteAuftrag() { //Laden des Client KeyStores: Pkcs12Store clientkeyStore = CertHelper.LadePkcsStore(zertpfad + "\\" + clientCertDateiname + ".pfx", clientPasswort); rzeLadeRzZertifikatAntwort serviceZertifikatAntwort; //Laden des RzZertifikates: using (FiverxLinkSecurityLib.FiveRxSecurityService.FiveRxLinkSecurityServiceSoapClient client = SecurityServiceComHelper.GetFiveRxServiceSecurityClient(fiveRxServiceAdresse, clientkeyStore, clientPasswort)) { FiverxLinkSecurityLib.FiveRxSecurityService.genericResponseMsg responseladeZertifikat = client.ladeRzZertifikat(new FiverxLinkSecurityLib.FiveRxSecurityService.einParameterRequestMsg()); serviceZertifikatAntwort = ParseHelper.GetObjectFromXML <rzeLadeRzZertifikatAntwort>(responseladeZertifikat.rzeAusgabeDaten); } X509Certificate caCertifikate = CertHelper.ConvertByteArrayToX509Certificate(serviceZertifikatAntwort.rzZertifikat); //Laden des fachliches Dokuments XmlDocument fachlichesDokumentClient = new XmlDocument(); fachlichesDokumentClient.LoadXml(ParseHelper.ReadTextFromFile(pfadAnfrageladeRzVersion)); //Generierung des Serviceanfrage: rzeAnfrage anfrage = ClientHelper.ErstelleRzeAnfrageObjekt(fachlichesDokumentClient, "9998", "303706931", "Testapotheke FiveRxSecurity", "ladeRzVersion", "Musterhersteller", "Mustersoftware", "Musterversion", clientkeyStore, clientPasswort, new SecurityKonfiguration(), caCertifikate); FiverxLinkSecurityLib.FiveRxSecurityService.genericResponseMsg response; using (FiverxLinkSecurityLib.FiveRxSecurityService.FiveRxLinkSecurityServiceSoapClient client = SecurityServiceComHelper.GetFiveRxServiceSecurityClient(fiveRxServiceAdresse, clientkeyStore, clientPasswort)) { FiverxLinkSecurityLib.FiveRxSecurityService.zweiParameterRequestMsg request = new FiverxLinkSecurityLib.FiveRxSecurityService.zweiParameterRequestMsg(); request.rzeEingabeDaten = ParseHelper.GetStringFromXMLObject <rzeAnfrage>(anfrage); request.rzeLadeRzSecurityVersion = "Test"; response = client.verarbeiteAuftrag(request); client.Close(); } //Überprüfung ob Signatur in Ordnung ist: bool istEntschluesselungErfolgreich; bool istSignaturValide; bool istSigniertesXmlValide; X509Certificate signatureCertificate; rzeAntwort serverAntwort = ParseHelper.GetObjectFromXML <rzeAntwort>(response.rzeAusgabeDaten); string xmlAsString = ClientHelper.VerifiziereServerAntwort(serverAntwort.rzDatenBox, clientkeyStore, clientPasswort, out istEntschluesselungErfolgreich, out istSignaturValide, out istSigniertesXmlValide, out signatureCertificate); }