Andrey is only mentioning that the URL to the public key is 'bad'.
What the validation process does is:
1. Extract the actually public key fingerprint used to sign the envelope from the signature (not looking at the public key yet)
2. We then search for the public key in a variety ways. The easiest and most efficient method is to first use the key server services built into gnupg, which by default I believe is the sks pool (might be others, but most of the OpenPGP key servers are
interconnected). Unless you did not submit your key to one of the major public key servers, the system generally finds the public key in this manner about 90% of the time. If the key is not found in the first attempt, we then use the public_key_location field
in the envelope to fetch as a last resort. In most cases it's possible we don't get to this step ever. (FYI: Public keys can exist safely in a volatile environment, as long as you have the fingerprint, no 2 public keys are identical and cannot me modified
without modifying the fingerprint).
3. Once we get the key for the fingerprint of the replacement document. We validate to ensure that signature is valid against the signed content. If it's valid then, a look to see if it's a replacement then proceed.
4. If it's a replacement, we look for all the matching doc_ID's specified… validate that the fingerprints from both signatures match. As long as the two match, then a tombstone is created by updating the existing doc_ID specified in the replaces field.
If the specified doc_ID doesn't exist… we just create a tombstone for the missing doc_ID.
Following this procedure, it is possible to specify a "junk" key location and the envelope still validate, provided the public key is found some other way. The server does indeed cache public keys, so if validation ever fetched the public key previously
- it won't ever go out and get it again from the network.