2 * libopenemv - a library to work with EMV family of smart cards
3 * Copyright (C) 2015 Dmitry Eremin-Solenikov
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
24 unsigned char serial
[3];
25 unsigned char pan
[10];
26 unsigned char hash_algo
;
27 unsigned char pk_algo
;
28 unsigned char hash
[20];
32 unsigned char *modulus
;
36 #define EXPIRE(yy, mm, dd) 0x ## yy ## mm ## dd
38 struct emv_pk
*emv_pk_parse_pk(char *buf
, size_t buflen
);
39 struct emv_pk
*emv_pk_new(size_t modlen
, size_t explen
);
40 void emv_pk_free(struct emv_pk
*pk
);
41 char *emv_pk_dump_pk(const struct emv_pk
*pk
);
42 bool emv_pk_verify(const struct emv_pk
*pk
);
44 char *emv_pk_get_ca_pk_file(const char *dirname
, const unsigned char *rid
, unsigned char idx
);
45 char *emv_pk_get_ca_pk_rid_file(const char *dirname
, const unsigned char *rid
);
46 struct emv_pk
*emv_pk_get_ca_pk(const unsigned char *rid
, unsigned char idx
);