Я использую Bouncy Castle для выполнения соглашения о ключе эллиптической кривой с использованием протокола ECDH в программном обеспечении, связанном со смарт-картами, как определено в BSI-TR-03111 спецификации, §3.4 с
Цель состоит в том, чтобы выполнить общее сопоставление одноразового номера в протоколе PACE, как определено в Технический отчет SAC ИКАО, §3.4.2.1.1
(Я использую Java, но язык не имеет значения, я думаю)
Класс KeyAgreement
делает это очень простым (как показано здесь), но он позволяет только выводить координата X сгенерированного ECPoint
, то есть ZAB (что часто, но не всегда то, что требуется.)
Есть ли способ вернуть фактический ECPoint
(то есть SAB) без повторной реализации алгоритма? Несмотря на то, что формула сама по себе проста, необходимо проверять ошибки и аномалии и учитывать вариации (например, умножение кофакторов).