Есть некоторый сервер, который перекидывает сертификат от одной системы к другой и появилась необходимость уменьшить объём передаваемых данных, отсюда пришла идея, что сертификат, который предоставлен уже в виде буквенно-цифровых символов, которые нормально передаются через json не кодировать в base64 и оставить подобное кодирование только для сертификатов в двоичной форме.
Проблема в том, что не понимаю, как можно узнать находится ли сертификат в PEM/DER кодировке (и соответственно, не нужно дополнительно кодировать в base64) или является CER сертификатов (и соответственно, нужно кодировать в base64 для передачи)
Оказалось, что используя штатный X509Certificate2 можно только различить ситуацию валидный сертификат и невалидный сертификат:
try
{
var x509Certificate2 = new X509Certificate2();
x509Certificate2.Import(data);
А вытащить информацию о том, что за тип у сертификата нельзя.
Как-то всё-таки это сделать правильно? Городить какие-то костыли проверяя регулярками что строка содержит только буквенно-цифровые символы кажется неправильной.
Я бы открыл файл и зачитал несколько первых байтов.
Если файл начинается с -----BEGIN
, то это PEM формат.
Если файл начинается с MII
, то это base64-encoded DER
Если файл начинается с байтов 0x30 0x82, то это бинарная DER кодировка ASN.1 объекта типа SEQUENCE, а все сертификаты, по стандарту, именно SEQUENCE. 0x82 означает, что размер структуры данных выражается двухбайтовым целым. Если стоит 0x83, то размер превышает 64 кб, что в принципе возможно для какого-нибудь CRL, но маловероятно для отдельного сертификата.
Может быть теоретически случай, когда второй байт 0x81. Это означает, что длина умещается в 1 байт, то есть размер объекта меньше 256 байтов. Я подозреваю, что это возможно, если взять ключи и подписи минимальных размеров и с минимумом символов в CN, но по нынешним временам такой сертификат надо заворачивать с порога)
В противном случае я не знаю, что это может быть.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
подскажите, как заставить персонажа двигаться вместе с платформой, на которой он стоит? пробовал припарентить - ничего не меняется, платформа...
Есть проблема с маппингом поля типа byte[8]Если значение поля источника равно null, то автомаппинг присваивает полю приемника значение 0x00000000
Хочу понять MVP паттерн на практике, но, кажется, не все понимаю правильно, поэтому простой вопрос: на форме есть кнопка и лейбл, так же есть...
Долго бился над этим вопросом, штудируя литературу и неистово насилуя гугл, но так и не нашел решения, может кто здесь подскажет