/// <summary> /// Send FinTS message /// </summary> /// <param name="Url"></param> /// <param name="Message"></param> /// <returns></returns> public static string Send(string Url, string Message) { Log.Write("Connect to FinTS Server"); Log.Write("Url: " + Url); // Warning: // This writes plain message incl. PIN, UserID and TAN human readable into a textfile! if (Trace.Enabled) { Trace.Write(Message); } try { var req = WebRequest.Create(Url) as HttpWebRequest; byte[] data = Encoding.ASCII.GetBytes(Helper.EncodeTo64(Message)); req.Method = "POST"; req.Timeout = 10000; req.ContentType = "application/octet-stream"; req.ContentLength = data.Length; req.KeepAlive = false; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Flush(); } string FinTSMessage = string.Empty; using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { using (Stream resStream = res.GetResponseStream()) { using (StreamReader streamReader = new StreamReader(resStream, Encoding.UTF8)) { FinTSMessage = Helper.DecodeFrom64EncodingDefault(streamReader.ReadToEnd()); } } } // Warning: // This writes plain message incl. PIN, UserID and TAN human readable into a textfile! if (Trace.Enabled) { Trace.Write(FinTSMessage); } return(FinTSMessage); } catch (Exception ex) { throw new InvalidOperationException("Fehler beim Versenden der HBCI-Nachricht.", ex); } }
/// <summary> /// Send FinTS message async /// </summary> /// <param name="Url"></param> /// <param name="Message"></param> /// <returns></returns> private static async Task <string> SendAsync(FinTsClient client, string Message) { try { string FinTSMessage = string.Empty; ServicePointManager.SecurityProtocol = client.ConnectionDetails.SecurityProtocol; var req = WebRequest.Create(client.ConnectionDetails.Url) as HttpWebRequest; byte[] data = Encoding.ASCII.GetBytes(Helper.EncodeTo64(Message)); req.Method = "POST"; req.Timeout = 10000; req.ContentType = "application/octet-stream"; req.ContentLength = data.Length; req.KeepAlive = false; using (var reqStream = await req.GetRequestStreamAsync()) { await reqStream.WriteAsync(data, 0, data.Length); await reqStream.FlushAsync(); } using (var res = (HttpWebResponse)await req.GetResponseAsync()) { using (var resStream = res.GetResponseStream()) { using (var streamReader = new StreamReader(resStream, Encoding.UTF8)) { FinTSMessage = Helper.DecodeFrom64EncodingDefault(streamReader.ReadToEnd()); } } } // Warning: // This writes plain message incl. PIN, UserID and TAN human readable into a textfile! if (Trace.Enabled) { if (Trace.MaskCredentials) { Trace.Write(FinTSMessage, client.ConnectionDetails.UserId, client.ConnectionDetails.Pin); } else { Trace.Write(FinTSMessage); } } return(FinTSMessage); } catch (Exception ex) { throw new InvalidOperationException("Fehler beim Versenden der HBCI-Nachricht.", ex); } }
/// <summary> /// Send FinTS message /// </summary> /// <param name="Url"></param> /// <param name="Message"></param> /// <returns></returns> public static string Send(string Url, string Message) { Log.Write("Connect to FinTS Server"); Log.Write("Url: " + Url); Trace.Write(Message); try { var req = WebRequest.Create(Url) as HttpWebRequest; byte[] data = Encoding.ASCII.GetBytes(Helper.EncodeTo64(Message)); req.Method = "POST"; req.Timeout = 10000; req.ContentType = "application/octet-stream"; req.ContentLength = data.Length; req.KeepAlive = false; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Flush(); } string FinTSMessage = string.Empty; using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { using (Stream resStream = res.GetResponseStream()) { using (StreamReader streamReader = new StreamReader(resStream, Encoding.UTF8)) { FinTSMessage = Helper.DecodeFrom64EncodingDefault(streamReader.ReadToEnd()); } } } Trace.Write(FinTSMessage); return(FinTSMessage); } catch (Exception ex) { Log.Write(ex.ToString()); return(string.Empty); } }
public static void Update(string FilePath, string Password) { Log.Write("Open RDH-10 key file for update"); Log.Write(FilePath); try { string[] lines = File.ReadAllLines(FilePath); int i = 1; foreach (var line in lines) { switch (i) { case 1: if (String.IsNullOrEmpty(RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE)) { RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE = Helper.DecodeFrom64EncodingDefault( Helper.Parse_String(RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password), "<Modulus>", "</Modulus>")); } break; case 2: if (String.IsNullOrEmpty(RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE_XML)) { RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE_XML = RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password); } break; case 3: if (String.IsNullOrEmpty(RDH_KEYSTORE.KEY_SIGNING_PRIVATE)) { RDH_KEYSTORE.KEY_SIGNING_PRIVATE = Helper.DecodeFrom64EncodingDefault( Helper.Parse_String(RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password), "<Modulus>", "</Modulus>")); } break; case 4: if (String.IsNullOrEmpty(RDH_KEYSTORE.KEY_SIGNING_PRIVATE_XML)) { RDH_KEYSTORE.KEY_SIGNING_PRIVATE_XML = RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password); } break; case 5: if (String.IsNullOrEmpty(RDH_KEYSTORE.BLZ)) { RDH_KEYSTORE.BLZ = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); } break; case 6: if (String.IsNullOrEmpty(RDH_KEYSTORE.UserID)) { RDH_KEYSTORE.UserID = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); } break; case 7: if (String.IsNullOrEmpty(RDH_KEYSTORE.Country)) { RDH_KEYSTORE.Country = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); } break; case 8: if (String.IsNullOrEmpty(RDH_KEYSTORE.ProfileVersion)) { RDH_KEYSTORE.ProfileVersion = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); } break; case 9: if (String.IsNullOrEmpty(RDH_KEYSTORE.KEY_ENCRYPTION_PUBLIC_BANK)) { RDH_KEYSTORE.KEY_ENCRYPTION_PUBLIC_BANK = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); } break; case 10: if (String.IsNullOrEmpty(RDH_KEYSTORE.KEY_SIGNING_PUBLIC_BANK)) { RDH_KEYSTORE.KEY_SIGNING_PUBLIC_BANK = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); } break; } i++; } var encpublic = RDHXPassport.Encrypt_RSA_PBEWithMD5AndDES(RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE, Password); var encprivate = RDHXPassport.Encrypt_RSA_PBEWithMD5AndDES(RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE_XML, Password); var sigpublic = RDHXPassport.Encrypt_RSA_PBEWithMD5AndDES(RDH_KEYSTORE.KEY_SIGNING_PRIVATE, Password); var sigprivate = RDHXPassport.Encrypt_RSA_PBEWithMD5AndDES(RDH_KEYSTORE.KEY_SIGNING_PRIVATE_XML, Password); var blz = RDHXPassport.Encrypt_PBEWithMD5AndDES(RDH_KEYSTORE.BLZ, Password); var userid = RDHXPassport.Encrypt_PBEWithMD5AndDES(RDH_KEYSTORE.UserID, Password); var country = RDHXPassport.Encrypt_PBEWithMD5AndDES(RDH_KEYSTORE.Country, Password); var profileversion = RDHXPassport.Encrypt_PBEWithMD5AndDES(RDH_KEYSTORE.ProfileVersion, Password); var encpubbank = RDHXPassport.Encrypt_PBEWithMD5AndDES(RDH_KEYSTORE.KEY_ENCRYPTION_PUBLIC_BANK, Password); var sigpubbank = RDHXPassport.Encrypt_PBEWithMD5AndDES(RDH_KEYSTORE.KEY_SIGNING_PUBLIC_BANK, Password); // Clear content FileStream fileStream = File.Open(FilePath, FileMode.Open); fileStream.SetLength(0); fileStream.Close(); File.AppendAllText(FilePath, encpublic); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, encprivate); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, sigpublic); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, sigprivate); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, blz); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, userid); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, country); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, profileversion); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, encpubbank); File.AppendAllText(FilePath, Environment.NewLine); File.AppendAllText(FilePath, sigpubbank); Log.Write("Updating RDH-10 key file done"); } catch (Exception ex) { Log.Write(ex.ToString()); } }
public static bool OpenFromFile(string FilePath, string Password) { Log.Write("Open RDH-10 key file"); Log.Write(FilePath); try { string[] lines = File.ReadAllLines(FilePath); int i = 1; foreach (var line in lines) { switch (i) { case 1: RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE = Helper.DecodeFrom64EncodingDefault( Helper.Parse_String(RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password), "<Modulus>", "</Modulus>")); break; case 2: RDH_KEYSTORE.KEY_ENCRYPTION_PRIVATE_XML = RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password); break; case 3: RDH_KEYSTORE.KEY_SIGNING_PRIVATE = Helper.DecodeFrom64EncodingDefault( Helper.Parse_String(RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password), "<Modulus>", "</Modulus>")); break; case 4: RDH_KEYSTORE.KEY_SIGNING_PRIVATE_XML = RDHXPassport.Decrypt_RSA_PBEWithMD5AndDES(line, Password); break; case 5: RDH_KEYSTORE.BLZ = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); break; case 6: RDH_KEYSTORE.UserID = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); break; case 7: RDH_KEYSTORE.Country = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); break; case 8: RDH_KEYSTORE.ProfileVersion = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); break; case 9: RDH_KEYSTORE.KEY_ENCRYPTION_PUBLIC_BANK = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); break; case 10: RDH_KEYSTORE.KEY_SIGNING_PUBLIC_BANK = RDHXPassport.Decrypt_PBEWithMD5AndDES(line, Password); break; } i++; } Log.Write("Reading RDH-10 key file done"); return(true); } catch (Exception ex) { Log.Write(ex.ToString()); return(false); } }