I’m trying to port my key exchange setup to dotnet core (preview 3.0) with Linux support. For Linux support it seems I need to be using the
ECDiffieHellmanOpenSsl class available in
System.Security.Cryptography.OpenSsl on Nuget. I can’t figure out how to serialize and deserialize the public key to communicate between the server and client.
Using the equivalent CNG class (ECDiffieHellmanCng) you would simply call
to serialize the key into a byte array, then once the key has been sent to the other party, that party would import it using
EncKeyBlob = ecdh.DeriveKeyMaterial(CngKey.Import(otherpublickey, CngKeyBlobFormat.EccPublicBlob));
ecdh.PublicKey.ToByteArray() on ECDiffieHellmanOpenSsl throws
Unhandled Exception: System.PlatformNotSupportedException: Operation is not supported on this platform. on Ubuntu 18.04.
Additionally, I cannot see any
CngKey.Import() equivalent for the OpenSSL version of the class.
What am I missing here?