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); } }