public inbox for gost@lists.cypherpunks.ru
Atom feed
* Запрос функционала. Big-endian функции для проверки подписи по ГОСТ 34.10
@ 2023-08-07  8:54 Искандаров Эдуард
  2023-08-07 13:50 ` Sergey Matveev
  0 siblings, 1 reply; 3+ messages in thread
From: Искандаров Эдуард @ 2023-08-07  8:54 UTC (permalink / raw)
  To: gost

[-- Attachment #1: Type: text/html, Size: 2326 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Запрос функционала. Big-endian функции для проверки подписи по ГОСТ 34.10
  2023-08-07  8:54 Запрос функционала. Big-endian функции для проверки подписи по ГОСТ 34.10 Искандаров Эдуард
@ 2023-08-07 13:50 ` Sergey Matveev
  2023-08-07 15:37   ` Искандаров Эдуард
  0 siblings, 1 reply; 3+ messages in thread
From: Sergey Matveev @ 2023-08-07 13:50 UTC (permalink / raw)
  To: gost

[-- Attachment #1: Type: text/plain, Size: 4236 bytes --]

Приветствую!

*** Искандаров Эдуард [2023-08-07 13:54]:
>Хочется чтобы библиотека GoGOST предлагала функции для big-endian
>систем тоже.

По моему, вы что-то путаете в терминологии. GoGOST должен из коробки
работать и на big-endian системах тоже. math/big.Int (вы пишете
"int.Big", но, видимо, это опечатка) никакого отношения к endianness
систем не имеет: это библиотека для работы с "большими" числами,
варьируемой длины, выходящей за пределы размера машинного слова. Кроме
того, текущая функция проверки подписи PublicKey.VerifyDigest как-раз и
ожидает что и digest, и r и s будут big-endian (сериализованными) числами.

>func NewPublicFromCoords(c *Curve, x *int.Big, y *int.Big)

Это можно сделать так: gost3410.PublicKey{C: c, X: x, Y: y}.

>func (pub *PublicKey) VerifyDigestByParams(digest *int.Big, r *int.Big,
>s *int.Big) (bool, error) {
>
>В тоже время, это упростит клиентский код(в моем случае точно) тем, что
>не придется провоить избыточную сериализацию и десериализацию.

Вариант с передачей big.Int мне не нравится тем, что это всегда будет
означать наличие дополнительного кода у клиента, ведь он должен же будет
из байт получить big.Int. То есть, или мы заставляем клиента
(пользователя библиотека) писать какой-то дополнительный код и добавляем
больше функций в GoGOST. Или же, как это было до сих пор, мы не трогаем
библиотеку и клиента опционально (возможно ему не нужно будет делать
никакого преобразования endiannes/форматов) заставляем писать код для
верчения байт. Ваш вариант позволяет только сэкономить на верчении
нескольких десятков байт, что сущие доли копеек по сравнению с тысячами
куда более тяжёлых инструкций затрачиваемых при создании/проверке подписи.

Когда-то я добавлял PrivateKeyReverseDigest и
PrivateKeyReverseDigestAndSignature обёртки, которые удовлетворяли
интерфейсу crypto.Signer и могли сразу же использоваться для разных
задач. Сегодня выпустил GoGOST 5.13.0 релиз, в котором добавил
gost3410.PublicKeyReverseDigest и
gost3410.PublicKeyReverseDigestAndSignature, упрощающие проверку подписи
если необходимо "перевернуть" или хэш и подпись. Это не покрывает кучу
всех возможных вариаций подписи (
LE digest + LE RS, LE digest + LE SR, LE digest + BE RS, LE digest + BE SR
BE digest + LE RS, BE digest + LE SR, BE digest + BE RS, BE digest + BE SR),
но для задач X.509+TLS 1.3 оказалось достаточно. Если эти функции не
подойдут, то я не вижу проблем перетасовать несколько десятков байт.
http://www.git.cypherpunks.ru/?p=gostls13.git;a=commitdiff;h=99b9696abaa2f8c999c5f438013b9083503c32ce
Также добавил NewPublicKeyLE/BE, NewPrivateKeyLE/BE и RawLE/BE методы у
этих объектов.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: 12AD 3268 9C66 0D42 6967  FD75 CB82 0563 2107 AD8A

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Запрос функционала. Big-endian функции для проверки подписи по ГОСТ 34.10
  2023-08-07 13:50 ` Sergey Matveev
@ 2023-08-07 15:37   ` Искандаров Эдуард
  0 siblings, 0 replies; 3+ messages in thread
From: Искандаров Эдуард @ 2023-08-07 15:37 UTC (permalink / raw)
  To: Sergey Matveev, gost

[-- Attachment #1: Type: text/html, Size: 5074 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-08-07 15:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-07  8:54 Запрос функционала. Big-endian функции для проверки подписи по ГОСТ 34.10 Искандаров Эдуард
2023-08-07 13:50 ` Sergey Matveev
2023-08-07 15:37   ` Искандаров Эдуард