From e66aa937f5944de5ed36325186bdd5c462b38398 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 23 Sep 2017 23:23:12 +0300 Subject: [PATCH] =?utf8?q?=D0=92=D1=81=D1=91=20=D0=BF=D0=BB=D0=BE=D1=85?= =?utf8?q?=D0=BE=20=D1=81=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82=D0=B2?= =?utf8?q?=D1=83=D1=8E=D1=89=D0=B8=D0=BC=D0=B8=20ASN.1=20=D0=B1=D0=B8?= =?utf8?q?=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D0=B0=D0=BC=D0=B8=20?= =?utf8?q?=D0=B8=20=D0=BA=D0=BD=D0=B8=D0=B3=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://github.com/andrivet/python-asn1 Эта библиотека является форком другой. Существует давно. Время от времени в неё что-то коммитится. Но... она некорректно (невалидно) кодирует отрицательные целые числа. Если её забросили, то почему всё-равно коммиты продолжают делать? Или не знают о баге? http://luca.ntop.org/Teaching/Appunti/asn1.html Эта документация по ASN.1 на которую ссылается сама Go реализация encoding/asn1. Как минимум, в ней говорится что формат UTCTime может быть разнообразным и в DER оно вот тоже в куче разных видов. Это ошибка, обман (в DER возможна запись только в UTC). Официальную спецификацию ASN.1 DER тоже читать... мягко говоря непонятно. Или нужно соответствующее образование программерское, но я ни черта не понял как надо кодировать отрицательные целые числа. Самое понятное, ясное и простое по действиям я нашёл просто в реализации Go encoding/asn1. Go это всё-таки неимоверно крутой язык -- его код читается на раз два. А Python это просто помойка всяких говн (люто ненавижу)! pyasn1 библиотека которую мы используем: под Py27 в ней просто не работает BitString пустой. Были баги с отсутствием сортировки. Ещё какие-то по мелочам. Но нельзя её так просто было взять и чтобы всё работало! Всё в Python мире меня достало по этой теме и поэтому я решил взять и написать own ASN.1 library with slots and offsets. Об этом уже упоминал аж месяцы назад в a8fcb1a8b48f5ff1c74551cdcd4a06c57eb93470, но так и не находилось время на его реализацию до конца (а ведь это надо сделать вне рабочее время, чтобы компания, не имея прав, не смогла бы его сделать не свободным). -- 2.48.1