86 KiB
(c)GnuPG Developments Team (c)2003 Translation from English into Russian UTF-8 by Maxim Britov maxbritov@tut.by Thanks a lot to Pavel Shaido, Andrew Kavko.
Russian team: gnupg-ru@gnupg.org
GnuPG version: 1.2.4-cvs Last revision by: MaxBritov Last revision date: 18 Sep 2003 15:00 Used codepage: UTF-8
Format of colon listings Специальный формат вывода с разделителем ":" для использования Вашими программами
Первоначальный пример:
$ gpg --fixed-list-mode --with-colons --list-keys
--with-fingerprint --with-fingerprint wk@gnupg.org
pub:f:1024:17:6C7EE1B8621CC013:899817715:1055898235:Ⓜ️::scESC: fpr:::::::::ECAF7590EB3443B5C7CF3ACB6C7EE1B8621CC013: uid:f::::::::Werner Koch wk@g10code.com: uid:f::::::::Werner Koch wk@gnupg.org: sub:f:1536:16:06AD222CADF6A6E1:919537416:1036177416:::::e: fpr:::::::::CF8BCC4B18DE08FCD8A1615906AD222CADF6A6E1: sub:r:1536:20:5CE086B5B5A18FF4:899817788:1025961788:::::esc: fpr:::::::::AB059359A3B81F410FCFF97F5CE086B5B5A18FF4:
The double --with-fingerprint prints the fingerprint for the subkeys too, --fixed-list-mode is themodern listing way printing dates in seconds since Epoch and does not merge the first userID with the pub record. Двукратное использование опции --with-fingerprint выводит также и отпечатки подключей, --fixed-list-mode задает вывод дат в секундах от начала Epoch(?) и не объединяет первый User ID с записью pub.
-
Поле: Type of record pub = public key pub = открытый ключ crt = X.509 certificate crt = X.509 сертификат crs = X.509 certificate and private key available crs = X.509 сертификат и секретный ключ доступен sub = subkey (secondary key) sub = подключ (вторичный ключ) sec = secret key sec = секретный ключ ssb = secret subkey (secondary key) ssb = секретный подключ (вторичный ключ) uid = user id (only field 10 is used) uid = User Id (используется только поле 10) uat = user attribute (same as user id except for field 10) uat = пользовательские атрибуты (также как User Id кроме поля 10) sig = signature sig = подпись rev = revocation signature rev = отзывающая подпись fpr = fingerprint: (fingerprint is in field 10) fpr = отпечаток (отпечаток в поле 10) pkd = public key data (special field format, see below) pkd = данные открытого ключа (поле имет спец. формат, см. далее) grp = reserved for gpgsm grp = зарезервировано для gpgsm rvk = revocation key rvk = ключ отзыва tru = trust database information tru = информация из таблицы доверий
-
Поле: A letter describing the calculated trust. This is a single letter, but be prepared that additional information may follow in some future versions. (not used for secret keys) Буква описывающая вычисленное доверие. Это однобуквенное значение, но будьте готовы, что в будущих версиях может появиться и дополнительная информация (не используется для секретных ключей). o = Unknown (this key is new to the system) o = Неизвестно (данный ключ нов для программы) i = The key is invalid (e.g. due to a missing self-signature) i = Неправильный ключ (напр. отсутствует самоподпись) d = The key has been disabled (deprecated - use the 'D' in field 12 instead) d = Ключ отключен. (устарело - взамен используется 'D' в поле 12) r = The key has been revoked r = Ключ отозван e = The key has expired e = Ключ просрочен - = Unknown trust (i.e. no value assigned) - = Степень доверия неизвестна (т.е. не назначена) q = Undefined trust '-' and 'q' may safely be treated as the same value for most purposes q = Неопределенная степень доверия '-' и 'q' в большинстве случаем могут безопасно трактоваться как одинаковые n = Don't trust this key at all n = Полное недоверие ключу m = There is marginal trust in this key m = Ограниченное (marginal) доверие ключу f = The key is fully trusted f = Полностью доверенный ключ u = The key is ultimately trusted. This often means that the secret key is available, but any key may be marked as ultimately trusted. u = Абсолютное доверие ключу. Обычно это означает, что имеется в наличии и секретный ключ, но абсолютно доверяемым может быть назначен любой ключ.
-
Поле: длина ключа в битах.
-
Поле: Алгоритм: 1 = RSA 2 = RSA (только шифрование) 3 = RSA (только подпись) 16 = ElGamal (только шифрование) 17 = DSA (иногда называемый DH, только подпись) 20 = ElGamal (подпись и шифрование) (другие ID см. в include/cipher.h)
-
Поле: Какой-либо KeyID
-
Поле: Дата создание (в UTC)
-
Поле: Дата окончания срока годности ключа или пустая, если неограничен.
-
Поле: Used for serial number in crt records (used to be the Local-ID) Используется для серийного номера в crt записях (хранит Local ID)
-
Поле: Доверие владельцу (только для главных ключей) Это однобуквенное значение, но будьте готовы, что в следующих версиях может появиться дополнительная информация.
-
Поле: User-ID. Значение кодируется наподобие C-строк для хранения управляющих символов (двоеточие кодируется "\x3a"). Не используется с --fixed-list-mode в gpg. A UAT record puts the attribute subpacket count here, a space, and then the total attribute subpacket size. In gpgsm the issuer name comes here An FPR record stores the fingerprint here. The fingerprint of an revocation key is stored here. UAT показывает здесь количестиво подпакетов атрибутов, пробел, и затем общий размер подпакета атрибутов. В gpgsm здесь имя издателя. FRP показывает здесь отпечаток ключа. Отпечаток ключа отзыва показывается здесь.
-
Поле: Класс подписи. Это 2 две шестнадцатеричных цифры с последующей буквой 'x' для экспортируемой подписи или буквой 'l' для локальной подписи. Байт класса ключа отзыва также дается здесь, причем 'x' и 'l' имеют тоже значение. Класс (см. g10/keydb.h): 1f = IS_KEY_SIG 10 = IS_UID_SIG 18 = IS_SUBKEY_SIG 20 = IS_KEY_REV 30 = IS_UID_REV 28 = IS_SUBKEY_REV
-
Поле: Совместимость ключей: e = шифрование s = подпись (подпись данных) c = сертификация (подпись ключей) Ключ может иметь любую их комбинацию в любом порядке. В дополнение к данным буквам, главный ключ имеет заглавные версии букв для указания возможностей ключа в целом, а также заглавную букву 'D' - ключ отключен.
-
Поле: Used in FPR records for S/MIME keys to store the fingerprint of the issuer certificate. This is useful to build the certificate path based on certificates stored in the local keyDB; it is only filled if the issue certificate is available. The advantage of using this value is that it is guaranteed to have been been build by the same lookup algorithm as gpgsm uses. For "uid" recods this lists the preferences n the sameway the -edit menu does. Используется в FRP записях для S/MIME ключей для хранения отпечатка сертификата издателя. Это полезно для построения пути сертификата на основе сертификатов хранимых в keyDB; это заполнено, если сертификат издателя доступен. Полезность этого в том, что гарантируется использование того же алгоритма поиска, как в gpgsm.
-
Поле: Flag field used in the --edit menu output: Поле флага используемого в выводе --edit меню:
All dates are displayed in the format yyyy-mm-dd unless you use the option --fixed-list-mode in which case they are displayed as seconds since Epoch. More fields may be added later, so parsers should be prepared for this. When parsing a number the parser should stop at the first non-number character so that additional information can later be added. Все даты показываются в формате yyy-mm-dd до тех пор, пока не используется опция --fixed-list-mode при испоьзовании которой, даты отображаются в секундах с начала Epoch. В будущем могут появиться новые поля, так что программы разбирающие данный формат должны быть готовы к этому. При разборе количества полей следует остановиться на первом не цифровом символе так, чтобы позднее могла добавиться дополнительная информация.
Если поле 1 имеет тэг "pkd", листинг выглядит подобно этому: pkd:0:1024:B665B1435F4C2 .... FF26ABB: ! ! !-- значение ! !------ число битов в значении !--------- индекс (напр. DSA имеет от 0 до 3: p,q,g,y)
The "tru" trust database records have the fields: Запись таблицы доверий "tru" имеет следующие поля:
1: Reason for staleness of trust. If this field is empty, then the trustdb is not stale. This field may have multiple flags in it: Причина устаревания таблицы. Если поле пусто, таблица не устарела. Данное поле может иметь несколько флагов:
o: Trustdb устарела
t: Trustdb была создана при иной модели доверий, чем текущая.
2: Модель доверия. Это всегда ноль (т.е. "Classic") в данной версии GnuPG. 3: Дата создания trustdb в секундах с 1/1/1970. 4: Срок годности trustdb в секундах с 1/1/1970.
Формат вывода параметра "--status-fd"
Every line is prefixed with "[GNUPG:] ", followed by a keyword with the type of the status line and a some arguments depending on the type (maybe none); an application should always be prepared to see more arguments in future versions. Каждая строка начинается с "[GNUPG:] ", далее следует ключевое слово с типом строки статуса и некоторыми (необязательно) аргументами, основанными на типе; приложениям следует всегда быть готовыми получить больше аргументов в будущих версиях.
GOODSIG <long keyid> <username>
The signature with the keyid is good. For each signature only
one of the three codes GOODSIG, BADSIG or ERRSIG will be
emitted and they may be used as a marker for a new signature.
The username is the primary one encoded in UTF-8 and %XX
escaped.
Подпись с <long keyid> достоверна. Для каждой подписи будет
только один из трех кодов GOODSIG, BADSIG или ERRSIG и они могут
использоваться как маркер для новой подписи.
<username> есть главный User ID в кодировке UTF-8 и %XX.
EXPSIG <long keyid> <username>
The signature with the keyid is good, but the signature is
expired. The username is the primary one encoded in UTF-8 and
%XX escaped.
Подпись с <long keyid> достоверна, но просрочена.
<username> есть главный User ID в кодировке UTF-8 и %XX.
EXPKEYSIG <long keyid> <username>
The signature with the keyid is good, but the signature was
made by an expired key. The username is the primary one
encoded in UTF-8 and %XX escaped.
Подпись с <long keyid> достоверна, но создана просроченным ключом.
<username> есть главный User ID в кодировке UTF-8 и %XX.
REVKEYSIG <long keyid> <username>
The signature with the keyid is good, but the signature was
made by a revoked key. The username is the primary one
encoded in UTF-8 and %XX escaped.
Подпись с <long keyid> достоверна, но создана отозванным ключом.
<username> есть главный User ID в кодировке UTF-8 и %XX.
BADSIG <long keyid> <username>
The signature with the keyid has not been verified okay.
The username is the primary one encoded in UTF-8 and %XX
escaped.
Подпись с <long keyid> недостоверна после проверки.
<username> есть главный User ID в кодировке UTF-8 и %XX.
ERRSIG <long keyid> <pubkey_algo> <hash_algo> \
<sig_class> <timestamp> <rc>
It was not possible to check the signature. This may be
caused by a missing public key or an unsupported algorithm.
A RC of 4 indicates unknown algorithm, a 9 indicates a missing
public key. The other fields give more information about
this signature. sig_class is a 2 byte hex-value.
Нет возможности проверить подпись. Это может быть вызвано
отсутствием открытого ключа или неизвестным алгоритмом.
<rc>: 4 - неизвестный алгоритм, 9 - отстутствует открытый
ключ. Другие поля дают больше информации о данной подписи.
<sig_class> двухбайтное шестнадцатеричное значение.
VALIDSIG <fingerprint in hex> <sig_creation_date> <sig-timestamp>
<expire-timestamp> <sig-version> <reserved> <pubkey-algo>
<hash-algo> <sig-class> <primary-key-fpr>
The signature with the keyid is good. This is the same as
GOODSIG but has the fingerprint as the argument. Both status
lines are emitted for a good signature. All arguments here
are on one long line. sig-timestamp is the signature creation
time in seconds after the epoch. expire-timestamp is the
signature expiration time in seconds after the epoch (zero
means "does not expire"). sig-version, pubkey-algo, hash-algo,
and sig-class (a 2-byte hex value) are all straight from the
signature packet. PRIMARY-KEY-FPR is the fingerprint of the
primary key or identical to the first argument. This is
useful to get back to the primary key without running gpg
again for this purpose.
Подпись с <keyid> достоверна. Это то же, что и GOODSIG, но
имеет отпечаток ключа в качестве аргумента. Обе строки статуса
будут присутствовать при достоверной подписи. Все аргументы
передаются одной длинной строкой. <sig-timestamp> время создания
подиси с 01/01/1970. <expire-timestamp> время окончания срока
действия подписи в секундах (0 - без ограничения срока).
<sig-version>, <pubkey-algo>, <hash-algo> и <sig-class> (двухбайтное
шестнадцатеричное значение) берутся из пакета подписи.
<primary_key_frp> отпечаток гланого ключа или идентичен первому
аргументу. Это полезно для получения гланого ключа без запуска
gpg для этой цели.
SIG_ID <radix64_string> <sig_creation_date> <sig-timestamp>
This is emitted only for signatures of class 0 or 1 which
have been verified okay. The string is a signature id
and may be used in applications to detect replay attacks
of signed messages. Note that only DLP algorithms give
unique ids - others may yield duplicated ones when they
have been created in the same second.
Выдается только для подписей класса 00 или 01, достоверных
после проверки. <radix64_string> идентификатор подписи
и может использоваться приложением для обнаружения
атак с повторной отправкой подписанных сообщений. Заметим, что только
DLP алгоритмы дают уникальные идентификаторы, в то время как
другие могут давать одинаковые, если создают их в ту же секунду.
ENC_TO <long keyid> <keytype> <keylength>
The message is encrypted to this keyid.
keytype is the numerical value of the public key algorithm,
keylength is the length of the key or 0 if it is not known
(which is currently always the case).
Сообщение зашифровано для данного <long_keyid>.
<keytype> цифровое обозначение алгоритма шифрования с
открытым ключом. <keylength> длина ключа, или 0 если неизвестно
(что сейчас всегда).
NODATA <what>
No data has been found. Codes for what are:
1 - No armored data.
2 - Expected a packet but did not found one.
3 - Invalid packet found, this may indicate a non OpenPGP message.
You may see more than one of these status lines.
Данные не найдены. Код:
1 - Нет защищенных данных.
2 - Ожидался пакет, но не обнаружен.
3 - Неправильный пакет найден, это может быть не OpenPGP
сообщение.
Вы можете получить несколько таких строк.
UNEXPECTED <what>
Unexpected data has been encountered
0 - not further specified 1
Получены неожиданные данные
0 - нет иных уточнений
TRUST_UNDEFINED <error token>
TRUST_NEVER <error token>
TRUST_MARGINAL
TRUST_FULLY
TRUST_ULTIMATE
For good signatures one of these status lines are emitted
to indicate how trustworthy the signature is. The error token
values are currently only emiited by gpgsm.
Для достоверных подписей одна из этих строк статуса означает
степень доверия подписавшему. <error_token> в настоящий
момент выдается только gpgsm.
SIGEXPIRED
This is deprecated in favor of KEYEXPIRED.
Устарело. Заменено на KEYEXPIRED.
KEYEXPIRED <expire-timestamp>
The key has expired. expire-timestamp is the expiration time
in seconds after the epoch.
Ключ просрочен. <expire_timestamp> время окончания срокадействия
в секундах с 01/01/1970.
KEYREVOKED
The used key has been revoked by its owner. No arguments yet.
Использованный ключ отозван владельцем. Пока нет имеет аргументов.
BADARMOR
The ASCII armor is corrupted. No arguments yet.
ASCII упаковка повреждена. Пока нет аргументов.
RSA_OR_IDEA
The IDEA algorithms has been used in the data. A
program might want to fallback to another program to handle
the data if GnuPG failed. This status message used to be emitted
also for RSA but this has been dropped after the RSA patent expired.
However we can't change the name of the message.
Алгоритм IDEA использован в данных. Вашей программе может
потребоваться обратиться к другой программе для, если GnuPG не
работает, для получения данных. Для RSA данное сообщение больше не
применяется после окончания срока патента на алгоритм RSA.
Однако мы не можем изменить имя сообщения.
SHM_INFO
SHM_GET
SHM_GET_BOOL
SHM_GET_HIDDEN
GET_BOOL
GET_LINE
GET_HIDDEN
GOT_IT
NEED_PASSPHRASE <long main keyid> <long keyid> <keytype> <keylength>
Issued whenever a passphrase is needed.
keytype is the numerical value of the public key algorithm
or 0 if this is not applicable, keylength is the length
of the key or 0 if it is not known (this is currently always the case).
Выдается когда необходим ввод пароля.
<keytype> цифровое значение алгоритма шифрования с открытым ключом или
0 если это не применимо. <keylenght> длина ключа или 0 если неизвестно
(всегда на данный момент).
NEED_PASSPHRASE_SYM <cipher_algo> <s2k_mode> <s2k_hash>
Issued whenever a passphrase for symmetric encryption is needed.
Выдвется, если необходим пароль для симметричного шифрования.
MISSING_PASSPHRASE
No passphrase was supplied. An application which encounters this
message may want to stop parsing immediately because the next message
will probably be a BAD_PASSPHRASE. However, if the application
is a wrapper around the key edit menu functionality it might not
make sense to stop parsing but simply ignoring the following
BAD_PASSPHRASE.
Не предоставлен пароль. Приложение может захотеть прекратить
дальнейший разбор немедленно, т.к. следующим сообщением должно быть
BAD_PASSPHRASE. Однако, если приложение обрабатывает вывод работы
с меню редактирования ключа может не иметь смысла прекращать разбор,
а просто игнорировать последующий BAD_PASSPHRASE.
BAD_PASSPHRASE <long keyid>
The supplied passphrase was wrong or not given. In the latter case
you may have seen a MISSING_PASSPHRASE.
Пароль неверен или не задан. В последнем случай сначала будет выдано
сообшение MISSING_PASSPHRASE.
GOOD_PASSPHRASE
The supplied passphrase was good and the secret key material
is therefore usable.
Переданный пароль принят и секретный ключ готов к применению.
DECRYPTION_FAILED
The symmetric decryption failed - one reason could be a wrong
passphrase for a symmetrical encrypted message.
Сбой расшифровка симметричным алгоритмом. Единствено возможная
причина - неверный пароль.
DECRYPTION_OKAY
The decryption process succeeded. This means, that either the
correct secret key has been used or the correct passphrase
for a conventional encrypted message was given. The program
itself may return an errorcode because it may not be possible to
verify a signature for some reasons.
Расшифровано успешно. Это означает, что был использован правильный
секретный ключ или правильный пароль дан. Программа может вернуть
ошибку потому, что невозможно проверить подпись по некоторым причинам.
NO_PUBKEY <long keyid>
NO_SECKEY <long keyid>
The key is not available
Ключ недоступен.
IMPORTED <long keyid> <username>
The keyid and name of the signature just imported
<long keyid> и <username> подписи только-что импортированы.
IMPORT_OK <reason> [<fingerprint>]
The key with the primary key's FINGERPRINT has been imported.
Reason flags:
0 := Not actually changed
1 := Entirely new key.
2 := New user IDs
4 := New signatures
8 := New subkeys
16 := Contains private key.
The flags may be ORed.
Ключ с главным ключом <fingerprint> импортирован.
<reason>:
0 := Не произведено изменений.
1 := Внесен новый ключ.
2 := Новый User ID.
4 := Новая подпись.
8 := Новый подключ.
16 := Получен секретный ключ.
Флаги можно объединять логическим ИЛИ.
IMPORT_PROBLEM <reason> [<fingerprint>]
Issued for each import failure. Reason codes are:
0 := "No specific reason given".
1 := "Invalid Certificate".
2 := "Issuer Certificate missing".
3 := "Certificate Chain too long".
4 := "Error storing certificate".
Выдается для каждой ошибки импорта.
<reason>:
0 := Нет особых признаков.
1 := Неверный Сертификат.
2 := Отсутствует владелец Сертификата.
3 := Цепочка Сертификатов слишком длинна.
4 := Ошибка сохранения Сертификата.
IMPORT_RES <count> <no_user_id> <imported> <imported_rsa> <unchanged>
<n_uids> <n_subk> <n_sigs> <n_revoc> <sec_read> <sec_imported> <sec_dups> <not_imported>
Final statistics on import process (this is one long line)
Окончательная статистика процесса импорта (одной длинной строкой)
FILE_START <what> <filename>
Start processing a file <filename>. <what> indicates the performed
operation:
1 - verify
2 - encrypt
3 - decrypt
Начало обработки файла <filename>. <what> выполняемая операция:
1 - проверка.
2 - шифрование.
3 - расшифрование.
FILE_DONE
Marks the end of a file processing which has been started
by FILE_START.
Означает окончание обработки файла, которая обозначалась FILE_START.
BEGIN_DECRYPTION
END_DECRYPTION
Mark the start and end of the actual decryption process. These
are also emitted when in --list-only mode.
Означает начало и конец текущего процесса расшифрования. Это также
выдается в --list-only режиме.
BEGIN_ENCRYPTION <mdc_method> <sym_algo>
END_ENCRYPTION
Mark the start and end of the actual encryption process.
Означает начало и конец текущего процесса шифрования.
DELETE_PROBLEM reason_code
Deleting a key failed. Reason codes are:
1 - No such key
2 - Must delete secret key first
3 - Ambigious specification
Сбой удаления. <reason_code>:
1 - нет такого ключа.
2 - Сперва надо удалить секретный ключ.
3 - двусмысленное задание.
PROGRESS what char cur total
Used by the primegen and Public key functions to indicate progress.
"char" is the character displayed with no --status-fd enabled, with
the linefeed replaced by an 'X'. "cur" is the current amount
done and "total" is amount to be done; a "total" of 0 indicates that
the total amount is not known. 100/100 may be used to detect the
end of operation.
Используется при создании главного ключа и функций с открытым ключом
для обозначения процесса. "char" символ отображаемый при не заданной
--status-fs, с переводом строки замененным на 'X'. "cur" текущая
степень выполнения и "total" всего выполнить; 0 в "total" означает,
что общее число не известно. 100/100 может использоваться для
определения конца операции.
SIG_CREATED <type> <pubkey algo> <hash algo> <class> <timestamp> <key fpr>
A signature has been created using these parameters.
type: 'D' = detached
'C' = cleartext
'S' = standard
(only the first character should be checked)
class: 2 hex digits with the signature class
Подпись создана с использованием данных параметров.
<type>: 'D' = отделенная.
'C' = прозрачная подпись.
'S' = стандартная.
(только первый символ следует проверять)
<class>: две шестнадцатеричные цифры класса подписи.
KEY_CREATED <type> <fingerprint>
A key has been created
type: 'B' = primary and subkey
'P' = primary
'S' = subkey
The fingerprint is one of the primary key for type B and P and
the one of the subkey for S.
Ключ был создан:
<type>: 'B' = главный ключ и подключ.
'P' = главный ключ.
'S' = подключ.
<fingerprint> отпечаток главного ключа для типов B и P либо отпечаток
подключа для типа S.
SESSION_KEY <algo>:<hexdigits>
The session key used to decrypt the message. This message will
only be emmited when the special option --show-session-key
is used. The format is suitable to be passed to the option
--override-session-key
Сесионный ключ использованный для расшифрования сообщения. Это
сообщение выдается только при задании опции --show-session-key.
Формат пригодный для использования в --override-session-key.
NOTATION_NAME <name>
NOTATION_DATA <string>
name and string are %XX escaped; the data may be splitted
among several notation_data lines.
<name> и <string> %XX кодировка; данные могут быть разделены
на несколько NOTATION_DATA строк.
USERID_HINT <long main keyid> <string>
Give a hint about the user ID for a certain keyID.
Дается как подсказка о User ID для KeyID.
POLICY_URL <string>
string is %XX escaped
строка в %XX кодировке.
BEGIN_STREAM
END_STREAM
Issued by pipemode.
Выдается при использовании каналов (pipemode).
INV_RECP <reason> <requested_recipient>
Issued for each unusable recipient. The reasons codes
currently in use are:
0 := "No specific reason given".
1 := "Not Found"
2 := "Ambigious specification"
3 := "Wrong key usage"
4 := "Key revoked"
5 := "Key expired"
6 := "No CRL known"
7 := "CRL too old"
8 := "Policy mismatch"
9 := "Not a secret key"
10 := "Key not trusted"
Note that this status is also used for gpgsm's SIGNER command
where it relates to signer's of course.
Выдается на каждого недопустимого получателя.
<reason>:
0 := Нет особых признаков;
1 := Не найден;
2 := Двусмысленное задание;
3 := Неправильно использованный ключ;
4 := Ключ отозван;
5 := Ключ просрочен;
6 := Неизвестный CRL;
7 := CRL слишком старый;
8 := Несоответствует правилам (Policy mismatch);
9 := Нет секретного ключа;
10 := Ключ не доверенный.
Учтите, что данный статус также используется в gpgsm командой SIGNER,
где ссылается на подписавшего (to signer's of course).
NO_RECP <reserved>
Issued when no recipients are usable.
Выдается когда не задан получатель.
ALREADY_SIGNED <long-keyid>
Warning: This is experimental and might be removed at any time.
Внимание: Это экспериментальное и может быть удалено.
TRUNCATED <maxno>
The output was truncated to MAXNO items. This status code is issued
for certain external requests
Вывод обреза до <maxno> пунктов. Выдается для некоторых внешних
запросов.
ERROR <error location> <error code>
This is a generic error status message, it might be followed
by error location specific data. <error token> and
<error_location> should not contain a space.
Это общий формат ошибки и может следствием ошибки расположения
некторых данных. <error_token> и <error_location> не должны содержать
пробелов.
ATTRIBUTE <fpr> <octets> <type> <index> <count>
<timestamp> <expiredate> <flags>
This is one long line issued for each attribute subpacket when
an attribute packet is seen during key listing. <fpr> is the
fingerprint of the key. <octets> is the length of the
attribute subpacket. <type> is the attribute type
(1==image). <index>/<count> indicates that this is the Nth
indexed subpacket of count total subpackets in this attribute
packet. <timestamp> and <expiredate> are from the
self-signature on the attribute packet. If the attribute
packet does not have a valid self-signature, then the
timestamp is 0. <flags> are a bitwise OR of:
0x01 = this attribute packet is a primary uid
0x02 = this attribute packet is revoked
0x04 = this attribute packet is expired
Это одна длинная строка выдаваемая для каждого атрибута подпакета,
когда атрибут пакета просматривается в процессе просмотра ключей.
<fpr> отпечаток ключа. <octets> длина атрибута подпакета.
<type> атрибут типа (1==image). <index>/<count> показывают, что это
N-ный подпакет из общего количества подпакетов в данном пакете
атрибутов. <timestamp> и <expiredate> берутся из самоподписи на
пакете атрибута. Если пакет атрибута не имеет правильной самоподписи,
тогда <timestamp>=0.
<flags> объединенные логическим ИЛИ:
0x01 = данный пакет атрибута - главный User ID;
0x02 = данный пакет атрибута - отозван;
0x03 = данный пакет атрибута - просрочен.
Формат вывода параметра "--attribute-fd"
When --attribute-fd is set, during key listings (--list-keys, --list-secret-keys) GnuPG dumps each attribute packet to the file descriptor specified. --attribute-fd is intended for use with --status-fd as part of the required information is carried on the ATTRIBUTE status tag (see above). Когда установлен --attribute-fd, в процессе вывода списка ключей (--list-keys, --list-secret-keys) GnuPG выводит для каждого пакета атрибут в файл заданный дескриптором. --attribute-fd предназначен для использования с --status-fd как часть необходимой информации дополняемой тегом ATTRIBUTE (см. выше).
The contents of the attribute data is specified by 2440bis, but for convenience, here is the Photo ID format, as it is currently the only attribute defined: Содержимое данных атрибута соответствует 2440bis, но для удобства, здесь показан Фото ID формат, т.к. это единственный определенный в настоящее время атрибут:
Byte 0-1: The length of the image header. Due to a historical accident (i.e. oops!) back in the NAI PGP days, this is a little-endian number. Currently 16 (0x10 0x00). Длина заголовка изображения. По историческим причинам (со времен NAI PGP) это число с обратным порядком байтов. В настоящее время 16 (т.е. 0x10 0x00).
Byte 2: The image header version. Currently 0x01. Версия заголовка изображения. Сейчас 0x01.
Byte 3: Encoding format. 0x01 == JPEG. Формат. 0x01 == JPEG.
Byte 4-15: Reserved, and currently unused. Зарезервировано. Пока не используется.
All other data after this header is raw image (JPEG) data. Все последующие данные являются данными изображения в формате JPEG.
Создание ключей
Key generation shows progress by printing different characters to
stderr:
Процедура генерации ключей выдает последовательность из следующих символов
в поток stderr:
"." Last 10 Miller-Rabin tests failed
Последние 10 тестов Миллера-Рабина не пройдены
"+" Miller-Rabin test succeeded
Успешный тест Миллера-Рабина
"!" Reloading the pool with fresh prime numbers
Перезагрузка пула свежими простыми числами
"^" Checking a new value for the generator
Проверка нового значения для генератора
"<" Size of one factor decreased
Размер одного множителя уменьшен
">" Size of one factor increased
Размер одного множителя увеличен
The prime number for ElGamal is generated this way:
Простое число для ключа ElGamal создается следующим образом:
1) Make a prime number q of 160, 200, 240 bits (depending on the keysize)
Создается простое число q из 160, 200, 240 бит (основываясь на размере
ключа) 2) Select the length of the other prime factors to be at least the size of q and calculate the number of prime factors needed Выбирается длина других простых множителей, как минимум равных размеру q и вычисляется число необходимых простых множителей 3) Make a pool of prime numbers, each of the length determined in step 2 Создается пул простых чисел, каждое длиной определенной в п.2 4) Get a new permutation out of the pool or continue with step 3 if we have tested all permutations. Получаем новый перестановкой пула или продолжаем с п.3 если провериди уже все перестановки. 5) Calculate a candidate prime p = 2 * q * p[1] * ... * p[n] + 1 Вычисляется кандидат простого числа p=2 * q * p[1] * ... * p[n] + 1 6) Check that this prime has the correct length (this may change q if it seems not to be possible to make a prime of the desired length) Проверяется, что данное простое число имеет правильную длину (это может изменить q, если невозможно получить простое число необходимой длины) 7) Check whether this is a prime using trial divisions and the Miller-Rabin test. Проверяется, что найденное число является простым числом попыткой проверочных делений и с помощью теста Миллера-Рабина 8) Continue with step 4 if we did not find a prime in step 7. Возврат к п.4, если число в п.7 не является простым. 9) Find a generator for that prime. Поиск числа-генератора для данного простого числа.
This algorithm is based on Lim and Lee's suggestion from the
Crypto '97 proceedings p. 260.
Данный алгоритм основан на предложениях Lim и Lee.
(Доклады Crupto '97 стр. 260)
Unattended key generation Автоматическое создание ключа
This feature allows unattended generation of keys controlled by a parameter file. To use this feature, you use --gen-key together with --batch and feed the parameters either from stdin or from a file given on the commandline. Данная возможность позволяет Вам создавать ключи в автоматическом режиме контролируемом файлом параметров. Для использовния данной возможности следует использовать --gen-key вместе с --batch и передать параметры через stdin или из файла заданного в командной строке.
The format of this file is as follows: Формат файла следующий: o Text only, line length is limited to about 1000 chars. Только текст, длина строки ограничена около 1000 символов. o You must use UTF-8 encoding to specify non-ascii characters. Вы должны использовать UTF-8 для не ASCII символов. o Empty lines are ignored. Пустые строки игнорируются o Leading and trailing spaces are ignored. Лидирующие и концевые пробелы игнорируются o A hash sign as the first non white space character indicates a comment line. Знак решетки, как первый непустой симовол в строке, начинает комментарий o Control statements are indicated by a leading percent sign, the arguments are separated by white space from the keyword. Управляющие операторы предваряются символом процента, аргументы отделяются пробелом от ключевых слов. o Parameters are specified by a keyword, followed by a colon. Arguments are separated by white space. Параметры задаются ключевым словом с двоеточием. Аргументы отделяются пробелом. o The first parameter must be "Key-Type", control statements may be placed anywhere. Первый параметр должен быть "Key-Type", управлящие операторы могут распологаться в любом месте o Key generation takes place when either the end of the parameter file is reached, the next "Key-Type" parameter is encountered or at the control statement "%commit" Генерация ключа начинается с места, где или заканчивается файл параметров, или при обнаружении следующего "Key-Type", или управляющий оператор "%commit" o Control statements: Управляющие операторы %echo Print . Вывести . %dry-run Suppress actual key generation (useful for syntax checking). Производит только имитацию процесса (полезно для проверки синтаксиса). %commit Perform the key generation. An implicit commit is done at the next "Key-Type" parameter. Произвести генерацию ключа. Выполнится также при встрече следующего параметра "Key-Type". %pubring %secring Do not write the key to the default or commandline given keyring but to . This must be given before the first commit to take place, duplicate specification of the same filename is ignored, the last filename before a commit is used. The filename is used until a new filename is used (at commit points) and all keys are written to that file. If a new filename is given, this file is created (and overwrites an existing one). Both control statements must be given. Не сохранять ключ в таблицу ключей по умолчанию или заданную командной строкой, а сохранять в . Должно быть задано до места начала генерации ключа (см.выше). Используется только последнее втреченное значение для каждого генерируемого ключа. Если файл новый, он создается (перезаписывается). Должный быть заданы оба этих управляющих оператора. o The order of the parameters does not matter except for "Key-Type" which must be the first parameter. The parameters are only for the generated keyblock and parameters from previous key generations are not used. Some syntactically checks may be performed. Порядок параметров не имеет значения, за исключением "Key-Type", который должен быть первым. Параметры действуют только на генерируемый блок ключей и параметры из предыдущей генерации не используются. Может производиться частичная проверка синтаксиса. The currently defined parameters are: На данный момент определены следующие параметры: Key-Type: | Starts a new parameter block by giving the type of the primary key. The algorithm must be capable of signing. This is a required parameter. Начинает новый блок параметров, задавая тип главного ключа. Алгоритм должен поддерживать подпись. Это необходимый параметр. Key-Length: Length of the key in bits. Default is 1024. Длина ключа в битах. По умолчанию 1024. Key-Usage: Space or comma delimited list of key usage, allowed values are "encrypt" and "sign". This is used to generate the key flags. Please make sure that the algorithm is capable of this usage. Список применений ключа разделенный пробелом или двоеточием. Допустимые значения "encrypt" и "sign". Используются для создания флагов ключа. Не забудьте, что алгоритм должен поддерживать такое применение. Subkey-Type: | This generates a secondary key. Currently only one subkey can be handled. Создание вторичного подключа. Пока только один подключ может быть создан. Subkey-Length: Length of the subkey in bits. Default is 1024. Длина подключа в битах. По умолчанию 1024. Subkey-Usage: Similar to Key-Usage. Аналогично "Key-Usage". Passphrase: If you want to specify a passphrase for the secret key, enter it here. Default is not to use any passphrase. Если Вы задать пароль для секретного ключа, введите его здесь. По умолчанию пароль не используется. Name-Real: Name-Comment: Name-Email: The 3 parts of a key. Remember to use UTF-8 here. If you don't give any of them, no user ID is created. Три части ключа. Используйте UTF-8! Если задан ни один из них, то User ID не создается. Expire-Date: |([d|w|m|y]) Set the expiration date for the key (and the subkey). It may either be entered in ISO date format (2000-08-15) or as number of days, weeks, month or years. Without a letter days are assumed. Установить срок действия ключа (и подключа). Может быть задано или датой в ISO формате (ГГГГ-ММ-ДД), или как число дней, недель, месяцев или лет. Без буквы считается, что указано дней. Preferences: Set the cipher, hash, and compression preference values for this key. This expects the same type of string as "setpref" in the --edit menu. Установить предпочтения шифрования, хэша и сжатия для данного ключа. Теже значения, что и в "setpref" в --edit. Revoker: : [sensitive] Add a designated revoker to the generated key. Algo is the public key algorithm of the designated revoker (i.e. RSA=1, DSA=17, etc.) Fpr is the fingerprint of the designated revoker. The optional "sensitive" flag marks the designated revoker as sensitive information. Only v4 keys may be designated revokers. Добавить к создаваемому ключу - ключ назначенный отзывающим. - алгоритм шифрования с открытым ключом из ключа назначенного отзывающим (например RSA=1, DSA=17 и т.д.). - отпечаток ключа назначаемого отзывающим. Необязательное помечает отзывающий ключ, как несущий важную (неэкспортируемую) информацию. Только ключи v4 могут быть назначены отзывающими.
Пример:
$ cat >foo <<EOF
%echo Создаем стандартный ключ
Key-Type: DSA
Key-Length: 1024
Subkey-Type: ELG-E
Subkey-Length: 1024
Name-Real: Joe Tester
Name-Comment: с дурацким паролем
Name-Email: joe@foo.bar
Expire-Date: 0
Passphrase: abc
%pubring foo.pub
%secring foo.sec
# Здесь начинаем создание и поэтому мы сможем затем выдать "выполнено" :-)
%commit
%echo выполнено
EOF
$ gpg --batch --gen-key foo
[...]
$ gpg --no-default-keyring --secret-keyring ./foo.sec
--keyring ./foo.pub --list-secret-keys
/home/wk/work/gnupg-stable/scratch/foo.sec
sec 1024D/915A878D 2000-03-09 Joe Tester (с дурацким паролем) joe@foo.bar ssb 1024g/8F70E2C0 2000-03-09
Layout of the TrustDB Устройство таблицы доверий TrustDB
The TrustDB is built from fixed length records, where the first byte describes the record type. All numeric values are stored in network byte order. The length of each record is 40 bytes. The first record of the DB is always of type 1 and this is the only record of this type. Таблица TrustDB состоит из записей фиксированной длины и первый байт каждой записи указывает ее тип. Все численнык значения хранятся в последовательном байтовом порядке (network byte order). Длина каждой записи равна 40 байт. Первая запись всегда имеет тип 1 и только этот тип!
FIXME: The layout changed, document it here.
Тип записи 0:
Unused record, can be reused for any purpose.
Неиспользуемая запись, можно использовать заново для любых целей.
Тип записи 1:
Информация о версии таблицы TrustDB. Это всегда первая запись в таблице
и только с типом 1.
1 байт Содержит 1
3 байта волшебное слово 'gpg'
1 байт Версия таблицы TrustDB (2)
1 байт marginals needed
1 байт completes needed
1 байт max_cert_depth
The three items are used to check whether the cached
validity value from the dir record can be used.
Эти три параметра используются длфя проверки того,
что закешированное значение из dir записи можно использовать.
1 u32 locked flags
флаги блокировок
1 u32 отметка времени создания таблицы TrustDB
1 u32 timestamp of last modification which may affect the validity
of keys in the trustdb. This value is checked against the
validity timestamp in the dir records.
отметка времени последней модификации таблицы, которая могла
затронуть действительность ключей в таблице TrustDB.
1 u32 timestamp of last validation
(Used to keep track of the time, when this TrustDB was checked
against the pubring)
отметка о времени последней ревизии доверий
(Используется для хранения связи со временем, когда таблица
была проверена относительно таблицы открытых ключей)
1 u32 record number of keyhashtable
номер записи keyhashtable
1 u32 first free record
первая свободная запись
1 u32 record number of shadow directory hash table
It does not make sense to combine this table with the key table
because the keyid is not in every case a part of the fingerprint.
номер записи теневого каталога таблицы хешей.
1 u32 record number of the trusthashtbale
номер записи trusthashtable
Тип записи 2: (запись каталога) (directory record)
Informations about a public key certificate.
These are static values which are never changed without user interaction.
Информация о сертификате публичного ключа.
Это постоянное значение, которое не изменяется без участия пользователя.
1 байт значение 2
1 байт зарезервирован
1 u32 LID. (This is simply the record number of this record.)
LID. (Уникальный внутренний идентификатор для записей данного типа)
1 u32 List of key-records (the first one is the primary key)
Список записей о ключах (первый - для главного ключа)
1 u32 List of uid-records -- Список записей о UID
1 u32 cache record -- запись кеша
1 байт ownertrust -- доверие владельцу
1 байт dirflag
1 байт maximum validity of all the user ids
максимальная достоверность для всех User ID
1 u32 time of last validity check.
отметка времени послдней проверки действительности
1 u32 Must check when this time has been reached.
(0 = no check required)
Нужно проверить, когда данная отметка времени устареет
(0 - ничего проверять не требуется)
Тип записи 3: (запись о ключе) (key record)
Informations about a primary public key.
(This is mainly used to lookup a trust record)
1 байт значение 3
1 байт зарезервирован
1 u32 LID
1 u32 следующая запись о ключе
7 байт зарезервированы
1 байт keyflags
1 байт алогитм шифрования открытым ключом
1 байт length of the fingerprint (in bytes)
длина отпечатка в байтах
20 байт fingerprint of the public key
(This is the value we use to identify a key)
отпечаток открытого ключа
(Значение, которое мы используем для идентификации ключа)
Тип записи 4: (запись о UID) (uid record)
Informations about a userid
We do not store the userid but the hash value of the userid because that
is sufficient.
Информация о User ID
Мы не храним User ID, но используем хеш значение User ID,
т.к. этого достаточно.
1 байт значение 4
1 байт зарезервирован
1 u32 LID
1 u32 следующая запись о User ID
1 u32 указатель на запись со списком предпочтений
1 u32 siglist list of valid signatures
siglist список действительных подписей
1 байт uidflags
1 байт validity of the key calculated over this user id
действительность ключа вычисленного для данного User ID
20 байт ripemd160 хеш данного User ID
Тип записи 5: (запись о предпочтениях) (pref record)
This record type is not anymore used.
Данная запись не используется где-либо
1 байт значение 5
1 байт зарезервирован
1 u32 LID; points to the directory record (and not to the uid record!).
(or 0 for standard preference record)
LID; указывает на запись каталога (не на UID запись!).
(0 для записи стандартных предпочтений)
1 u32 следующая запись о предпочтениях
30 байт данные о предпочтениях
Тип записи 6 (sigrec)
Used to keep track of key signatures. Self-signatures are not
stored. If a public key is not in the DB, the signature points to
a shadow dir record, which in turn has a list of records which
might be interested in this key (and the signature record here
is one).
Используется для хранения пути подписей ключа. Самоподписи
не хранятся. Если открытого ключа нет в таблице, то подпись
ссылается на запись теневого каталога, где имеется список записей,
которые возможно интересны для данного ключа (и данная запись тоже)
1 байт значение 6
1 байт зарезервирован
1 u32 LID. указатель на запись каталога
1 u32 next next sigrec of this uid or 0 to indicate the last sigrec.
следующая sigrec данного UID или 0 для последней sigrec.
6 раз
1 u32 Local_id of signatures dir or shadow dir record
Local_ID каталога подписей или записи теневого каталога
1 byte Флаг: Бит 0 = checked: Bit 1 is valid (we have a real
directory record for this)
проверено: Бит 1 действителен (мы имеем
запись каталога для данного ID)
1 = valid is set (but may be revoked)
действительность установлена (но возможно отозван)?
Тип записи 8: (запись теневого каталога) (shadow directory record)
This record is used to reserve a LID for a public key. We
need this to create the sig records of other keys, even if we
do not yet have the public key of the signature.
This record (the record number to be more precise) will be reused
as the dir record when we import the real public key.
Данная запись используется, чтобы зарезервировать LID для
открытого ключа. Нам это необходимо для создания sigrec других
ключей, даже если мы не имеем пока открытого ключа подписи.
Данная запись (точнее номер записи) будет затем использована,
как запись каталога, когда мы импортируем открытый ключ.
1 байт значение
1 байт зарезервирован
1 u32 LID
2 u32 keyid
1 байт алгоритм шифрования открытым ключом
3 байт зарезервированы
1 u32 hintlist A list of records which have references to
this key. This is used for fast access to
signature records which are not yet checked.
Note, that this is only a hint and the actual records
may not anymore hold signature records for that key
but that the code cares about this.
Список записей, которые ссылаются на данный ключ.
Используется для быстрого доступа к записям sigrec,
которые еще не проверены.
Заметьте, что на самом деле записи, указанные в
списке, могут уже не содержать sigrec для данного
ключа, но об этом позаботится?
18 byte зарезервированы
Тип записи 10 (таблица хешей) (hash table)
Due to the fact that we use fingerprints to lookup keys, we can
implement quick access by some simple hash methods, and avoid
the overhead of gdbm. A property of fingerprints is that they can be
used directly as hash values. (They can be considered as strong
random numbers.)
What we use is a dynamic multilevel architecture, which combines
hashtables, record lists, and linked lists.
В следствие того, что мы используем отпечатки ключей для их поиска,
мы можем реализовать быстрый доступ простыми хеш методами и избежать
перегрузки gdbm. Особенность отпечатков
ключей то, что они сами могут быть использованы непосредственно,
как хеш-значения. (Их можно рассматривать, как *сильные* числа).
Мы используем динамическую многоуровневую архитектуру, которая
совмещает таблицы хешей, списки записей и списки ссылок.
This record is a hashtable of 256 entries; a special property
is that all these records are stored consecutively to make one
big table. The hash value is simple the 1st, 2nd, ... byte of
the fingerprint (depending on the indirection level).
Данная запись - таблица хешей из 256 записей; особенность
в том, что все эти записи хранятся последовательно для получения
одной большой таблицы. Значение хеша это просто 1-й, 2-й, ... байты
отпечатка (основываясь на indirection level)
When used to hash shadow directory records, a different table is used
and indexed by the keyid.
Когда используется записи каталога теневых хешей, другая таблица
используется и индексируется по KeyID.
1 байт значение 10
1 байт зарезервирован
n u32 recnum; n depends on the record length:
n = (reclen-2)/4 which yields 9 for the current record length
of 40 bytes.
recnum; n вычисляется на основе длины записи:
n = (reclen-2)/4 которое равно 9 для текущей длины записи в 40 байт.
the total number of such record which makes up the table is:
m = (256+n-1) / n
which is 29 for a record length of 40.
общее число таких записей из которых состоит таблица:
m = (256+n-1) / n
которое равняется 29 для текущей длины в 40 байт.
To look up a key we use the first byte of the fingerprint to get
the recnum from this hashtable and look up the addressed record:
- If this record is another hashtable, we use 2nd byte
to index this hash table and so on.
- if this record is a hashlist, we walk all entries
until we found one a matching one.
- if this record is a key record, we compare the
fingerprint and to decide whether it is the requested key;
Для поиска ключа мы используем первый байт отпечатка для получения recnum
из данной таблицы хешей и ищем адресуемую запись:
- Если данная запись - другая таблица, мы используем второй байт как
индекс в данной хеш таблице и т.д.
- если данная запись - список хешей, мы просматриваем весь список,
до тех пор, пока мы не найдем соотвествие.
- если данная запись - запись ключа, мы сравниваем отпечаток и решаем
является ли данный ключ искомым.
Тип записи 11 (список хешей) (hash list)
см. таблицу хешей для разъяснений.
Это также используется и для других целей.
1 байт значение 11
1 байт зарезервирован
1 u32 следующий следующая запись хеш списка
n раз n = (reclen-5)/5
1 u32 recnum
Для используемой в настоящее время длины записи в 40 байт, n = 7.
Тип записи 254 (свободная запись) (free record)
All these records form a linked list of unused records.
Все эти записи являются неиспользуемыми.
1 байт значение 254
1 байт зарезервирован (0)
1 u32 следующая свободная
Packet Headers Заголовки пакета
GNUPG uses PGP 2 packet headers and also understands OpenPGP packet header. There is one enhancement used with the old style packet headers: GnuPG использует PGP 2 заголовки пакета и понимает также заголовок OpenPGP пакета. Со старым стилем заголовков пакета используется одно расширение:
CTB bits 10, the "packet-length length bits", have values listed in the following table: CTB биты 10, биты длины "packet-length", имеют ниже описанные значения:
00 - 1-byte packet-length field
01 - 2-byte packet-length field
10 - 4-byte packet-length field
11 - no packet length supplied, unknown packet length
00 - 1-байтовое поле packet-length
01 - 2-байтовое поле packet-length
10 - 4-байтовое поле packet-length
11 - не указана длина пакета, неизвестная длина пакета.
As indicated in this table, depending on the packet-length length bits, the remaining 1, 2, 4, or 0 bytes of the packet structure field are a "packet-length field". The packet-length field is a whole number field. The value of the packet-length field is defined to be the value of the whole number field. Как показано в таблице, в зависимости от битов длины packet-lenght, оставшиеся 1, 2, 4 или 0 байт поля структуры пакета это поле "packed-length". Поле packed-length - целочисленное поле. Значение поля packet-length должно быть целочисленным значением числа полей.
A value of 11 is currently used in one place: on compressed data. That is, a compressed data block currently looks like <A3 01 . . .>, where , binary 10 1000 11, is an indefinite-length packet. The proper interpretation is "until the end of the enclosing structure", although it should never appear outermost (where the enclosing structure is a file). Значение 11 в настоящее время используется в одном месте: сжатые данные. Сжатые данные в настоящее время выглядят примерно так <A3 01 . . .>, где есть двоичное <10 1000 11>, т.е. пакет неопределенной длины. Правильная интерпретация "до завершения вложенной структуры", хотя она и не является истиной в последней инстанции (где вложенная структура - файл).
- This will be changed with another version, where the new meaning of
- the value 11 (see below) will also take place.
- Это будет изменео в другой версии, где новый смысл значения 11 (см. ниже)
- будет иметь место.
- A value of 11 for other packets enables a special length encoding,
- which is used in case, where the length of the following packet can
- not be determined prior to writing the packet; especially this will
- be used if large amounts of data are processed in filter mode.
- Значение 11 для других пакетов позволяет особое кодирование длины,
- используемое в тех случаях, когда невозможно определить длину
- следующего пакета до записи пакета; это особенно будет использоваться при
- обработке большого объема данных через фильтр.
- It works like this: After the CTB (with a length field of 11) a
- marker field is used, which gives the length of the following datablock.
- This is a simple 2 byte field (MSB first) containing the amount of data
- following this field, not including this length field. After this datablock
- another length field follows, which gives the size of the next datablock.
- A value of 0 indicates the end of the packet. The maximum size of a
- data block is limited to 65534, thereby reserving a value of 0xffff for
- future extensions. These length markers must be inserted into the data
- stream just before writing the data out.
- Это работает так: После CTB (с полем длины 11) используется поле маркера,
- которое дает длину последующего блока данных. Это простое двухбайтовое поле
- (сперва MSB) содержащее объем данных следующих за этим полем, не включая
- размер самого поля. После блока данных следует другое поле длины, которое
- дает объем следующего блока данных. Значение 0 указывает на конец пакета.
- Максимальный размер блока данных ограничен 65534, этим резервируется
- значение 0xFFFF для будущих расширений. Эти маркеры длины должны быть
- внедрены в поток данных непосредственно перед записью этих данных.
- This 2 byte field is large enough, because the application must buffer
- this amount of data to prepend the length marker before writing it out.
- Data block sizes larger than about 32k doesn't make any sense. Note
- that this may also be used for compressed data streams, but we must use
- another packet version to tell the application that it can not assume,
- that this is the last packet.
- Это двухбайтовое поле достаточно большое потому, что приложение должно
- иметь буффер данного размера для хранения данных перед их выводом. Блоки
- данных больше 32К не имеет смысла делать. Учтите, что это может также
- использоваться для потоков сжатых данных, но мы должны пользоваться другой
- версией пакета, что бы указать приложению, что нельзя предполагать, что
- это последний пакет.
GNU extensions to the S2K algorithm GNU расширения в S2K алгоритме
S2K mode 101 is used to identify these extensions. After the hash algorithm the 3 bytes "GNU" are used to make clear that these are extensions for GNU, the next bytes gives the GNU protection mode - 1000. Defined modes are: S2K режим 101 импользован для идентификации данных расширений. После хеш алгоритма 3 байта "GNU" используются, что бы дать понять, что данные расширения для GNU, следующие байты дают режим защиты GNU - 1000. Определены следующие режимы: 1001 - do not store the secret part at all 1001 - не хранить секретную часть совсем 1002 - a stub to access smartcards (not used in 1.2.x) 1002 - корешок для доступа смарткарт (не используется в 1.2.x)
Pipemode Каналы
NOTE: This is deprecated and will be removed in future versions. ЗАМЕЧАНИЕ: Это устарело и будет удалено в следующих версиях.
This mode can be used to perform multiple operations with one call to gpg. It comes handy in cases where you have to verify a lot of signatures. Currently we support only detached signatures. This mode is a kludge to avoid running gpg n daemon mode and using Unix Domain Sockets to pass the data to it. There is no easy portable way to do this under Windows, so we use plain old pipes which do work well under Windows. Because there is no way to signal multiple EOFs in a pipe we have to embed control commands in the data stream: We distinguish between a data state and a control state. Initially the system is in data state but it won't accept any data. Instead it waits for transition to control state which is done by sending a single '@' character. While in control state the control command os expected and this command is just a single byte after which the system falls back to data state (but does not necesary accept data now). The simplest control command is a '@' which just inserts this character into the data stream.
Here is the format we use for detached signatures: "@<" - Begin of new stream "@B" - Detached signature follows. This emits a control packet (1,'B') <detached_signature> "@t" - Signed text follows. This emits the control packet (2, 'B') <signed_text> "@." - End of operation. The final control packet forces signature verification "@>" - End of stream
Other Notes Другие замечания
* For packet version 3 we calculate the keyids this way:
* Для пакета 3 версии мы вычисляем keyid-ы таким методом:
RSA := low 64 bits of n
нижние 64 бита n
ELGAMAL := build a v3 pubkey packet (with CTB 0x99) and calculate
a rmd160 hash value from it. This is used as the
fingerprint and the low 64 bits are the keyid.
создать v3 пакет открытого ключа (с CTB 0x99) и
вычислить rmd160 значение хеша из него. Это используется
как отпечаток и нижние 64 бита используются как KeyId.
* Revocation certificates consist only of the signature packet;
"import" knows how to handle this. The rationale behind it is
to keep them small.
Сертификаты отзыва включают только пакет подписи; "import" знает
как это обрабатывать. Целесообразно сохранять размер сертификатов
небольшим.
Keyserver Message Format Формат сообщений сервера ключей
The keyserver may be contacted by a Unix Domain socket or via TCP. Соединение с сервером ключей может производится через Unix Domain сокет или посредством TCP. The format of a request is: Формат запроса следующий:
==== command-tag Команда "Content-length:" digits CRLF
Where command-tag is Где "Команда":
NOOP GET PUT DELETE
The format of a response is: Формат ответа:
====== "GNUPG/1.0" status-code status-text "Content-length:" digits CRLF
followed by bytes of data с последующей передачей байт данных
Status codes are: Коды статуса:
o 1xx: Informational - Request received, continuing process
Информационные - Запрос принят, процесс продолжается
o 2xx: Success - The action was successfully received, understood,
and accepted
Успешно - Команда принята успешно, распознана и принята к
исполнению.
o 4xx: Client Error - The request contains bad syntax or cannot be
fulfilled
Ошибка клиента - Запрос имеет неправильный синтаксис или
не может быть выполнен.
o 5xx: Server Error - The server failed to fulfill an apparently
valid request
Ошибка сервера - Сервер дал сбой при исполнении кажущегося
правильным значением запроса.
Documentation on HKP (the http keyserver protocol): Описание HKP (протокол http сервера ключей):
A minimalistic HTTP server on port 11371 recognizes a GET for /pks/lookup. Минимальный HTTP сервер на порте 11371 понимает GET для /pks/lookup. The standard http URL encoded query parameters are this (always key=value): Стандартный http URL содержит параметры запроса (всегда ключ=значение)
-
op=index (like pgp -kv), op=vindex (like pgp -kvv) and op=get (like pgp -kxa) op=index (типа pgp -kv), op=vindex (типа pgp -kvv) и op=get (типа pgp -kxa)
-
search=. This is a list of words that must occur in the key. The words are delimited with space, points, @ and so on. The delimiters are not searched for and the order of the words doesn't matter (but see next option). search=. Это список слов, которые могжет содержать ключ. Слова разделены пробелом, точкой, @ и т.п. Разделители не ищутся и порядок слов не имеет значения (но см. следующий параметр).
-
exact=on. This switch tells the hkp server to only report exact matching keys back. In this case the order and the "delimiters" are important. exact=on. Это заставляет сервер ключей искать полные соотвествия. В данном случае порядок слов и "разделители" важны.
-
fingerprint=on. Also reports the fingerprints when used with 'index' or 'vindex' fingerprint=on. Также выдавать отпечатки, когда используется с 'index' или 'vindex'.
The keyserver also recognizes http-POSTs to /pks/add. Use this to upload keys. Сервер ключей также понимает http POST к /pks/add. Это используется для загрузки ключей на сервер.
A better way to do this would be a request like: Наилучший способ сделать это - воспользоваться запросом типа:
/pks/lookup/<gnupg_formatierte_user_id>?op=
This can be implemented using Hurd's translator mechanism. However, I think the whole key server stuff has to be re-thought; I have some ideas and probably create a white paper. Это может быть реализовано с использованием механизмов транслятора Hurd. Однако я думая, что весь материал по серверу ключей должен быть переосмыслен; у меня имеются некторые идеи и, возможно я напишу по этому поводу отдельный документ.