Как использовать OpenSSL dll для приложений UWP - PullRequest
0 голосов
/ 04 января 2019

Я хотел использовать API OpenSSL вместо API из Windows.Security.Cryptogrpahy, из-за некоторой проблемы, как описано в ссылке ниже:

Шифрование AES не работает должным образом в UWP

Я ссылался на множество пакетов nuget, но ни один из них не был установлен для приложения UWP.Например: OpenSSL.Static.Uwp, который не говорит, что

не поддерживает никаких целевых структур

Я также упоминал этот MSFT OpesSSL источник github.

Я скомпилировал в соответствии с инструкциями в " INSTALL.WINUNIVERSAL ", но как использовать dll libeay32.dll в приложении UWP C #?

Я попытался добавить dll какСодержимое, но у меня нет информации об издателе и версии в вышеупомянутом скомпилированном процессе для предоставления в PackageDependency в манифесте.Также я не смог использовать LoadPackagedLibrary в своем приложении C # UWP.

Как получить OpenSSL dll libeay32.dll, интегрированную с C # UWP App.Или сообщите любую библиотеку nuget, которая была успешно установлена.

1 Ответ

0 голосов
/ 24 июня 2019

OpenSSL - это библиотека C, она не будет работать с C # напрямую, поскольку C # является управляемым языком, а C является нативным.Поскольку UWP не допускает DllExport (как я знаю), для этого вам нужно написать библиотеку runtime component с использованием языка C ++ / CX или C ++ / WinRT с простым верхним API, который вы будете вызывать из своего приложения.используя прямые вызовы OpenSSL под капотом.Для легкого начала я предлагаю использовать pimpl идиома.

Теперь вы знаете, как связать свои библиотеки с проектом, давайте поговорим о доступных опциях.Конечно, вы можете собрать его вручную из доступного MS-форка (как вы уже сделали), более высокая версия, которую вы можете получить таким образом, - 1.0.2, 1.1.1 была заброшена некоторое время назад.Другой способ - использовать этот пакет nuget, он соберет соответствующий OpenSSL 1.0.2, посмотрите дополнительную информацию на связанной странице github, он основан на том же репозитории MS.

Как выне вижу опции "готов к работе", чтобы получить последнюю версию OpenSSL 1.1.1, но вы можете создать USS-совместимый OpenSSL из официальной ветки master!Это стало возможным из-за , что запрос на получение, и он был объединен с мастером , недавно , ну, это OpenSSL 3.0.0 , он имеет обратную совместимость с 1.1.1, хотяпока что нет стабильного релиза, так что решать, использовать его или нет, решать только вам.

...