Ich habe seit Jahren versucht, zu finden, wie man einen ECC-Schlüssel von einer Datei von JEDEM Mittel seit Jahren importiert. Ich habe versucht, ein ECC-Zertifikat aus dem Windows-Zertifikatspeicher, aus einer .p12-Datei und aus einer PKCS # 8 OpenSSL-Schlüsseldatei ohne Erfolg zuzugreifen.CNG Import ECC Pub/Priv Schlüssel aus Datei
Nur eines der vielen Dinge, die ich versucht habe, ist:
StreamReader fs = new StreamReader("key.pem");
String key = fs.ReadToEnd();
byte[] tempkey = System.Text.Encoding.ASCII.GetBytes(key);
CngKey cngKey = CngKey.Import(tempkey, CngKeyBlobFormat.Pkcs8PrivateBlob);
Aber keine Discriptive Fehlermeldungen gegeben sind, nur dass die letzte Zeile entweder hat invalid parameters
oder im Falle des Codes über An error occurred during encode or decode operation.
Ich verwende die sample program von MSDN für ECDH und altered it, um den GCM-Modus von AES zu verwenden. All dies funktioniert einwandfrei, bis ich versuche, vorgenerierte ECC-Schlüssel anstelle der standardmäßig zur Laufzeit für das Microsoft-Beispiel erstellten Schlüssel zu verwenden. Ich habe zufällig alle CngKeyBlobFormat
s versucht, aber um ehrlich zu sein, kann ich nicht sehr gut debuggen, weil ich nicht weiß, wie diese spezifischen Formate in rohen Daten aussehen.
Mein Schlüssel ist in folgendem Format jedoch bin ich bereit, jedes Format zu verwenden, das funktioniert (P12, Microsoft Store, PKCS # 8, etc.)
key.pem
-----BEGIN EC PARAMETERS-----
##############################
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
##############################
-----END EC PRIVATE KEY-----
Ressourcen
MSDN API and Example: ECDiffieHellmanCng Class
Entschuldigung für die späte Ergänzung, es kann immer noch sehr schwierig sein, CNG zu bekommen, die Schlüssel auf diese Weise zu importieren - wenn es nicht funktioniert, möchten Sie vielleicht das PEM-Format (und die Schlüsselteile innerhalb des PKCS # 8-Formats) dekodieren) dich selber. –