AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2018, 14:47   #1  
jonny.do is offline
jonny.do
Участник
 
7 / 11 (1) +
Регистрация: 14.02.2018
? CryptoPro.Sharpei.Gost3410 и приватный ключ сертификата
Для расшифровки ответа в формате XML нам необходимо использовать приватный ключ, которым успешно зашифровали и отправили на сервер запрос. На C# эта реализация довольна простая и у нас получается расшифровать ответ:
Получаем закрытый ключ из сертификата и ложим его в AsymmetricAlgorithm, затем приводим AsymmetricAlgorithm к виду CryptoPro.Sharpei.Gost3410 и расшифровываем. Но наша ERP-система не умеет явно приводить к таким типам...



На C# есть такой код и он работает:

Код:
private static SymmetricAlgorithm GetDecryptionKey(EncryptedXml exml, EncryptedData encryptedData)
        {
            IEnumerator encryptedKeyEnumerator = encryptedData.KeyInfo.GetEnumerator();
            // Проходим по всем KeyInfo
            while (encryptedKeyEnumerator.MoveNext())
            {
                // пропускам все что неизвестно.
                KeyInfoEncryptedKey current = encryptedKeyEnumerator.Current as KeyInfoEncryptedKey;
                if (current == null) continue;
                // до первого EncryptedKey
                EncryptedKey encryptedKey = current.EncryptedKey;
                if (encryptedKey == null)
                    continue;
                KeyInfo keyinfo = encryptedKey.KeyInfo;
                // Проходим по всем KeyInfo зашифрования ключа.
                IEnumerator srcKeyEnumerator = keyinfo.GetEnumerator();
                while (srcKeyEnumerator.MoveNext())
                {
                    // пропускам все что неизвестно.
                    KeyInfoX509Data keyInfoCert = srcKeyEnumerator.Current
                        as KeyInfoX509Data;
                    
                    if (keyInfoCert == null)
                        continue;
                    AsymmetricAlgorithm alg = SignatureIns().PrivateKey; // Приватный ключ, открытый ключ которого мы отправляли при шифровании запроса
                    //MessageBox.Show(alg.ToXmlString(true));
                    Gost3410 myKey = alg as Gost3410;
                    //MessageBox.Show(myKey.KeyExchangeAlgorithm);
                    if (myKey == null)
                        continue;
                    return CPEncryptedXml.DecryptKeyClass(encryptedKey.CipherData.CipherValue, myKey, encryptedData.EncryptionMethod.KeyAlgorithm);
                }
            }
            return null;
        }
Собственно вопрос, каким образом еще можно привести наш закрытый ключ к виду GOST3410
.NET 3.5, Axapta, X++, Крипто Про 4
Старый 02.11.2018, 18:37   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Так как приведения в DAX нет, то часто используется приведение через System.Object или CLRObject.
Сначала переменной вышеуказанного типа присваивается базовый тип, а потом наследнику присваивается эта переменная. Например:
X++:
System.Net.HttpWebRequest       webRequest;
System.Object                   sysObj;
.....
sysObj  = System.Net.WebRequest::Create(url);
webRequest  = sysObj;
Теги
ax2009, xml, криптопро, фсс, элн

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ключ доступа Евгений88 DAX: Администрирование 4 19.02.2013 10:47
Скажите сколько примерно стоит ключ InterCompany Def DAX: Прочие вопросы 2 10.08.2010 14:17
ключ TradeInterCompany Nikolaich DAX: Администрирование 3 07.07.2010 20:18
Как проверить включен ли конфигурационный ключ? Red Stranger DAX: Программирование 2 12.05.2005 15:32
Проблема: конфигурационный ключ виден из кода как выключенный. Anais DAX: Администрирование 2 08.02.2005 15:24
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:27.