bcrypto / bpki

A public key infrastructure profile
8 stars 0 forks source link

Транспорт: binary vs base64 #44

Closed agievich closed 6 years ago

agievich commented 6 years ago

В процессах запросы и ответы сначала представляются бинарным der-кодом, а затем дополнительно кодируются по правилам base64.

Нужно ли нам дополнительное кодирование base64? Считаю, что нет, раз уж сделана ставка на "исконно" бинарный АСН.1.

Для справки. Запросы и ответы СШВ, OCSP представляются в HTTP-пакетах без base64. Транспорт CMC также бинарный.

mihasK commented 6 years ago

хорошо, можно убрать base64

agievich commented 6 years ago

Кодировка Base64 убрана. Контейнеры АСН.1 кодируются по правилам DER, DER-код передается в двоичном виде.

Отмечу, что при выбранном заголовке application/cms (см. RFC 7193) binary-тело используется по умолчанию.

Заодно обсудим заголовок. В RFC 7193 сказано:

The Content-Type header field of all application/cms objects SHOULD include the optional "encapsulatingContent" and "innerContent" parameters.

В принципе, через эти параметры можно описать семантику содержимого запросов / ответов. Считаю, что делать это нецелесообразно по двум причинам:

  1. Семантика и так будет описана в контейнерах АСН.1 (см. #21).
  2. Если семантика описывается и в заголовке HTTP, и в контейнере, то нужно вводить дополнительные проверки соответствия описателей. Это не совсем удобно, потому что заголовок HTTP может обрабатывать один агент (транспортный), а содержимое -- другой.