コード例 #1
0
ファイル: Form1.cs プロジェクト: dmitriyzyuzin/CryptoPro
        private void button2_Click(object sender, EventArgs e)
        {
            string plain_text = richTextBox1.Text;

            byte[] plain_text_bytes = Encoding.ASCII.GetBytes(plain_text);

            Gost3411CryptoServiceProvider hash = new Gost3411CryptoServiceProvider();

            byte[] signature = csp.SignData(plain_text_bytes, hash);

            BERelement main_seq = new BERelement(0x30);
            BERelement sign_seq = new BERelement(0x30);

            //sign_seq.AddItem(new BERelement(0x0c, Encoding.UTF8.GetBytes("sign")));
            sign_seq.AddItem(new BERelement(0x02, signature));
            sign_seq.AddItem(new BERelement(0x02, plain_text_bytes));

            main_seq.AddItem(sign_seq);
            byte[] test = main_seq.GetEncodedPacket().ToArray();

            File.WriteAllBytes("asn2", test);

            /*
             * BERelement mSeq = BERelement.DecodePacket(test);
             * BERelement sSeq = null;
             * sSeq = mSeq.Items[0];
             * var signed2 = sSeq.Items[0].Value;
             * MessageBox.Show(signed2.Length.ToString());
             * var msg = sSeq.Items[1].Value;
             */

            //send data
            try
            {
                Int32         port   = 9595;
                TcpClient     client = new TcpClient("127.0.0.1", port);
                NetworkStream stream = client.GetStream();

                stream.Write(mode, 1, 1);
                // stream.Write(signature, 0, signature.Length);
                //stream.Write(plain_text_bytes, 0, plain_text_bytes.Length);
                stream.Write(test, 0, test.Length);
                stream.Close();
                client.Close();
            }
            catch (ArgumentNullException exception)
            {
                MessageBox.Show("ArgumentNullException: " + exception);
            }
            catch (SocketException exception)
            {
                MessageBox.Show("SocketException: " + exception);
            }
        }