Как мне сериализовать и десериализовать открытый ключ для ECDiffieHellmanOpenSsl в Linux? - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь перенести настройку обмена ключами на ядро ​​dotnet (превью 3.0) с поддержкой Linux. Для поддержки Linux кажется, что мне нужно использовать класс ECDiffieHellmanOpenSsl, доступный в System.Security.Cryptography.OpenSsl в Nuget. Я не могу понять, как сериализовать и десериализовать открытый ключ для связи между сервером и клиентом.

Используя эквивалентный класс CNG (ECDiffieHellmanCng), вы просто позвоните

ecdh.PublicKey.ToByteArray()

для сериализации ключа в байтовый массив, а затем, после того как ключ был отправлен другой стороне, эта сторона импортирует его, используя

EncKeyBlob = ecdh.DeriveKeyMaterial(CngKey.Import(otherpublickey, CngKeyBlobFormat.EccPublicBlob));

Однако, вызов ecdh.PublicKey.ToByteArray() для ECDiffieHellmanOpenSsl выдает Unhandled Exception: System.PlatformNotSupportedException: Operation is not supported on this platform. в Ubuntu 18.04.

Кроме того, я не вижу CngKey.Import() эквивалента для OpenSSL-версии класса.

Что мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...