Importar certificado basado en ECC desde el almacén de certificados de Windows a CngKey

¿Cómo puedo obtener las claves públicas / privadas de un ECC?X509Certificate2está enCngKeyes para usar conECDsaCng yECDiffieHellmanCng?

Actualmente estoy usando pares de claves RSA de 2048 bits para firmar / cifrar cosas. Estoy haciendo esto sacando los certificados delX509Store donde se almacenan de forma segura con claves privadas marcadas como no exportables. Me gustaría convertir la implementación actual para usar ECDSA y ECDH para poder usar tamaños de clave más pequeños para una seguridad equivalente.

He generado certificados ECC con éxito usando openssl:

openssl ecparam -out private.pem -name prime256v1 -genkeyopenssl req -new -key private.pem -x509 -nodes -days 365 -out public.ceropenssl pkcs12 -export -in public.cer -inkey private.pem -out export.pfx

He instalado con éxito los certificados generados anteriormente en la tienda de certificados. Puedo recuperarlos por huella digital, pero los proveedores de cifrado para las claves públicas y privadas arrojan excepciones de "Algoritmo no admitido". En cambio, entiendo que se supone que debo usarECDsaCng yECDiffieHellmanCng para firmar / encriptar. Pero estos tratan enCngKey's.

Bouncy Castle no es una opción porque requiere que las claves privadas sean exportables.

Seguridad CLR me devolverá unCngKey emparejar víaGetCngPrivateKey pero no se puede usar con ECDsa porque la clave devuelta por CLRSecurity es una clave ECDH. Además, CLR Security no me da una forma de obtener solo la clave pública de unX509Certificate2 para verificación de firma (donde ni siquiera tengo o necesito la clave privada del firmante).

¿Algunas ideas? Estoy al final de mi ingenio ... Cualquier ayuda seríamucho apreciado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta