mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: Add sub-command "factory-reset" to --card-edit.
* common/util.h (GPG_ERR_OBJ_TERM_STATE): New. * scd/iso7816.c (map_sw): Add this error code. * scd/app-openpgp.c (do_getattr): Return the life cycle indicator. * scd/app.c (select_application): Allow a return value of GPG_ERR_OBJ_TERM_STATE. * scd/scdaemon.c (set_debug): Print the DBG_READER value. * g10/call-agent.c (start_agent): Print a status line for the termination state. (agent_scd_learn): Make arg "info" optional. (agent_scd_apdu): New. * g10/card-util.c (send_apdu): New. (factory_reset): New. (card_edit): Add command factory-reset. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
fc9a35d2de
commit
dd65e21cb4
10 changed files with 252 additions and 15 deletions
|
@ -53,7 +53,7 @@ enum {
|
|||
SW_CLA_NOT_SUP = 0x6e00,
|
||||
SW_SUCCESS = 0x9000,
|
||||
|
||||
/* The follwoing statuswords are no real ones but used to map host
|
||||
/* The following statuswords are no real ones but used to map host
|
||||
OS errors into status words. A status word is 16 bit so that
|
||||
those values can't be issued by a card. */
|
||||
SW_HOST_OUT_OF_CORE = 0x10001, /* No way yet to differentiate
|
||||
|
|
|
@ -1073,10 +1073,10 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name)
|
|||
}
|
||||
if (table[idx].special == -2)
|
||||
{
|
||||
char tmp[100];
|
||||
char tmp[110];
|
||||
|
||||
snprintf (tmp, sizeof tmp,
|
||||
"gc=%d ki=%d fc=%d pd=%d mcl3=%u aac=%d sm=%d",
|
||||
"gc=%d ki=%d fc=%d pd=%d mcl3=%u aac=%d sm=%d si=%u",
|
||||
app->app_local->extcap.get_challenge,
|
||||
app->app_local->extcap.key_import,
|
||||
app->app_local->extcap.change_force_chv,
|
||||
|
@ -1085,7 +1085,8 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name)
|
|||
app->app_local->extcap.algo_attr_change,
|
||||
(app->app_local->extcap.sm_supported
|
||||
? (app->app_local->extcap.sm_aes128? 7 : 2)
|
||||
: 0));
|
||||
: 0),
|
||||
app->app_local->status_indicator);
|
||||
send_status_info (ctrl, table[idx].name, tmp, strlen (tmp), NULL, 0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -389,7 +389,7 @@ select_application (ctrl_t ctrl, int slot, const char *name, app_t *r_app)
|
|||
err = app_select_dinsig (app);
|
||||
if (err && is_app_allowed ("sc-hsm") && (!name || !strcmp (name, "sc-hsm")))
|
||||
err = app_select_sc_hsm (app);
|
||||
if (err && name)
|
||||
if (err && name && gpg_err_code (err) != GPG_ERR_OBJ_TERM_STATE)
|
||||
err = gpg_error (GPG_ERR_NOT_SUPPORTED);
|
||||
|
||||
leave:
|
||||
|
|
|
@ -64,7 +64,7 @@ map_sw (int sw)
|
|||
switch (sw)
|
||||
{
|
||||
case SW_EEPROM_FAILURE: ec = GPG_ERR_HARDWARE; break;
|
||||
case SW_TERM_STATE: ec = GPG_ERR_CARD; break;
|
||||
case SW_TERM_STATE: ec = GPG_ERR_OBJ_TERM_STATE; break;
|
||||
case SW_WRONG_LENGTH: ec = GPG_ERR_INV_VALUE; break;
|
||||
case SW_SM_NOT_SUP: ec = GPG_ERR_NOT_SUPPORTED; break;
|
||||
case SW_CC_NOT_SUP: ec = GPG_ERR_NOT_SUPPORTED; break;
|
||||
|
|
|
@ -344,7 +344,7 @@ set_debug (const char *level)
|
|||
gcry_control (GCRYCTL_SET_VERBOSITY, (int)opt.verbose);
|
||||
|
||||
if (opt.debug)
|
||||
log_info ("enabled debug flags:%s%s%s%s%s%s%s%s%s\n",
|
||||
log_info ("enabled debug flags:%s%s%s%s%s%s%s%s%s%s\n",
|
||||
(opt.debug & DBG_COMMAND_VALUE)? " command":"",
|
||||
(opt.debug & DBG_MPI_VALUE )? " mpi":"",
|
||||
(opt.debug & DBG_CRYPTO_VALUE )? " crypto":"",
|
||||
|
@ -353,7 +353,8 @@ set_debug (const char *level)
|
|||
(opt.debug & DBG_MEMSTAT_VALUE)? " memstat":"",
|
||||
(opt.debug & DBG_HASHING_VALUE)? " hashing":"",
|
||||
(opt.debug & DBG_ASSUAN_VALUE )? " assuan":"",
|
||||
(opt.debug & DBG_CARD_IO_VALUE)? " cardio":"");
|
||||
(opt.debug & DBG_CARD_IO_VALUE)? " cardio":"",
|
||||
(opt.debug & DBG_READER_VALUE )? " reader":"");
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue