Я создаю сетевое приложение, которое использует BouncyCastle в качестве поставщика криптографии. Допустим, у вас есть это для создания пары ключей:
ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("prime192v1");
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC");
g.initialize(ecSpec, new SecureRandom());
KeyPair pair = g.generateKeyPair();
Я не понимаю, почему вы получаете экземпляр ECDSA KeyPairGenerator. Почему не написано просто EC? Я знаю, что есть тип ECDH Key, который поставляется с BouncyCastle, но я подумал, что они представляют собой одно и то же, что касается точек на кривой - или я полностью ошибаюсь в теории, лежащей в основе этого?
Причина, по которой я спрашиваю, заключается в том, что прямо сейчас мое приложение использует ECDH для установки секретного ключа AES, но теперь я хочу использовать тот же ключ EC для подписи каждого сообщения с помощью ECDSA.