All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alon Levy <alevy@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@gmail.com>
Cc: mlureau@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 24/26] libcacard: move atr setting from macro to function
Date: Fri, 22 Mar 2013 15:33:02 -0400 (EDT)	[thread overview]
Message-ID: <2123552139.13535377.1363980782691.JavaMail.root@redhat.com> (raw)
In-Reply-To: <CAJ+F1CKxnGc+RQrMv3h82dfZWtcnErWs1ReZPFy7vwx+BoqHHQ@mail.gmail.com>

> Hi,
> 
> review below
> 
> On Mon, Mar 18, 2013 at 2:11 PM, Alon Levy <alevy@redhat.com> wrote:
> > Only because qemu's checkpatch complains about it.
> >
> > Signed-off-by: Alon Levy <alevy@redhat.com>
> > ---
> >  Makefile.objs              |  1 +
> >  libcacard/vcard_emul_nss.c | 11 ++++++++---
> >  libcacard/vcardt.c         | 40
> >  ++++++++++++++++++++++++++++++++++++++++
> >  libcacard/vcardt.h         | 15 ++-------------
> >  4 files changed, 51 insertions(+), 16 deletions(-)
> >  create mode 100644 libcacard/vcardt.c
> >
> > diff --git a/Makefile.objs b/Makefile.objs
> > index f99841c..6d47567 100644
> > --- a/Makefile.objs
> > +++ b/Makefile.objs
> > @@ -41,6 +41,7 @@ libcacard-y += libcacard/vcard.o
> > libcacard/vreader.o
> >  libcacard-y += libcacard/vcard_emul_nss.o
> >  libcacard-y += libcacard/vcard_emul_type.o
> >  libcacard-y += libcacard/card_7816.o
> > +libcacard-y += libcacard/vcardt.o
> >
> >  ######################################################################
> >  # Target independent part of system emulation. The long term path
> >  is to
> > diff --git a/libcacard/vcard_emul_nss.c
> > b/libcacard/vcard_emul_nss.c
> > index 21d4689..6bad0b9 100644
> > --- a/libcacard/vcard_emul_nss.c
> > +++ b/libcacard/vcard_emul_nss.c
> > @@ -519,18 +519,23 @@ vcard_emul_reader_get_slot(VReader *vreader)
> >  }
> >
> >  /*
> > - *  Card ATR's map to physical cards. VCARD_ATR_PREFIX will set
> > appropriate
> > + *  Card ATR's map to physical cards. vcard_alloc_atr will set
> > appropriate
> >   *  historical bytes for any software emulated card. The remaining
> >   bytes can be
> >   *  used to indicate the actual emulator
> >   */
> > -static const unsigned char nss_atr[] = { VCARD_ATR_PREFIX(3), 'N',
> > 'S', 'S' };
> > +static unsigned char *nss_atr;
> > +static int nss_atr_len;
> >
> >  void
> >  vcard_emul_get_atr(VCard *card, unsigned char *atr, int *atr_len)
> >  {
> > -    int len = MIN(sizeof(nss_atr), *atr_len);
> > +    int len;
> >      assert(atr != NULL);
> >
> > +    if (nss_atr == NULL) {
> > +        nss_atr = vcard_alloc_atr("NSS", &nss_atr_len);
> > +    }
> > +    len = MIN(nss_atr_len, *atr_len);
> >      memcpy(atr, nss_atr, len);
> >      *atr_len = len;
> >  }
> > diff --git a/libcacard/vcardt.c b/libcacard/vcardt.c
> > new file mode 100644
> > index 0000000..f64c343
> > --- /dev/null
> > +++ b/libcacard/vcardt.c
> > @@ -0,0 +1,40 @@
> > +#include <stdlib.h>
> > +#include <string.h>
> > +#include <glib.h>
> > +
> > +#include "libcacard/vcardt.h"
> > +
> > +/* create an ATR with appropriate historical bytes */
> > +#define ATR_TS_DIRECT_CONVENTION 0x3b
> > +#define ATR_TA_PRESENT 0x10
> > +#define ATR_TB_PRESENT 0x20
> > +#define ATR_TC_PRESENT 0x40
> > +#define ATR_TD_PRESENT 0x80
> > +
> > +unsigned char *vcard_alloc_atr(const char *postfix, int *atr_len)
> > +{
> > +    int postfix_len;
> > +    const char prefix[] = "VCARD_";
> > +    const int prefix_len = strlen(prefix);
> 
> or sizeof(prefix) -1
> 
> > +    int total_len;
> > +    unsigned char *atr;
> > +
> > +    if (postfix == NULL) {
> 
> I would make postfix mandatory.
> 
> > +        postfix_len = 0;
> > +    } else {
> > +        postfix_len = strlen(postfix);
> > +    }
> > +    total_len = 3 + prefix_len + postfix_len;
> > +    atr = g_malloc(total_len);
> > +    atr[0] = ATR_TS_DIRECT_CONVENTION;
> > +    atr[1] = ATR_TD_PRESENT + prefix_len + postfix_len;
> > +    atr[2] = 0x00;
> > +    memcpy(&atr[3], prefix, prefix_len);
> > +    if (postfix) {
> > +        memcpy(&atr[3 + prefix_len], postfix, postfix_len);
> > +    }
> > +    if (atr_len) {
> > +        *atr_len = total_len;
> > +    }
> > +    return atr;
> > +}
> > diff --git a/libcacard/vcardt.h b/libcacard/vcardt.h
> > index 3b9a619..e8e651f 100644
> > --- a/libcacard/vcardt.h
> > +++ b/libcacard/vcardt.h
> > @@ -25,19 +25,6 @@ typedef struct VCardEmulStruct VCardEmul;
> >
> >  #define MAX_CHANNEL 4
> >
> > -/* create an ATR with appropriate historical bytes */
> > -#define TS_DIRECT_CONVENTION 0x3b
> > -#define TA_PRESENT 0x10
> > -#define TB_PRESENT 0x20
> > -#define TC_PRESENT 0x40
> > -#define TD_PRESENT 0x80
> > -
> > -#define VCARD_ATR_PREFIX(size) \
> > -    TS_DIRECT_CONVENTION, \
> > -    TD_PRESENT + (6 + size), \
> > -    0x00, \
> > -    'V', 'C', 'A', 'R', 'D', '_'
> > -
> >  typedef enum {
> >      VCARD_DONE,
> >      VCARD_NEXT,
> > @@ -69,4 +56,6 @@ struct VCardBufferResponseStruct {
> >      int len;
> >  };
> >
> > +unsigned char *vcard_alloc_atr(const char *postfix, int *atr_len);
> > +
> 
> If the function is exposed in public header, it should also be
> exported (in libcacard.syms), but I am not sure it's useful for
> libcacard user.

It is purely internal, I could add a private header for this.

> 
> 
> --
> Marc-André Lureau
> 
> 

  reply	other threads:[~2013-03-22 19:33 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-18 13:10 [Qemu-devel] [PATCH 00/26] ccid and libcacard fixes for windows/mingw Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 01/26] libcacard: correct T0 historical bytes size Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 02/26] ccid-card-emul: do not crash if backend is not provided Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 03/26] ccid: make backend_enum_table "static const" and adjust users Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 04/26] ccid: declare DEFAULT_ATR table to be "static const" Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 05/26] libcacard: use system config directory for nss db on win32 Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 06/26] util: move socket_init() to osdep.c Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 07/26] build-sys: must link with -fstack-protector Alon Levy
2013-03-22 17:18   ` Paolo Bonzini
2013-03-18 13:10 ` [Qemu-devel] [PATCH 08/26] libcacard: fix mingw64 cross-compilation Alon Levy
2013-03-18 14:54   ` Paolo Bonzini
2013-03-18 13:10 ` [Qemu-devel] [PATCH 09/26] libcacard: split vscclient main() from socket reading Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 10/26] libcacard: vscclient to use QemuThread for portability Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 11/26] libcacard: teach vscclient to use GMainLoop " Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 12/26] hw/ccid-card-passthru.c: add atr check Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-22 19:31     ` Alon Levy
2013-03-18 13:10 ` [Qemu-devel] [PATCH 13/26] ccid-card-passthru, dev-smartcard-reader: add debug environment variables Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 14/26] hw/usb/dev-smartcard-reader.c: white space fixes Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 15/26] hw/usb/dev-smartcard-reader.c: nicer debug messages Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 16/26] hw/usb/dev-smartcard-reader.c: remove aborts (never triggered, but just in case) Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 17/26] hw/usb/dev-smartcard-reader.c: define structs for CCID_Parameter internals Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 18/26] hw/usb/dev-smartcard-reader.c: copy atr's protocol to ccid's parameters (adds todo's) Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-27 15:06     ` Alon Levy
2013-03-18 13:11 ` [Qemu-devel] [PATCH 19/26] hw/usb/dev-smartcard-reader.c: dwFeadvertise support for T=0 only Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 20/26] hw/usb/dev-smartcard-reader: support windows guest Alon Levy
2013-03-22 14:23   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 21/26] dev-smartcard-reader: reuse usb.h definitions Alon Levy
2013-03-22 14:22   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 22/26] libcacard/vreader: add debugging messages for apdu Alon Levy
2013-03-22 14:22   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 23/26] libcacard: change default ATR Alon Levy
2013-03-22 14:22   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 24/26] libcacard: move atr setting from macro to function Alon Levy
2013-03-22 14:22   ` Marc-André Lureau
2013-03-22 19:33     ` Alon Levy [this message]
2013-03-18 13:11 ` [Qemu-devel] [PATCH 25/26] dev-smartcard-reader: empty implementation for Mechanical (fail correctly) Alon Levy
2013-03-22 14:22   ` Marc-André Lureau
2013-03-18 13:11 ` [Qemu-devel] [PATCH 26/26] libcacard/cac.c: questionable change to single return of big switch functions Alon Levy
2013-03-22 14:22   ` Marc-André Lureau
2013-03-18 13:15 ` [Qemu-devel] [PATCH 00/26] ccid and libcacard fixes for windows/mingw Alon Levy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2123552139.13535377.1363980782691.JavaMail.root@redhat.com \
    --to=alevy@redhat.com \
    --cc=marcandre.lureau@gmail.com \
    --cc=mlureau@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.