style
[RRG-proxmark3.git] / client / src / emv / emv_pk.h
blobeda5883a8071c395f841983e94ae44827fbc3ab8
1 /*
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.
16 #ifndef EMV_PK_H
17 #define EMV_PK_H
19 #include "common.h"
21 struct emv_pk {
22 unsigned char rid[5];
23 unsigned char index;
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];
29 unsigned char exp[3];
30 size_t elen;
31 size_t mlen;
32 unsigned char *modulus;
33 unsigned int expire;
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);
47 #endif