Bug 12177

Summary: Ошибка в выводе полей в utf8
Product: Sisyphus Reporter: Andriy Stepanov (stanv) <stanv>
Component: gnupgAssignee: placeholder <placeholder>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: glebfm, ldv, placeholder, vt
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 10416    
Attachments:
Description Flags
Исправляет ошибку none

Description Andriy Stepanov (stanv) 2007-06-28 14:38:42 MSD
В документации по gnupg указано, что поля такие как UserID могуть быть
закодированы в utf8

Также, в man 1 gpg  указано:
 --with-colons
              Print  key  listings delimited by colons. Note that the output will
              be encoded in UTF-8 regardless of  any  --display-charset  setting.
              This  format  is useful when GnuPG is called from scripts and other
              programs as it is easily machine parsed. The details of this format
              are  documented in the file `doc/DETAILS', which is included in the
              GnuPG source distribution.


т.е. поля выводится должны в utf8

Но при выводе поля искажаются.
Steps to Reproduce:
1.Сгенерировать ключ с русским UserID (gpg --gen-key)
2.Вывести $gpg --list-key --with-colons
Actual Results:  
на месте UserID будут крякозябры

Expected Results:  
UserID должен быть в utf8
Comment 1 Andriy Stepanov (stanv) 2007-06-28 14:43:47 MSD
Created attachment 2061 [details]
Исправляет ошибку

Данная ошибка была обнаружена благодаря:

https://bugzilla.altlinux.org/show_bug.cgi?id=10416
http://bugs.kde.org/show_bug.cgi?id=144368

Тоесть kgpg не отображает нормально UserId если он не в ASCII.

Проблема заключается в том, что gpg c вызовом --list-key --with-colons изменяет
так строки utf8, что они не стоновятся не правильными.

Посмотрите пожалуйста патч.
Comment 2 Dmitry V. Levin 2008-01-02 01:14:55 MSK
(In reply to comment #0)
> В документации по gnupg указано, что поля такие как UserID могуть быть
> закодированы в utf8
> 
> Также, в man 1 gpg  указано:
>  --with-colons
>               Print  key  listings delimited by colons. Note that the output will
>               be encoded in UTF-8 regardless of  any  --display-charset  setting.
>               This  format  is useful when GnuPG is called from scripts and other
>               programs as it is easily machine parsed. The details of this format
>               are  documented in the file `doc/DETAILS', which is included in the
>               GnuPG source distribution.
> 
> 
> т.е. поля выводится должны в utf8

Согласно вышеупомянутому doc/DETAILS, User-ID кодируется следующим образом:
"The value is quoted like a C string to avoid control characters" и далее по
тексту.  Не могу сказать, что авторы это хорошо придумали, результат такой
кодировки не очень удобен ни для непосредственного восприятия, ни для разбора,
однако они документировали именно такое поведение.

Если уж квотить правильно, то следовало бы заменить
*p < 0x20 || (*p >= 0x7f && *p < 0xa0)
на аналог isprint() в локали C:
*p < 0x20 || *p >= 0x7f
Comment 3 Dmitry V. Levin 2010-02-11 05:04:03 MSK
Резюмирую: код соответствует документации, если в ней прочесть то, что имели в виду авторы.  Проблемы не вижу, баг закрываю.