Ho cercato di trovare come importare una chiave ECC da un file di QUALSIASI MEZZO per età. Ho provato ad accedere a un certificato ECC dall'archivio certificati di Windows, da un file .p12 e da un file chiave OpenSSL PKCS # 8 senza successo.CNG Import ECC Pub/Priv Keyfrom file
solo una delle tante cose che ho provato è:
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);
Ma nessun messaggio di errore discriptive sono dati, solo che l'ultima riga o ha invalid parameters
o, nel caso del codice di cui sopra An error occurred during encode or decode operation.
Sto usando il sample program da MSDN per ECDH e altered it per utilizzare la modalità GCM di AES. Tutto ciò funziona fino a quando non cerco di utilizzare chiavi ECC pre-generate invece di quelle create di default in fase di esecuzione per l'esempio Microsoft. Ho provato a caso tutti gli CngKeyBlobFormat
s ma, a dire il vero, non riesco a eseguire il debugging molto bene perché non so quali siano questi formati specifici nei dati grezzi.
La mia chiave è nel seguente formato però io sono disposto a utilizzare qualsiasi formato che funziona (.p12, Microsoft Store, PKCS # 8, ecc)
key.pem
-----BEGIN EC PARAMETERS-----
##############################
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
##############################
-----END EC PRIVATE KEY-----
Risorse
MSDN API and Example: ECDiffieHellmanCng Class
Ci scusiamo per l'aggiunta in ritardo, potrebbe essere molto difficile ottenere CNG per importare le chiavi in questo modo - se non funziona potresti decodificare il formato PEM (e le parti chiave all'interno del formato PKCS # 8) te stesso. –