Я пытался найти, как импортировать ключ ECC из файла ЛЮБЫМИ СРЕДСТВАМИ целую вечность. Я безуспешно пытался получить доступ к сертификату ECC из хранилища сертификатов Windows, из файла .p12 и из файла ключа OpenSSL PKCS#8.
Только одна из многих вещей, которые я пробовал, это:
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);
Но никаких описательных сообщений об ошибках не дается, только то, что последняя строка имеет либо invalid parameters
, либо, в случае кода выше, An error occurred during encode or decode operation.
Я использую пример программы из MSDN для ECDH и изменили его для использования режима GCM AES. Все это работает нормально, пока я не попытаюсь использовать предварительно сгенерированные ключи ECC вместо тех, которые создаются по умолчанию во время выполнения для примера Microsoft. Я случайным образом пробовал все CngKeyBlobFormat
, но, честно говоря, я не могу хорошо его отладить, потому что я не знаю, как эти конкретные форматы выглядят в необработанных данных.
Мой ключ имеет следующий формат, однако я готов использовать любой формат, который будет работать (.p12, Microsoft Store, PKCS # 8 и т. д.).
key.pem
-----BEGIN EC PARAMETERS-----
##############################
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
##############################
-----END EC PRIVATE KEY-----
Ресурсы