[mew-dist 27584] Re: gpgsm
Takuya Mori
moritaku at example.com
2007年 2月 27日 (火) 23:05:39 JST
山本様、飯塚様、お世話になっております。
森です。
> > 結局これは、GnuPG 2 のバグだと思っていいですか?
結論から申しますと私は GnuPG 2 のバグと考えております。
> 当方の証明書はEMailタグのアドレスが#16進でエンコードされており、"、"で
> terminateされておりますが、gpgsmの問題で#で始まると#で終わるコーデイ
> ングされており、従ってこのあたりのほぼ全員がうまくいかなかったらしい、こ
> れはX.509?RFC?とも実装が異なっているらしい、先のはこれを直すpatchらし
> く、故にBugなんじゃないか?と聞いておりますが、どうしたら良いか....
以下に詳細に説明致します。
# すみません、簡単に説明したまま放っておいてしまいました > 飯塚様
kbx/keybox-blob.c の
static char *
x509_email_kludge (const char *name)
ですが、
ソースコード中のコメントによれば DN 中の email アドレスを抽出し、
新たに割り当てた文字列として返却するとあります。
DN 中から OID: 1.2.840.113549.1.9.1 (e-mailAddress) の
AttributeType を持つ AttributeTypeAndValue の AttributeValue
を抽出しようとしております。
RFC 4514 によれば、この場合の AttributeValue は '#' で始まる
16 進 OCTET 列を表す文字列であるとされてます(2.4 章)。
2.1 章、2.2 章によれば、AttributeTypeAndValue は、'+'、','
または終端文字であることが分かります。それ以外の文字の出現は
仕様違反と考えます。
GnuPG 2 の実装は、'#' で始まる 16 進 OCTET 列を表す文字列の
文字列末を探す。文字列長が 0 、あるいは文字列末の次の文字が、
'#' 以外であれば、有効な値が見付からなかったとして NULL を
返却。この '#' 以外であればと言うのがバグです。なぜなら、
終端は、'+'、','または終端文字のいずれかだからです。
仕様を厳格に解釈すれば、'+'、','、終端文字かをチェックするよ
う修正すべきです。私が先日送付したパッチは、終端文字をチェッ
クせず、文字列長が 0 であれば、NULL を返却します。
上記を gnupg の ML に報告しようと思っております。
----
Takuya Mori
moritaku at example.com / tk-mori at example.com
System Platform Software Development Division
NEC Corporation, Tokyo Japan
Mew-dist メーリングリストの案内