C # — импорт SSL DLL в проект

У меня есть проект, который я импортировал из старой системы.
Этот код стал наиболее проблематичным

PacketGroup = new ArrayList();
Crypto = new GameCrypto(ASCIIEncoding.ASCII.GetBytes(STRING_CRYPTO));
KeyExchance = new OpenSSL.Crypto.DH();
KeyExchance.G = RANDOM_INT;
KeyExchance.P = OpenSSL.Core.BigNumber.FromHexString("KEY__KEY_KEY\0");
KeyExchance.GenerateKeys();
NewServerIV = GenerateIV();
NewClientIV = GenerateIV();

Сначала я получил ошибку:

System.TypeInitializationException: инициализатор типа для ‘OpenSSL.Native’ th
перемотать исключение —> System.Exception: неверная версия libeay32.dll, ожидайте
0.9.8a Разработка, получил: 1.0.0 Release

Я импортировал в проект последнюю библиотеку SSL и получил эту ошибку (в строке Crypto = new GameCrypto ())

System.DllNotFoundException: невозможно загрузить DLL ‘libeay32.dll’: приложение не удалось запустить
потому что его параллельная конфигурация неверна. Пожалуйста, смотрите журнал событий приложения или используйте
инструмент командной строки sxstrace.exe для более подробной информации. (Исключение из HRESULT: 0x800736B1)

в PROJECT_NAME.Native.BF_set_key (IntPtr _key, Int32 len, Byte [] data)
в PROJECT_NAME.Main.Blowfish.SetKey (данные байта []) в PATH \ Main \ Blowfish.cs: строка 85
в PROJECT_NAME.Main.GameCrypto..ctor (ключ Byte []) в PATH \ Main \ Blowfish.cs: строка 15
в PROJECT_NAME.Main.GameClient..ctor (Boolean Robot) в PATH \ Main \ GameClient.cs: строка 48

Я смог решить эту проблему, и я застрял на этой проблеме (на линии нового OpenSSL.Crypto.DH ())

System.TypeInitializationException: инициализатор типа для ‘OpenSSL.Core.Native’ вызвал исключение.
—> System.DllNotFoundException: невозможно загрузить DLL ‘ssleay32’: операционная система не может быть запущена.
(Исключение из HRESULT: 0x800700B6)

в OpenSSL.Core.Native.SSL_library_init ()
в OpenSSL.Core.Native..cctor ()
— Конец внутренней трассировки стека исключений —
в OpenSSL.Core.Native.DH_new ()
в OpenSSL.Crypto.DH..ctor ()
в PROJECT_NAME.Main.GameClient..ctor (Boolean Robot) в PATH \ Main \ GameClient.cs: строка 49
System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.
в PROJECT_NAME.Main.GameWorker.ConnectionHandler (StateObj S) в PATH \ Main \ GameWorker.cs: строка 33

0

Решение

Вам нужна копия libeay32.dll, libssl32.dll а также ssleay32.dll в каталоге вашего приложения

  1. Добавьте неуправляемую dll как файл или связанный файл в ваш проект. (щелкните правой кнопкой мыши проект -> добавить -> существующий файл, затем либо Добавить, либо Добавить как ссылку).

  2. Выберите файл в обозревателе решений. В окне свойств установите действие сборки, чтобы копировать всегда.

Не забывайте, что неуправляемая DLL сама по себе может потребовать других неуправляемых DLL. Если вы забудете добавить их, вы можете получить
точно такая же ошибка. Вы можете использовать ходунки зависимостей, чтобы помочь вам, если вы
не уверен, каковы зависимости.

1

Другие решения


По вопросам рекламы [email protected]