mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
gpg: Extend --key-origin to take an optional URL arg.
* g10/getkey.c (parse_key_origin): Parse appended URL. * g10/options.h (struct opt): Add field 'key_origin_url'. * g10/gpg.c (main) <aImport>: Pass that option to import_keys. * g10/import.c (apply_meta_data): Extend for file and url. * g10/keyserver.c (keyserver_fetch): Pass the url to import_keys_es_stream. -- Example: gpg --key-origin url,myscheme://bla --import FILE Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
2ca0381d07
commit
87b5421ca8
@ -2260,12 +2260,14 @@ hint to optimize its buffer allocation strategy. It is also used by
|
|||||||
the @option{--status-fd} line ``PROGRESS'' to provide a value for
|
the @option{--status-fd} line ``PROGRESS'' to provide a value for
|
||||||
``total'' if that is not available by other means.
|
``total'' if that is not available by other means.
|
||||||
|
|
||||||
@item --key-origin @var{string}
|
@item --key-origin @var{string}[,@var{url}]
|
||||||
@opindex key-origin
|
@opindex key-origin
|
||||||
gpg can track the origin of a key. Certain origins are implicitly
|
gpg can track the origin of a key. Certain origins are implicitly
|
||||||
known (e.g. keyserver, web key directory) and set. For a standard
|
known (e.g. keyserver, web key directory) and set. For a standard
|
||||||
import the origin of the keys imported can be set with this optionb.
|
import the origin of the keys imported can be set with this option.
|
||||||
To list the possible values use "help" for @var{string}.
|
To list the possible values use "help" for @var{string}. Some origins
|
||||||
|
can store an optional @var{url} argument. That URL can appended to
|
||||||
|
@var{string} after a comma.
|
||||||
|
|
||||||
@item --import-options @code{parameters}
|
@item --import-options @code{parameters}
|
||||||
@opindex import-options
|
@opindex import-options
|
||||||
|
15
g10/getkey.c
15
g10/getkey.c
@ -4325,6 +4325,11 @@ int
|
|||||||
parse_key_origin (char *string)
|
parse_key_origin (char *string)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
char *comma;
|
||||||
|
|
||||||
|
comma = strchr (string, ',');
|
||||||
|
if (comma)
|
||||||
|
*comma = 0;
|
||||||
|
|
||||||
if (!ascii_strcasecmp (string, "help"))
|
if (!ascii_strcasecmp (string, "help"))
|
||||||
{
|
{
|
||||||
@ -4338,9 +4343,19 @@ parse_key_origin (char *string)
|
|||||||
if (!ascii_strcasecmp (string, key_origin_list[i].name))
|
if (!ascii_strcasecmp (string, key_origin_list[i].name))
|
||||||
{
|
{
|
||||||
opt.key_origin = key_origin_list[i].origin;
|
opt.key_origin = key_origin_list[i].origin;
|
||||||
|
xfree (opt.key_origin_url);
|
||||||
|
opt.key_origin_url = NULL;
|
||||||
|
if (comma && comma[1])
|
||||||
|
{
|
||||||
|
opt.key_origin_url = xstrdup (comma+1);
|
||||||
|
trim_spaces (opt.key_origin_url);
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (comma)
|
||||||
|
*comma = ',';
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4515,7 +4515,7 @@ main (int argc, char **argv)
|
|||||||
opt.import_options |= IMPORT_FAST; /* fall through */
|
opt.import_options |= IMPORT_FAST; /* fall through */
|
||||||
case aImport:
|
case aImport:
|
||||||
import_keys (ctrl, argc? argv:NULL, argc, NULL,
|
import_keys (ctrl, argc? argv:NULL, argc, NULL,
|
||||||
opt.import_options, opt.key_origin, NULL);
|
opt.import_options, opt.key_origin, opt.key_origin_url);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* TODO: There are a number of command that use this same
|
/* TODO: There are a number of command that use this same
|
||||||
|
26
g10/import.c
26
g10/import.c
@ -1425,6 +1425,22 @@ apply_meta_data (kbnode_t keyblock, int origin, const char *url)
|
|||||||
if (!pk->updateurl)
|
if (!pk->updateurl)
|
||||||
return gpg_error_from_syserror ();
|
return gpg_error_from_syserror ();
|
||||||
}
|
}
|
||||||
|
else if (origin == KEYORG_FILE)
|
||||||
|
{
|
||||||
|
pk->keyorg = origin;
|
||||||
|
pk->keyupdate = curtime;
|
||||||
|
}
|
||||||
|
else if (origin == KEYORG_URL)
|
||||||
|
{
|
||||||
|
pk->keyorg = origin;
|
||||||
|
pk->keyupdate = curtime;
|
||||||
|
if (url)
|
||||||
|
{
|
||||||
|
pk->updateurl = xtrystrdup (url);
|
||||||
|
if (!pk->updateurl)
|
||||||
|
return gpg_error_from_syserror ();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (node->pkt->pkttype == PKT_USER_ID)
|
else if (node->pkt->pkttype == PKT_USER_ID)
|
||||||
{
|
{
|
||||||
@ -1458,6 +1474,16 @@ apply_meta_data (kbnode_t keyblock, int origin, const char *url)
|
|||||||
uid->keyorg = origin;
|
uid->keyorg = origin;
|
||||||
uid->keyupdate = curtime;
|
uid->keyupdate = curtime;
|
||||||
}
|
}
|
||||||
|
else if (origin == KEYORG_FILE)
|
||||||
|
{
|
||||||
|
uid->keyorg = origin;
|
||||||
|
uid->keyupdate = curtime;
|
||||||
|
}
|
||||||
|
else if (origin == KEYORG_URL)
|
||||||
|
{
|
||||||
|
uid->keyorg = origin;
|
||||||
|
uid->keyupdate = curtime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1884,7 +1884,7 @@ keyserver_fetch (ctrl_t ctrl, strlist_t urilist, int origin)
|
|||||||
stats_handle = import_new_stats_handle();
|
stats_handle = import_new_stats_handle();
|
||||||
import_keys_es_stream (ctrl, datastream, stats_handle, NULL, NULL,
|
import_keys_es_stream (ctrl, datastream, stats_handle, NULL, NULL,
|
||||||
opt.keyserver_options.import_options,
|
opt.keyserver_options.import_options,
|
||||||
NULL, NULL, origin, NULL);
|
NULL, NULL, origin, sl->d);
|
||||||
|
|
||||||
import_print_stats (stats_handle);
|
import_print_stats (stats_handle);
|
||||||
import_release_stats_handle (stats_handle);
|
import_release_stats_handle (stats_handle);
|
||||||
|
@ -266,6 +266,7 @@ struct
|
|||||||
|
|
||||||
/* The value of --key-origin. See parse_key_origin(). */
|
/* The value of --key-origin. See parse_key_origin(). */
|
||||||
int key_origin;
|
int key_origin;
|
||||||
|
char *key_origin_url;
|
||||||
|
|
||||||
int passphrase_repeat;
|
int passphrase_repeat;
|
||||||
int pinentry_mode;
|
int pinentry_mode;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user