Как получить Qx и Qy формы в кодировке DER EC_POINT

Я создал мозговой пул на нитро-ключе hsm и хочу использовать его для криптографических операций с.NET Framework, например System.Security.Cryptography.ECDiffieHellman,

Я добыл с pkcs11-tool --list-objects открытый ключ, но получить только одно значение, EC_POINT.

Итак, как мне получить координаты этой точки?

DER кодированный EC_POINT

Public Key Object; EC  EC_POINT 320 bits
  EC_POINT:   0451040defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
  EC_PARAMS:  06092b2403030208010109
  label:      Brainpool #1
  ID:         10
  Usage:      verify

Декодированный EC_POINT

Этот EC_POINT кодируется DER, я использовал его для извлечения истинного значения EC_POINT.

040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598

(Или этот JS-скрипт https://lapo.it/asn1js/#0451040DEFED7988B095679E5ACA422382D949C2E7FD937646DEF25CF7EB5140D41F12D077AC615773952DA53EFAD266C8642C68EFAF5F5F5F5F5D5B5155B5305B5335B5305B1

1 ответ

Решение
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598

Является ли ваш открытый ключ. Первый байт указывает, что это несжатый ключ (04), что означает, что из оставшихся байтов первая половина является координатой X, а вторая половина - координатой Y.

Qx = 0defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952d

Qy = a53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598

http://www.secg.org/sec1-v2.pdf, раздел 2.3.4 (Преобразование октет-цепочка в эллиптическую точку-кривая).

(А так как параметры (06092b2403030208010109) является DER-oid 1.3.36.3.3.2.8.1.1.9 (brainpoolP320r1) все выглядит правильно, так как Qx/Qy являются 320-битными значениями)

Другие вопросы по тегам