FreeCalypso > hg > fc-pcsc-tools
annotate libcommon/atr.c @ 68:105aa3d1a494
fc-simtool write-iccid command implemented
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Mon, 15 Feb 2021 00:36:56 +0000 | 
| parents | f7145c77b7fb | 
| children | 
| rev | line source | 
|---|---|
| 0 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 #include <sys/types.h> | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 #include <stdio.h> | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 #include <stdlib.h> | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 #include <pcsclite.h> | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 #include <winscard.h> | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 #include <reader.h> | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include "cardif.h" | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 #define MAX_ATR_BYTES 33 | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 retrieve_atr() | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 { | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 u_char atrbuf[MAX_ATR_BYTES]; | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 LONG rv; | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 DWORD dwAttrLen; | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 unsigned n; | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 dwAttrLen = MAX_ATR_BYTES; | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, atrbuf, &dwAttrLen); | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 if (rv != SCARD_S_SUCCESS) { | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 fprintf(stderr, "SCardGetAttrib for ATR: %s\n", | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 pcsc_stringify_error(rv)); | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 return(-1); | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 } | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 printf("ATR:"); | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 for (n = 0; n < dwAttrLen; n++) | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 printf(" %02X", atrbuf[n]); | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 putchar('\n'); | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 return(0); | 
| 
f7145c77b7fb
starting libcommon: factored out of fc-simtool
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 } | 
