[Spice-devel] [PATCH libcacard] options: add use_hw=removable
Jakub Jelen
jjelen at redhat.com
Mon Aug 6 10:53:00 UTC 2018
On Fri, 2018-08-03 at 12:40 +0200, marcandre.lureau at redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau at redhat.com>
>
> use_hw=yes is used to specify that libcacard will lookup pkcs11 slots
> that are both removable & hardware.
>
> Let's specify that use_hw=removable will select removable slots
> (without hardware requirement).
>
> (use_hw= should eventually be changed/aliased to pk11_slots= or
> something else)
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
> ---
> src/vcard_emul_nss.c | 25 ++++++++++++++++++-------
> 1 file changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/src/vcard_emul_nss.c b/src/vcard_emul_nss.c
> index 8a56343..99da091 100644
> --- a/src/vcard_emul_nss.c
> +++ b/src/vcard_emul_nss.c
> @@ -77,13 +77,19 @@ struct VirtualReaderOptionsStruct {
> int cert_count;
> };
>
> +enum {
> + USE_HW_NO,
> + USE_HW_YES,
> + USE_HW_REMOVABLE,
> +};
> +
> struct VCardEmulOptionsStruct {
> void *nss_db;
> VirtualReaderOptions *vreader;
> int vreader_count;
> VCardEmulType hw_card_type;
> const char *hw_type_params;
> - PRBool use_hw;
> + int use_hw;
> };
>
> static int nss_emul_init;
> @@ -811,7 +817,7 @@ static const VCardEmulOptions default_options = {
> .vreader_count = 0,
> .hw_card_type = VCARD_EMUL_CAC,
> .hw_type_params = "",
> - .use_hw = PR_TRUE
> + .use_hw = USE_HW_YES,
> };
>
>
> @@ -1037,7 +1043,8 @@ vcard_emul_init(const VCardEmulOptions
> *options)
> PK11SlotInfo *slot = module->slots[i];
>
> /* only map removable HW slots */
> - if (slot == NULL || !PK11_IsRemovable(slot) ||
> !PK11_IsHW(slot)) {
> + if (slot == NULL || !PK11_IsRemovable(slot) ||
> + (options->use_hw == USE_HW_YES && !PK11_IsHW(slot)))
> {
> continue;
> }
> if (strcmp("E-Gate 0 0", PK11_GetSlotName(slot)) == 0) {
> @@ -1235,9 +1242,12 @@ vcard_emul_options(const char *args)
> } else if (strncmp(args, "use_hw=", 7) == 0) {
> args = strip(args+7);
> if (*args == '0' || *args == 'N' || *args == 'n' ||
> *args == 'F') {
> - opts->use_hw = PR_FALSE;
> + opts->use_hw = USE_HW_NO;
> + } else if (strncmp(args, "removable", 9) == 0) {
> + opts->use_hw = USE_HW_REMOVABLE;
> + args = strip(args+9);
Is this strip really needed? After the else, we are skipping any non-
blank characters so this is practically noop.
> } else {
> - opts->use_hw = PR_TRUE;
> + opts->use_hw = USE_HW_YES;
> }
> args = find_blank(args);
> /* hw_type= */
Otherwise it looks fine.
Thanks,
--
Jakub Jelen
Software Engineer
Security Technologies
Red Hat, Inc.
More information about the Spice-devel
mailing list