Нам нужно транспортировать сертификат 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 на телефон пользователя, не предлагая его в центральном хранилище?