Преобразование сертификатов X.509 из кодировки DER в кодировку PER - PullRequest
2 голосов
/ 02 апреля 2020

Нам нужно транспортировать сертификат X.509 через QR-код (или любой 2D-штрих-код, на данный момент, хотя даже PDF-417, похоже, не способен хранить достаточно большие объемы данных). На данный момент мы записываем сертификат в виде кодировки PEM (которая представляет собой строковое представление в кодировке base64 сертификата X.509 в формате DER, плюс открывающий и заканчивающий теги) в QR-код. Проблема, с которой мы сталкиваемся, заключается в том, что результирующая строка слишком длинная.

Хотя мы могли бы удалить начальные и конечные теги, это не будет иметь большого значения, поэтому я обратился к Interwebs, чтобы найти способ сжать наш сертификат.

Как выясняется, DER - это только одна из возможных кодировок. Согласно Википедии , есть также PER (с вариантами UPER и APER). Я скачал несколько примеров, и кажется, что мы могли бы сэкономить около 40-45% байтов, при условии, что читатель сертификата знает схему ASN.1 (мы могли бы справиться с этим в нашем случае). Этого будет достаточно для повторного сканирования QR-кода.

Однако я не могу найти способ конвертировать DER в PER. Кто-нибудь знает, как это можно сделать?

Или у кого-нибудь есть идея, как мы можем перенести сертификат X.509 на телефон пользователя, не предлагая его в центральном хранилище?

1 Ответ

3 голосов
/ 04 апреля 2020

Найдите инструмент ASN.1, который поддерживает как DER, так и PER. Используя этот инструмент, напишите небольшую программу, которая декодирует кодированное в DER значение (т. Е. Сертификат) во внутреннее представление, а затем перекодирует его в PER.

Обычно PER Unaligned производит наиболее компактные кодировки, но я советую попробовать как PER Unaligned, так и PER Aligned.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...