]> git.zerfleddert.de Git - proxmark3-svn/blame - client/emv/emv_pk.h
Code improved for less memory
[proxmark3-svn] / client / emv / emv_pk.h
CommitLineData
d03fb293
OM
1/*
2 * libopenemv - a library to work with EMV family of smart cards
3 * Copyright (C) 2015 Dmitry Eremin-Solenikov
4 *
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.
9 *
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.
14 */
15
16#ifndef EMV_PK_H
17#define EMV_PK_H
18
19#include <stdbool.h>
20#include <stddef.h>
21
22struct emv_pk {
23 unsigned char rid[5];
24 unsigned char index;
25 unsigned char serial[3];
26 unsigned char pan[10];
27 unsigned char hash_algo;
28 unsigned char pk_algo;
29 unsigned char hash[20];
30 unsigned char exp[3];
31 size_t elen;
32 size_t mlen;
33 unsigned char *modulus;
34 unsigned int expire;
35};
36
37#define EXPIRE(yy, mm, dd) 0x ## yy ## mm ## dd
38
39struct emv_pk *emv_pk_parse_pk(char *buf);
40struct emv_pk *emv_pk_new(size_t modlen, size_t explen);
41void emv_pk_free(struct emv_pk *pk);
42char *emv_pk_dump_pk(const struct emv_pk *pk);
43bool emv_pk_verify(const struct emv_pk *pk);
44
45char *emv_pk_get_ca_pk_file(const char *dirname, const unsigned char *rid, unsigned char idx);
46char *emv_pk_get_ca_pk_rid_file(const char *dirname, const unsigned char *rid);
47struct emv_pk *emv_pk_get_ca_pk(const unsigned char *rid, unsigned char idx);
48#endif
Impressum, Datenschutz