У меня есть задача, требующая вывода ключевого материала с помощью функции деривации ключа, описанной в NIST SP 800-56A, раздел 5.8.1. Я не специалист в области криптографии, поэтому, пожалуйста, извините меня, если вопрос наивен. Вот что я сделал до сих пор:
- У меня есть другой открытый ключ и мой закрытый ключ
-
Теперь я пытаюсь сгенерировать общий секрет, используя ECDH 1.3.132.1.12, используя класс С# (.NET 4) ECDiffieHellmanCng, например:
// The GetCngKey method reads the private key from a certificate in my Personal certificate store CngKey cngPrivateKey = GetCngKey(); ECDiffieHellmanCng ecDiffieHellmanCng = new ECDiffieHellmanCng(cngPrivateKey); ecDiffieHellmanCng.HashAlgorithm = CngAlgorithm.ECDiffieHellmanP256; ecDiffieHellmanCng.KeyDerivationFunction = ?? // What do I set here
Наконец сделаем следующее:
ecDiffieHellmanCng.DeriveKeyMaterial(otherPartyPublicKey:);
Где/как установить другие параметры: Алгоритм ID, Информация о партии U, Информация о Party V?
ИЗМЕНИТЬ Я открыт для использования других библиотек, таких как Bouncy Castle (если они могут быть вызваны из .NET)