powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с PKCS#7 (EnvelopedCms.Decode)
4 сообщений из 4, страница 1 из 1
Проблема с PKCS#7 (EnvelopedCms.Decode)
    #38254957
keymaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первая часть - отправить на определённый адрес криптопакет (pkcs7).
Это работает.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
X509Certificate2 SignCert = new X509Certificate2(signcertpath, "");
            X509Certificate ClientCert = X509Certificate.CreateFromCertFile(certpath);
            XmlDocument Doc = new XmlDocument();
            Doc.LoadXml(XML);
            UTF8Encoding Encoding = new UTF8Encoding();        
            byte[] msgBytes = Encoding.GetBytes(Doc.InnerXml);            

            ContentInfo contentInfo = new ContentInfo(msgBytes);            
            SignedCms CMS = new SignedCms(contentInfo);
            CmsSigner Signer = new CmsSigner(SignCert);           

            CMS.ComputeSignature(Signer);
            byte[] myCmsMessage = CMS.Encode();

            HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(@"https://....");
            httpWReq.ClientCertificates.Add(ClientCert);
            httpWReq.Method = "POST";
            httpWReq.ContentLength = myCmsMessage.Length;
            httpWReq.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
            httpWReq.ContentType = "application/pkcs7-mime";

            using (Stream stream = httpWReq.GetRequestStream())
            {
               stream.Write(myCmsMessage, 0, myCmsMessage.Length);                
            }
            HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse();
            string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            MessageBox.Show(responseString);

            StreamWriter SW = new StreamWriter(new FileStream(@"d:\req_xynd2.txt", FileMode.Create, FileAccess.Write));
            SW.Write(responseString);
            SW.Close(); 



В ответ от сервера получаю это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
-----BEGIN PKCS7-----
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA
JIAEgZQ8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPHRl
c3RJZGVudGlmaWNhdGlvbkRlcG9zaXRpb25SZXNwb25zZSBzdGF0dXM9IjMiIGVy
cm9yPSI1MCIgcHJvY2Vzc2VkRFQ9IjIwMTMtMDQtMjNUMTQ6MzA6MzQuNTI2KzA0
OjAwIiAvPg0KAAAAAAAAMYICCzCCAgcCAQEwgYQwfDELMAkGA1UEBhMCUlUxDzAN
BgNVBAgTBlJ1c3NpYTEZMBcGA1UEBxMQU2FpbnQtUGV0ZXJzYnVyZzEYMBYGA1UE
ChMPUFMgWWFuZGV4Lk1vbmV5MRAwDgYDVQQLEwdVbmtub3duMRUwEwYDVQQDEwxZ
YW5kZXguTW9uZXkCBE0PXygwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkq
hkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEzMDQyMzEwMzAzNFowIwYJKoZIhvcN
AQkEMRYEFDpKJnQYmA5lAVtG+hRN72HCUJ5uMA0GCSqGSIb3DQEBAQUABIIBACGJ
tthuF7zCSphCmw64g3YKa5yVhe5teJQ+M+zpqtc4GF5vTx6o3q/NqP7rGnM/lYgr
qoTr0IHGgXRiq7/nnNFfOj0jkrqxoPxmy5ZDC5tpjv4S7+cbqFYgVriG68kvzsLa
ochorehjDFQC/IXp5PmQNPq6NO33LFcnzce9E7qi6afZsja4AlaNv/d29fq+ibGI
JHpe8Cx79FpskZ/evmT8XEej57wn0qCgoQu50j+4F+Ze7AI8Fi1i1y/RQTglPbea
SJ0/2bKmACz34opDSx5Q7McytQ/oOO1p6tVdfCeicT7GZw5YrEodMbk4Qr8rWhq5
DpiOBoqmGwScqzth8CwAAAAAAAA=
-----END PKCS7-----

Этот ответ помещается в
Код: c#
1.
string Answer


Далее:
Код: c#
1.
2.
3.
           byte[] EncodedMessage = Encoding.UTF8.GetBytes(Answer);
           EnvelopedCms cms = new EnvelopedCms();
           cms.Decode(EncodedMessage);


Где на последней строке всё спотыкается о "неверное значение тега ASN1".

Кто в курсе, как прочитать эти данные?
...
Рейтинг: 0 / 0
Проблема с PKCS#7 (EnvelopedCms.Decode)
    #38255692
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
keymaster,
В строке Answer вроде как массив байт в формате Base64 с хидером и футером.
...
Рейтинг: 0 / 0
Проблема с PKCS#7 (EnvelopedCms.Decode)
    #38255707
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
keymaster,

... обрежьте заголовок и футер, например, через TrimStart/TrimEnd, а потом Convert.FromBase64String ...
...
Рейтинг: 0 / 0
Проблема с PKCS#7 (EnvelopedCms.Decode)
    #38261923
keymaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что там base64 - я знаю. И читать этот xml могу.

Проблема в другом - надо его расшифровать "правильно", т.е. так как это делается командной строкой из openssl.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с PKCS#7 (EnvelopedCms.Decode)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]