private void OpenPemFile()
        {
            Stream stream = openFileDialog.OpenFile();

            byte[] data = new byte[stream.Length];
            stream.Read(data, 0, data.Length);
            currentFileName = openFileDialog.FileName;
            currentFileSize = stream.Length;
            stream.Close();
            string dataStr = Asn1Util.BytesToString(data);

            if (Asn1Util.IsPemFormated(dataStr))
            {
                currentFormat = DataFormat.PEM;
                pemHeader     = Asn1Util.GetPemHeader(dataStr);
            }
            else if (Asn1Util.IsHexStr(dataStr))
            {
                currentFormat = DataFormat.HEX;
            }
            else
            {
                currentFormat = DataFormat.BASE64;
            }
            richTextBox.Text = dataStr;
            SetButtons();
            currentFileName = openFileDialog.FileName;
            ShowFileName();
        }
        public byte[] ChangeDataFormat(DataFormat dataFormat)
        {
            byte[] data = null;
            dataStr = richTextBox.Text;
            string msg = "";

            try
            {
                switch (currentFormat)
                {
                case DataFormat.BASE64:
                    msg  = "BASE64";
                    data = Convert.FromBase64String(dataStr);
                    break;

                case DataFormat.HEX:
                    msg  = "Hex";
                    data = Asn1Util.HexStrToBytes(dataStr);
                    break;

                case DataFormat.PEM:
                    msg       = "PEM";
                    data      = Asn1Util.PemToBytes(dataStr);
                    pemHeader = Asn1Util.GetPemHeader(dataStr);
                    break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Invalid " + msg + " data: " + ex.Message);
                return(data);
            }
            switch (dataFormat)
            {
            case DataFormat.BASE64:
                dataStr = Convert.ToBase64String(data);
                dataStr = Asn1Util.FormatString(dataStr, base64LineLen, 0);
                break;

            case DataFormat.HEX:
                dataStr = Asn1Util.ToHexString(data);
                dataStr = Asn1Util.FormatString(dataStr, hexLineLen, 2);
                break;

            case DataFormat.PEM:
                dataStr = Asn1Util.BytesToPem(data, pemHeader);
                break;
            }
            currentFormat    = dataFormat;
            richTextBox.Text = dataStr;
            SetButtons();
            richTextBox.Focus();
            return(data);
        }