Этим летом удалось осуществить давнюю хотелку - побывать в Греции. Поездка получилась неоднозначной. В принципе, было ожидаемо, что там не будет торчать из под каждого куста той самой греческой мифологии, которую мы читали в учебниках истории, но почему-то её регулярно недоставало. При этом остров Крит оказался полон совсем другого очарования, уюта маленьких городков и таверн.
Но сначала о первом впечатлении. Греция встретила нас красивейшей посадкой на заходе солнца в маленьком аэропорту города Ираклиона, который расположен прямо на берегу моря. Через примерно полтора-два часа пути на автобусе, объехав множество отелей и когда уже капитально стемнело, мы таки добрались до своего.
Такие, казалось бы, схожие и одновременно разные понятия, которые часто путают. Чтоб не путаться самому, решил записать.
Идентификация (от латинского identifico — отождествлять): присвоение субъектам и объектам идентификатора и / или сравнение идентификатора с перечнем присвоенных идентификаторов. Например, представление человека по имени отчеству - это идентификация.
Аутентификация (от греческого: αυθεντικός ; реальный или подлинный): подтверждение подлинности чего-либо или кого либо. Например, предъявление паспорта - это подтверждение подлинности заявленного имени отчества.
Авторизация является функцией определения прав доступа к ресурсам и управления этим доступом. Авторизация — это не то же самое что идентификация и аутентификация: идентификация — это называние лицом себя системе; аутентификация — это установление соответствия лица названному им идентификатору; а авторизация — предоставление этому лицу возможностей в соответствие с положенными ему правами или проверка наличия прав при попытке выполнить какое-либо действие. Например, авторизацией являются лицензии на осуществление определенной деятельности.
Получая данные из unix консоли, в результате exec()
и других вызовов, не латинские символы обычно экранируются с помощью \x##, где ## - это шестнадцатеричный код символа, но совсем не UTF8.
Например при получении текста сертификата средствами OpenSSL вместо русских будет что-то вроде этого:
C=RU, L=\xD0\x9C\xD0\xBE\xD1\x81\xD0\xBA\xD0\xB2\xD0\xB0,
Для того чтоб перевести это к читаемому виду в в консоли надо сделать:
<ваша команда> | sed 's@+@ @g;s@%@\\x@g' | xargs -0 printf '%b'
А для PHP вот такой код (на всякий случай, перед x стоит 4 обратных слеша):
preg_replace_callback('/\\\\x([0-9A-F]{2})/', function($a){ return pack('H*', $a[1]); }, $your_string);
В результате получаем русский текст:
C=RU, L=Москва,
Про работу JavaScript КриптоПро
Пишу, как говорится, о наболевшем, я от всей души ненавижу создателей браузерного плагина crypto-pro, но об этом в PS, а теперь к делу. В процессе формирования запроса на сертификат (CSR) силами cadesplugin нам нужно добавить в него расширение SubjectSignTool (OID.1.2.643.100.111) со значением в виде строки (UTF8String).
На первый взгляд все кажется не сложно: создать объект X509Enrollment.CObjectId
и инициализировать его значением, создать объект X509Enrollment.CX509Extension
и инициализировать его созданным OID и нужной строкой с правильным EncodingType. Сделать это правда придется два раза, для синхронного и асинхронного режима, но об этом тоже в PS. На практике все не так просто, и приходится погружаться в низкоуровневое кодирование ASN.1.
Обычно, в большинстве случаев, содержимое определяет форму, но иногда, достаточно редко, содержимое подбирается под привлекательную форму. Так случилось и в этот раз, проходя в магазине мимо стеклянного клоша на деревянной подставке, он показался мне забавной безделицей, которую и применить-то особо некуда. Позже я стал замечать эти предметы обихода в фильмах, обычно про старину, и в них всегда находилось что-то причудливое, а вовсе не банальные искусственные цветочки, как в магазине. Так родилась идея сделать собственную диковинку под стеклом.
С диковинкой определился быстро, как раз форма определила, что лучшим содержимым будет модельная водонапорная башня в масштабе 1/87. Выбор такого рода построек был не велик и с конкретным строением быстро определился. Естественно, построить просто домик под стеклом казалось слишком просто, и поэтому было решено сделать внутреннее освещение, а снаружи - некоторое подобие жизни людей. Получилось вот это: