[openpgp] Re: HKP draft TODO items

Blue Dog <[email protected]> Sun, 24 May 2026 12:11:38 +0800
Newsgroups gmane.ietf.openpgp
Message-ID <CAK08nYZq=_-9d9tvC0j_xJb82+_8-v6f9+4pdCcEU8b-K0A1gQ@mail.gmail.com>
--===============8629991382371908015==
Content-Type: multipart/alternative; boundary="0000000000000e47fa06528876d3"

--0000000000000e47fa06528876d3
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Andrew,

Thanks for opening these so quickly. I took a first pass through !7, !8,
and !9.

On the 400 versus 404 question: the main case I had in mind is client
diagnostics and interoperability testing, not discovery of server contents.

If the path is syntactically invalid, say a missing version component, a
non-hex character, an odd-length fingerprint, or a component with the wrong
length, a 400-class response lets a client distinguish =E2=80=9CI built the=
 request
wrong=E2=80=9D from =E2=80=9Cthe request was well formed but did not match =
anything.=E2=80=9D It
also makes conformance tests cleaner, because malformed-path tests can have
a clear expected outcome that is separate from normal negative lookup tests=
.

By contrast, if the request is syntactically valid but there is no matching
certificate, 404 seems like the right result. I would also be comfortable
treating a syntactically valid but unsupported key version as a lookup
miss, unless the draft wants to make unsupported-version handling more
explicit.

I would not make this a hill to die on. A SHOULD-level rule, or even a
short implementation note, would be enough. For example:

A keyserver SHOULD return 400 Bad Request for syntactically invalid v2
lookup paths, such as malformed hexadecimal components or
version/fingerprint components of the wrong length. A syntactically valid
lookup that has no matching result SHOULD be treated as a lookup miss.

!7 looks consistent with the intent of making the Legacy API normative only
for implementations that explicitly support it.

!9 also looks good overall. Two small things to check:

   - for the new application/pgp media type, should the IANA template
say Encoding
   considerations: binary rather than none, since the type is defined for
   binary OpenPGP data?
   - for the updated application/pgp-keys registration, Interoperability
   considerations: none may be a little strong given the mixed-keyring
   compatibility discussion nearby. It might be enough to point back to tha=
t
   section, or mention that legacy implementations may vary in how they
   process detached revocations.

Happy to take another look once the JSON response text or examples land.

Best,

Songbo Bu

--0000000000000e47fa06528876d3
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><p>Hi Andrew,</p>
<p>Thanks for opening these so quickly. I took a first pass through !7, !8,=
 and !9.</p>
<p>On the 400 versus 404 question: the main case I had in mind is client di=
agnostics and interoperability testing, not discovery of server contents.</=
p>
<p>If the path is syntactically invalid, say a missing version component, a=
 non-hex character, an odd-length fingerprint, or a component with the wron=
g length, a 400-class response lets a client distinguish =E2=80=9CI built t=
he request wrong=E2=80=9D from =E2=80=9Cthe request was well formed but did=
 not match anything.=E2=80=9D It also makes conformance tests cleaner, beca=
use malformed-path tests can have a clear expected outcome that is separate=
 from normal negative lookup tests.</p>
<p>By contrast, if the request is syntactically valid but there is no match=
ing certificate, 404 seems like the right result. I would also be comfortab=
le treating a syntactically valid but unsupported key version as a lookup m=
iss, unless the draft wants to make unsupported-version handling more expli=
cit.</p>
<p>I would not make this a hill to die on. A SHOULD-level rule, or even a s=
hort implementation note, would be enough. For example:</p>
<blockquote>
<p>A keyserver SHOULD return 400 Bad Request for syntactically invalid v2 l=
ookup paths, such as malformed hexadecimal components or version/fingerprin=
t components of the wrong length. A syntactically valid lookup that has no =
matching result SHOULD be treated as a lookup miss.</p>
</blockquote>
<p>!7 looks consistent with the intent of making the Legacy API normative o=
nly for implementations that explicitly support it.</p>
<p>!9 also looks good overall. Two small things to check:</p>
<ul>
<li>for the new <code>application/pgp</code> media type, should the IANA te=
mplate say <code>Encoding considerations: binary</code> rather than <code>n=
one</code>, since the type is defined for binary OpenPGP data?</li>
<li>for the updated <code>application/pgp-keys</code> registration, <code>I=
nteroperability considerations: none</code> may be a little strong given th=
e mixed-keyring compatibility discussion nearby. It might be enough to poin=
t back to that section, or mention that legacy implementations may vary in =
how they process detached revocations.</li>
</ul>
<p>Happy to take another look once the JSON response text or examples land.=
</p>
<p>Best,</p>
<p>Songbo Bu</p>
</div>

--0000000000000e47fa06528876d3--


--===============8629991382371908015==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kb3BlbnBncCBt
YWlsaW5nIGxpc3QgLS0gb3BlbnBncEBpZXRmLm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVt
YWlsIHRvIG9wZW5wZ3AtbGVhdmVAaWV0Zi5vcmcK

--===============8629991382371908015==--