mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-05 12:31:50 +01:00
wkd: New command --print-wkd-url for gpg-wks-client.
* tools/gpg-wks-client.c (aPrintWKDURL): New. (opts): Add option. (main): Implement. * tools/wks-util.c (wks_cmd_print_wkd_url): New. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
7a38af6a10
commit
2f3eebf186
@ -101,10 +101,14 @@ fingerprint and the mailbox separated by a space. The command
|
|||||||
@option{--remove-key} removes a key from that directory, its only
|
@option{--remove-key} removes a key from that directory, its only
|
||||||
argument is a user-id.
|
argument is a user-id.
|
||||||
|
|
||||||
The command @option{--print-wkd-hash} prints a WKD user id identifier
|
The command @option{--print-wkd-hash} prints the WKD user-id identifiers
|
||||||
and the corresponding mailbox from the user-ids given on the command
|
and the corresponding mailboxes from the user-ids given on the command
|
||||||
line or via stdin (one user-id per line).
|
line or via stdin (one user-id per line).
|
||||||
|
|
||||||
|
The command @option{--print-wkd-url} prints the URLs used to fetch the
|
||||||
|
key for the given user-ids from WKD. The meanwhile preferred format
|
||||||
|
with sub-domains is used here.
|
||||||
|
|
||||||
@command{gpg-wks-client} is not commonly invoked directly and thus it
|
@command{gpg-wks-client} is not commonly invoked directly and thus it
|
||||||
is not installed in the bin directory. Here is an example how it can
|
is not installed in the bin directory. Here is an example how it can
|
||||||
be invoked manually to check for a Web Key Directory entry for
|
be invoked manually to check for a Web Key Directory entry for
|
||||||
|
@ -62,6 +62,7 @@ enum cmd_and_opt_values
|
|||||||
aInstallKey,
|
aInstallKey,
|
||||||
aRemoveKey,
|
aRemoveKey,
|
||||||
aPrintWKDHash,
|
aPrintWKDHash,
|
||||||
|
aPrintWKDURL,
|
||||||
|
|
||||||
oGpgProgram,
|
oGpgProgram,
|
||||||
oSend,
|
oSend,
|
||||||
@ -93,6 +94,8 @@ static ARGPARSE_OPTS opts[] = {
|
|||||||
"remove a key from a directory"),
|
"remove a key from a directory"),
|
||||||
ARGPARSE_c (aPrintWKDHash, "print-wkd-hash",
|
ARGPARSE_c (aPrintWKDHash, "print-wkd-hash",
|
||||||
"Print the WKD identifier for the given user ids"),
|
"Print the WKD identifier for the given user ids"),
|
||||||
|
ARGPARSE_c (aPrintWKDURL, "print-wkd-url",
|
||||||
|
"Print the WKD URL for the given user id"),
|
||||||
|
|
||||||
ARGPARSE_group (301, ("@\nOptions:\n ")),
|
ARGPARSE_group (301, ("@\nOptions:\n ")),
|
||||||
|
|
||||||
@ -236,6 +239,7 @@ parse_arguments (ARGPARSE_ARGS *pargs, ARGPARSE_OPTS *popts)
|
|||||||
case aInstallKey:
|
case aInstallKey:
|
||||||
case aRemoveKey:
|
case aRemoveKey:
|
||||||
case aPrintWKDHash:
|
case aPrintWKDHash:
|
||||||
|
case aPrintWKDURL:
|
||||||
cmd = pargs->r_opt;
|
cmd = pargs->r_opt;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -384,13 +388,24 @@ main (int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case aPrintWKDHash:
|
case aPrintWKDHash:
|
||||||
|
case aPrintWKDURL:
|
||||||
if (!argc)
|
if (!argc)
|
||||||
err = proc_userid_from_stdin (wks_cmd_print_wkd_hash, "printing hash");
|
{
|
||||||
|
if (cmd == aPrintWKDHash)
|
||||||
|
err = proc_userid_from_stdin (wks_cmd_print_wkd_hash,
|
||||||
|
"printing WKD hash");
|
||||||
|
else
|
||||||
|
err = proc_userid_from_stdin (wks_cmd_print_wkd_url,
|
||||||
|
"printing WKD URL");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (err = delayed_err = 0; !err && argc; argc--, argv++)
|
for (err = delayed_err = 0; !err && argc; argc--, argv++)
|
||||||
{
|
{
|
||||||
|
if (cmd == aPrintWKDHash)
|
||||||
err = wks_cmd_print_wkd_hash (*argv);
|
err = wks_cmd_print_wkd_hash (*argv);
|
||||||
|
else
|
||||||
|
err = wks_cmd_print_wkd_url (*argv);
|
||||||
if (gpg_err_code (err) == GPG_ERR_INV_USER_ID)
|
if (gpg_err_code (err) == GPG_ERR_INV_USER_ID)
|
||||||
{
|
{
|
||||||
/* Diagnostic already printed. */
|
/* Diagnostic already printed. */
|
||||||
|
@ -104,6 +104,7 @@ gpg_error_t wks_compute_hu_fname (char **r_fname, const char *addrspec);
|
|||||||
gpg_error_t wks_cmd_install_key (const char *fname, const char *userid);
|
gpg_error_t wks_cmd_install_key (const char *fname, const char *userid);
|
||||||
gpg_error_t wks_cmd_remove_key (const char *userid);
|
gpg_error_t wks_cmd_remove_key (const char *userid);
|
||||||
gpg_error_t wks_cmd_print_wkd_hash (const char *userid);
|
gpg_error_t wks_cmd_print_wkd_hash (const char *userid);
|
||||||
|
gpg_error_t wks_cmd_print_wkd_url (const char *userid);
|
||||||
|
|
||||||
|
|
||||||
/*-- wks-receive.c --*/
|
/*-- wks-receive.c --*/
|
||||||
|
@ -1104,7 +1104,7 @@ wks_cmd_remove_key (const char *userid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Print the WKD hash for the user ids to stdout. */
|
/* Print the WKD hash for the user id to stdout. */
|
||||||
gpg_error_t
|
gpg_error_t
|
||||||
wks_cmd_print_wkd_hash (const char *userid)
|
wks_cmd_print_wkd_hash (const char *userid)
|
||||||
{
|
{
|
||||||
@ -1121,3 +1121,28 @@ wks_cmd_print_wkd_hash (const char *userid)
|
|||||||
xfree (addrspec);
|
xfree (addrspec);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Print the WKD URL for the user id to stdout. */
|
||||||
|
gpg_error_t
|
||||||
|
wks_cmd_print_wkd_url (const char *userid)
|
||||||
|
{
|
||||||
|
gpg_error_t err;
|
||||||
|
char *addrspec, *fname;
|
||||||
|
char *domain;
|
||||||
|
|
||||||
|
err = wks_fname_from_userid (userid, 1, &fname, &addrspec);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
domain = strchr (addrspec, '@');
|
||||||
|
if (domain)
|
||||||
|
*domain++ = 0;
|
||||||
|
|
||||||
|
es_printf ("https://openpgpkey.%s/.well-known/openpgpkey/%s/hu/%s?l=%s\n",
|
||||||
|
domain, domain, fname, addrspec);
|
||||||
|
|
||||||
|
xfree (fname);
|
||||||
|
xfree (addrspec);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user