mirror of
git://git.gnupg.org/gnupg.git
synced 2025-04-17 15:44:34 +02:00
scd:p15: Read certificates in extended mode.
* scd/app-p15.c (readcert_by_cdf): Allow reading in extended mode. * scd/app-common.h (app_get_slot): New. -- Signed-off-by: Werner Koch <wk@gnupg.org> (Back ported from master) Added app_get_slot.
This commit is contained in:
parent
64142caafe
commit
368f006a28
@ -119,6 +119,19 @@ struct app_ctx_s {
|
|||||||
} fnc;
|
} fnc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Helper to get the slot from an APP object. */
|
||||||
|
static inline int
|
||||||
|
app_get_slot (app_t app)
|
||||||
|
{
|
||||||
|
/* Note that this is a similar function of the one in 2.3 which we
|
||||||
|
* use to make back porting easier. */
|
||||||
|
if (app)
|
||||||
|
return app->slot;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-- app-help.c --*/
|
/*-- app-help.c --*/
|
||||||
unsigned int app_help_count_bits (const unsigned char *a, size_t len);
|
unsigned int app_help_count_bits (const unsigned char *a, size_t len);
|
||||||
gpg_error_t app_help_get_keygrip_string (ksba_cert_t cert, char *hexkeygrip);
|
gpg_error_t app_help_get_keygrip_string (ksba_cert_t cert, char *hexkeygrip);
|
||||||
|
@ -659,6 +659,8 @@ read_ef_odf (app_t app, unsigned short odf_fid)
|
|||||||
app->app_local->home_df = home_df;
|
app->app_local->home_df = home_df;
|
||||||
log_info ("p15: application directory detected as 0x%04hX\n",
|
log_info ("p15: application directory detected as 0x%04hX\n",
|
||||||
home_df);
|
home_df);
|
||||||
|
/* We assume that direct path selection is possible. */
|
||||||
|
app->app_local->direct_path_selection = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We only allow a full path if all files are at the same
|
/* We only allow a full path if all files are at the same
|
||||||
@ -2713,7 +2715,8 @@ readcert_by_cdf (app_t app, cdf_object_t cdf,
|
|||||||
if (err)
|
if (err)
|
||||||
goto leave;
|
goto leave;
|
||||||
|
|
||||||
err = iso7816_read_binary (app->slot, cdf->off, cdf->len, &buffer, &buflen);
|
err = iso7816_read_binary_ext (app_get_slot (app), 1, cdf->off, cdf->len,
|
||||||
|
&buffer, &buflen);
|
||||||
if (!err && (!buflen || *buffer == 0xff))
|
if (!err && (!buflen || *buffer == 0xff))
|
||||||
err = gpg_error (GPG_ERR_NOT_FOUND);
|
err = gpg_error (GPG_ERR_NOT_FOUND);
|
||||||
if (err)
|
if (err)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user