add: emv json file (@merlokk)

chg: compiler warning
This commit is contained in:
Chris 2018-11-05 17:48:58 +01:00
parent 3e7d9fde01
commit e60d4b3892
3 changed files with 65 additions and 11 deletions

58
client/emv/defparams.json Normal file
View file

@ -0,0 +1,58 @@
[
{
"name": "Transaction Date",
"tag": "9A",
"value": "00 00 00",
"length": 3,
"hint": "format: YYMMDD"
},
{
"name": "Transaction Type",
"tag": "9C",
"value": "00",
"length": 1,
"hint": "00: Goods and service, 01: Cash"
},
{
"name": "Amount, authorized",
"tag": "9F 02",
"value": "00 00 00 00 01 00",
"length": 6,
"hint": "amount (numberic) in cents"
},
{
"name": "Transaction Currency Code",
"tag": "5F 2A",
"value": "09 80",
"length": 2,
"hint": "USD 840, EUR 978, RUB 643, RUR 810(old), UAH 980, AZN 031, n/a 999"
},
{
"name": "Terminal Country Code",
"tag": "9F 1A",
"value": "72 75",
"length": 2,
"hint": "ISO3166: de, en (65 6e), uk(75 6b), ru (72 75), us, ua"
},
{
"name": "Terminal Transaction Qualifiers (TTQ)",
"tag": "9F 66",
"value": "26 00 00 00",
"length": 4,
"hint": "qVSDC 26 00 00 00, gen AC from GPO 26 80 00 00, MSD 86 00 00 00, VSDC 46 00 00 00"
},
{
"name": "Unpredictable Number",
"tag": "9F 37",
"value": "01 02 03 04",
"length": 4,
"hint": "4 byte random number"
},
{
"name": "Unpredictable Number (MSD for UDOL)",
"tag": "9F 6A",
"value": "01 02 03 05",
"length": 4,
"hint": "4 byte random number"
}
]

View file

@ -353,15 +353,13 @@ static void emv_tag_dump_dol(const struct tlv *tlv, const struct emv_tag *tag, F
} }
} }
static void emv_tag_dump_string(const struct tlv *tlv, const struct emv_tag *tag, FILE *f, int level) static void emv_tag_dump_string(const struct tlv *tlv, const struct emv_tag *tag, FILE *f, int level){
{
fprintf(f, "\tString value '"); fprintf(f, "\tString value '");
fwrite(tlv->value, 1, tlv->len, f); fwrite(tlv->value, 1, tlv->len, f);
fprintf(f, "'\n"); fprintf(f, "'\n");
} }
static unsigned long emv_value_numeric(const struct tlv *tlv, unsigned start, unsigned end) static unsigned long emv_value_numeric(const struct tlv *tlv, unsigned start, unsigned end) {
{
unsigned long ret = 0; unsigned long ret = 0;
int i; int i;
@ -391,14 +389,12 @@ static unsigned long emv_value_numeric(const struct tlv *tlv, unsigned start, un
return ret; return ret;
} }
static void emv_tag_dump_numeric(const struct tlv *tlv, const struct emv_tag *tag, FILE *f, int level) static void emv_tag_dump_numeric(const struct tlv *tlv, const struct emv_tag *tag, FILE *f, int level) {
{
PRINT_INDENT(level); PRINT_INDENT(level);
fprintf(f, "\tNumeric value %lu\n", emv_value_numeric(tlv, 0, tlv->len * 2)); fprintf(f, "\tNumeric value %" PRIu32 " \n", emv_value_numeric(tlv, 0, tlv->len * 2));
} }
static void emv_tag_dump_yymmdd(const struct tlv *tlv, const struct emv_tag *tag, FILE *f, int level) static void emv_tag_dump_yymmdd(const struct tlv *tlv, const struct emv_tag *tag, FILE *f, int level) {
{
PRINT_INDENT(level); PRINT_INDENT(level);
fprintf(f, "\tDate: 20%02ld.%ld.%ld\n", fprintf(f, "\tDate: 20%02ld.%ld.%ld\n",
emv_value_numeric(tlv, 0, 2), emv_value_numeric(tlv, 0, 2),
@ -406,8 +402,7 @@ static void emv_tag_dump_yymmdd(const struct tlv *tlv, const struct emv_tag *tag
emv_value_numeric(tlv, 4, 6)); emv_value_numeric(tlv, 4, 6));
} }
static uint32_t emv_get_binary(const unsigned char *S) static uint32_t emv_get_binary(const unsigned char *S) {
{
return (S[0] << 24) | (S[1] << 16) | (S[2] << 8) | (S[3] << 0); return (S[0] << 24) | (S[1] << 16) | (S[2] << 8) | (S[3] << 0);
} }

View file

@ -18,6 +18,7 @@
#include "tlv.h" #include "tlv.h"
#include <stdio.h> #include <stdio.h>
#include <inttypes.h>
// AC // AC
# define EMVAC_AC_MASK 0xC0 # define EMVAC_AC_MASK 0xC0