Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
        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());
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }