В GnuPG есть разные способы задать идентификатор пользователя. Некоторые допустимы только для gpg, другие — только для gpgsm. Вот полный список способов указать ключ:

  * Идентификатором ключа. Этот формат определяется по длине и содержимому строки или по начальному 0x. Идентификатором ключа сертификата X.509 являются младшие 64 бита его отпечатка SHA-1. Идентификатор ключа — это просто сокращение, во всей автоматической обработке нужно применять отпечаток.

     При вызове gpg можно приписывать сзади восклицательный знак («!»), чтобы программа принудительно использовала указанный первичный или вторичный ключ, не пытаясь определять, какой из ключей использовать.

     Последние четыре строки примера дают идентификатор ключа в длинной форме, которая применяется внутри протокола OpenPGP. Длинный идентификатор ключа можно узнать с помощью параметра --with-colons.

          234567C4
          0F34E556E
          01347A56A
          0xAB123456

          234AABBCC34567C4
          0F323456784E56EAB
          01AB3FED1347A5612
          0x234AABBCC34567C4

  * Отпечатком. Этот формат определяется по длине и содержимому строки или по начальному 0x. Обратите внимание, что для gpgsm можно задавать только 20-байтный вариант отпечатка (т.е. SHA-1 сертификата).

     При вызове gpg можно приписывать сзади восклицательный знак («!»), чтобы программа принудительно использовала указанный первичный или вторичный ключ, не пытаясь определять, какой из ключей использовать.

     Идентификатор ключа лучше всего задавать с помощью отпечатка. Это исключает любые неоднозначности в случае, когда есть ключи с одинаковыми идентификаторами.

          1234343434343434C434343434343434
          123434343434343C3434343434343734349A3434
          0E12343434343434343434EAB3484343434343434
          0xE12343434343434343434EAB3484343434343434

     Программа gpgsm допускает также двоеточие между каждой парой шестнадцатеричных цифр, поскольку это стандарт де-факто для представления отпечатков X.509. Программа gpg допускает также пользование отпечатками SHA-1 с пробелами в качестве разделителя в том виде, в каком их выводят команды перечисления ключей.

  * Точным совпадением с идентификатором пользователя OpenPGP. Это обозначается знаком равенства в начале. Не имеет смысла для сертификатов X.509.

          =Вася Пушкин <vp@test.ru>

  * Точным совпадением с адресом электронной почты. Это обозначается заключением адреса, как обычно, в угловые скобки.

          <vp@test.ru>

  * Частичным совпадением с адресом электронной почты. Это обозначается символом @ в начале строки. Это поиск по подстроке, но только по адресу электронной почты (т.е. внутри угловых скобок).

          @vp

  * Точным совпадением с DN (отличительным наименованием) субъекта. Это обозначается косой чертой в начале строки, непосредственно за которой следует DN субъекта, закодированное по RFC-2253. Обратите внимание, что строку, выводимую gpgsm --list-keys, использовать нельзя, потому что она была изменена и пересортирована для лучшей читаемости; пользуйтесь --with-colons, чтобы вывести исходную (правда, с экранирующими символами) строку RFC-2253.

          /CN=Вася Пушкин,O=Персонажи,L=Юркино,C=RU

  * Точным совпадением с DN издателя. Это обозначается последовательностью «#/», непосредственно за которой следует DN издателя, закодированное по RFC-2253. Строка должна представлять корневой сертификат издателя. См. замечание выше.

          #/CN=Root Cert,O=Персонажи,L=Юркино,C=RU

  * Точным совпадением с серийным номером и DN издателя. Это обозначается знаком «#» с последующим шестнадцатеричным представлением серийного номера, за которым следует косая черта и DN издателя, закодированное по RFC-2253. См. замечание выше.

          #4F03/CN=Root Cert,O=Персонажи,L=Юркино,C=RU

  * Кодом ключа. Это обозначается знаком «&» с последующими 40 шестнадцатеричными цифрами кода ключа. gpgsm выводит код ключа, когда задана команда --dump-cert. Для ключей OpenPGP это пока не реализовано.

          &D75F22C3F86E355877348498CDC92BD21010A480

  * Совпадением подстроки. Это исходный режим, но приложения могут указывать его явным образом, помещая в начало строки звездочку. Регистр символов при сравнении не учитывается.

          Вася
          *Вася

  * приставки . и + Эти приставки зарезервированы для поиска почтовых сообщений с метками в конце и для режима поиска по словам. Они пока не реализованы, и пользование ими не определено.

Обратите внимание, что мы изменили значение символа «#», который в старых версиях обозначал так называемые местные идентификаторы. Они больше не применяются, так что противоречия с материалами X.509 быть не должно.

Недостаток пользования форматом RFC-2253 для DN состоит в том, что преобразовать их в исходную кодировку невозможно, однако нам это не требуется, потому что в нашей базе данных ключей эта кодировка хранится в качестве сопутствующих данных.