public IRaspRequest PrepareRequest(OiosiMessage message, UddiType uddiType) { // First we need to find out what type of object we are sending DocumentTypeConfigSearcher typeSearcher = new DocumentTypeConfigSearcher(); DocumentTypeConfig docTypeConfig = typeSearcher.FindUniqueDocumentType(message.MessageXml); // 1. Lookup the endpoint address and certificate using UDDI UddiLookupResponse uddiResponse = this.Uddi(message, docTypeConfig); // 2. Download the server certificate using LDAP X509Certificate2 serverCert = this.Ldap(uddiResponse.CertificateSubjectSerialNumber); // 3. Check the validity status of the certificate using OCSP this.Revocation(serverCert); // 4. Let the user configure the client certificate Console.WriteLine("\nPlease configure the certificate used for sending\n----------------------------------------------------"); X509Certificate2 clientCert = this.GetCertificate(uddiType); Credentials credentials = new Credentials(new OcesX509Certificate(clientCert), new OcesX509Certificate(serverCert)); // Create request RaspRequest raspRequest = new RaspRequest(new Request(uddiResponse.EndpointAddress.GetAsUri(), credentials)); return(raspRequest); }
public OiosiRaspClient(UddiType uddiType, String xmlDocumentUrl) { this.uddiType = uddiType; this.xmlDocumentUrl = xmlDocumentUrl; }
public X509Certificate2 GetCertificate(UddiType UddiType) { //Console.Write("Serial number: 45 a2 f4 a1"); //string serial = "45 a2 f4 a1"; // Test certificate - Must be importet into windows key store /* * Certificat - Virksomhedscertificat * Issued To Christian Pedersen * Issued by TDC OCES Systemtest CA II * Valid From 26-05-2010 * Valid To 26-05-2012 * Serial number 40 37 86 cc * StoreName My * StoreLocation CurrentUser * * can not be used - is not a funktionscertificat */ /* * Certificat * Issued To Testendpoint (funktionscertifikat) * Issued by TDC OCES Systemtest CA II * Valid From 17-04-2008 * Valid To 17-04-2010 * Serial number 40 36 d8 5e * StoreName My * StoreLocation CurrentUser * * Can not be used - Is a funktionscertificat, but it has expired */ /* * Certificat * Issued To FOCES1 (funktionscertifikat) * Issued by TDC OCES Systemtest CA II * Valid From 16-10-2011 * Valid To 16-10-2009 * Serial number 40 37 60 8e * StoreName My * StoreLocation CurrentUser * * Installed from https://www.certifikat.dk/export/sites/dk.certifikat.oc/da/developer/eksempler/ */ /* * Certificat * Issued To TU GENEREL FOCES gyldig (funktionscertifikat) * Issued by TRUST2408 Systemtest VIII CA * Valid From 26-10-2011 * Valid To 26-10-2015 * Serial number 4c 05 5a 37 * StoreName My * StoreLocation CurrentUser * * Installed from http://view.svn.softwareborsen.dk/cgi-bin/index.cgi/openebusiness/dk.gov.oiosi/common/resources/Certificates/ */ X509Certificate2 clientCert = null; string serial = null; // You can define the default certificate to use here: switch (UddiType) { case UddiType.Production: { serial = "56 df e9 a7"; break; } case UddiType.Test: { //serial = "40 37 fb 49"; serial = "4c 05 5a 37"; break; } default: { throw new NotImplementedException("The uddi type '" + UddiType.ToString() + "' is unknown."); } } StoreName storeName = StoreName.My; StoreLocation storeLocation = StoreLocation.CurrentUser; string storeNameString = string.Empty; int storeNameInt; string storeLocationString = string.Empty; int storeLocationInt; string certificateString = string.Empty; int certificateInt; X509Store certStore; //bool selectAgain = false; bool selectNewStore = false; while (clientCert == null) { Console.Write("Store "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("[" + StoreName.My + "/" + StoreName.Root + "/" + StoreName.AddressBook + "/" + StoreName.CertificateAuthority + "]: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(storeName.ToString()); Console.Write("Store Location "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("[" + StoreLocation.CurrentUser + "/" + StoreLocation.LocalMachine + "]: "); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(storeLocation.ToString()); if (selectNewStore == false) { // try to retrive the certificate Console.WriteLine("Serial number: " + serial); certStore = new X509Store(storeName, storeLocation); certStore.Open(OpenFlags.ReadOnly); X509Certificate2Collection collection = certStore.Certificates.Find(X509FindType.FindBySerialNumber, serial, true); certStore.Close(); clientCert = null; if (collection.Count > 0) { clientCert = collection[0]; } } if (clientCert == null) { // the certificate not found //Console.WriteLine("Certificate not found, type in new serial number: "); //serial = Console.ReadLine(); // store name do { Console.WriteLine(); Console.WriteLine("Select StoreName (type the index/int):"); Console.WriteLine("1 - StoreName.My"); Console.WriteLine("2 - StoreName.Root"); Console.WriteLine("3 - StoreName.AddressBook"); Console.WriteLine("4 - StoreName.CertificateAuthority"); storeNameString = Console.ReadLine(); if (int.TryParse(storeNameString, out storeNameInt)) { switch (storeNameInt) { case 1: { storeName = StoreName.My; break; } case 2: { storeName = StoreName.Root; break; } case 3: { storeName = StoreName.AddressBook; break; } case 4: { storeName = StoreName.CertificateAuthority; break; } default: { Console.WriteLine("Not in range."); storeNameString = string.Empty; break; } } } else { Console.WriteLine("Not a int!!!"); storeNameString = string.Empty; } }while (string.IsNullOrEmpty(storeNameString)); // StoreLocation do { Console.WriteLine(); Console.WriteLine("Select StoreLocation (type the index/int):"); Console.WriteLine("1 - StoreName.CurrentUser"); Console.WriteLine("2 - StoreName.LocalMachine"); storeLocationString = Console.ReadLine(); if (int.TryParse(storeLocationString, out storeLocationInt)) { switch (storeLocationInt) { case 1: { storeLocation = StoreLocation.CurrentUser; break; } case 2: { storeLocation = StoreLocation.LocalMachine; break; } default: { Console.WriteLine("Not in range."); storeLocationString = string.Empty; break; } } } else { Console.WriteLine("Not a int!!!"); storeLocationString = string.Empty; } }while (string.IsNullOrEmpty(storeLocationString)); // StoreLocation do { serial = string.Empty; Console.WriteLine(); Console.WriteLine("Select certificate (type the index/int) (0 for new certificate location):"); Console.WriteLine("Index - Serial number - ExpireDate"); certStore = new X509Store(storeName, storeLocation); certStore.Open(OpenFlags.ReadOnly); X509Certificate2Enumerator x509Certificate2Enumerator = certStore.Certificates.GetEnumerator(); int index = 1; X509Certificate x509Certificate; IDictionary <int, X509Certificate> map = new Dictionary <int, X509Certificate>(); //int subjectMax = 45; while (x509Certificate2Enumerator.MoveNext()) { x509Certificate = x509Certificate2Enumerator.Current; map.Add(index, x509Certificate); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write(" " + index + " - "); //Console.ForegroundColor = ConsoleColor.Gray; Console.Write(x509Certificate.GetSerialNumberString() + " - "); Console.WriteLine(x509Certificate.GetExpirationDateString()); Console.ForegroundColor = ConsoleColor.White; //if (x509Certificate.Subject.Length <= subjectMax) //{ Console.WriteLine(x509Certificate.Subject); /*} * else * { * Console.WriteLine(x509Certificate.Subject.Substring(0, subjectMax)); * }*/ index++; } certStore.Close(); if (index == 1) { Console.WriteLine("No certificate a selected location"); //serial = "No certificate a selected location"; selectNewStore = true; } else { certificateString = Console.ReadLine(); if (int.TryParse(certificateString, out certificateInt)) { if (certificateInt == 0) { //serial = "try Again - certificate not found"; selectNewStore = true; } else if (map.ContainsKey(certificateInt)) { serial = map[certificateInt].GetSerialNumberString(); selectNewStore = false; } else { Console.WriteLine("Index out of range."); } } else { Console.WriteLine("Not a int!!!"); } } }while (!selectNewStore && string.IsNullOrEmpty(serial)); } } Console.WriteLine("Expire: " + clientCert.GetExpirationDateString()); return(clientCert); }
public OiosiRaspClient() { this.uddiType = UddiType.Test; this.xmlDocumentUrl = this.PATH_INVOICE_XML; }