]> Sergey Matveev's repositories - stargrave-blog.git/commit
Зарелизил PyDERASN 7.7/7.8
authorSergey Matveev <stargrave@stargrave.org>
Tue, 14 Apr 2020 08:03:50 +0000 (11:03 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 14 Apr 2020 08:03:50 +0000 (11:03 +0300)
commitda6f77caf60218017f75abdba0a62d0f52d05e71
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parentf2303dcbd93b873e5cc80c7c1324058bfda7c938
Зарелизил PyDERASN 7.7/7.8

https://lists.cypherpunks.ru/pipermail/pyderasn-devel/2020-April/000044.html
https://lists.cypherpunks.ru/pipermail/pyderasn-devel/2020-April/000047.html
Прежде тэги не проверялись при декодировании на чёткое следование
требованиям BER/CER/DER (они общие для тэгов). Например там могли идти
байты с нулевым значением -- при декодировании номер тэга будет такой
же, но у него несколько разных представлений возможно. Кроме того, любой
тэг в короткой форме можно всегда представить и в длинной, что тоже
запрещено.

Почему я раньше не проверял? Наверное были мысли о том, что, раз всё
равно наверняка декодирование будет идти по схеме, где в виде байтов
задаётся требуемый тэг, то вопросы его корректности -- это вопрос
корректности схемы, который PyDERASN-а не касается. Но функи типа
tag_strip, len_decode используются далеко не только во внутренностях и
работе с высокоуровневыми объектами, поэтому было бы хорошо чтобы они
блюли стандарты и проверки. Благо что BER/CER/DER требования тут общие.

Плюс добавил явный запрет на использование aware datetime-ов, ибо по
сути работа идёт только с naive временами, и aware datetime-ов может
смутить разработчика неожиданным поведением.