Changeset 52b601e in OpenSC


Ignore:
Timestamp:
06/11/11 07:33:30 (12 months ago)
Author:
Peter Marschall <peter@…>
Branches:
master, staging
Children:
12fce0f
Parents:
81aa02d
git-author:
Peter Marschall <peter@…> (06/02/11 15:46:30)
git-committer:
Peter Marschall <peter@…> (06/11/11 07:33:30)
Message:

opensc-explorer: re-factor do_apdu()

  • allow double-quoted strings besides hexdata in ADPU generation
  • detect errors in parameter parsing
  • use utility function to print bytes sent, fixing an error that only showed parts of the APDU wheni it was generated from multiple arguments

Signed-off-by: Peter Marschall <peter@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tools/opensc-explorer.c

    r81aa02d r52b601e  
    165165                "update binary"                         }, 
    166166        { do_apdu, 
    167                 "apdu", "<apdu:hex:codes:...>", 
     167                "apdu", "<data>+", 
    168168                "send a custom apdu command"            }, 
    169169        { do_asn1, 
     
    13471347        u8 buf[SC_MAX_APDU_BUFFER_SIZE]; 
    13481348        u8 rbuf[SC_MAX_APDU_BUFFER_SIZE]; 
    1349         size_t len, len0, r, ii; 
     1349        size_t len, r, i; 
    13501350 
    13511351        if (argc < 1) 
    13521352                return usage(do_apdu); 
    13531353 
    1354         for (ii = 0, len = 0; ii < (unsigned) argc; ii++)   { 
    1355                 len0 = strlen(argv[ii]); 
    1356                 sc_hex_to_bin(argv[ii], buf + len, &len0); 
     1354        for (i = 0, len = 0; i < (unsigned) argc; i++)   { 
     1355                size_t len0 = strlen(argv[i]); 
     1356 
     1357                if ((r = parse_string_or_hexdata(argv[i], buf + len, &len0)) < 0) { 
     1358                        fprintf(stderr, "error parsing %s: %s\n", argv[i], sc_strerror(r)); 
     1359                        return r; 
     1360                }; 
    13571361                len += len0; 
    13581362        } 
     
    13681372 
    13691373        printf("Sending: "); 
    1370         for (r = 0; r < len0; r++) 
    1371                 printf("%02X ", buf[r]); 
     1374        util_hex_dump(stdout, buf, len, " "); 
    13721375        printf("\n"); 
    13731376        r = sc_transmit_apdu(card, &apdu); 
Note: See TracChangeset for help on using the changeset viewer.