]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/libfido2/src/iso7816.h
Import libfido2 at 'contrib/libfido2/'
[FreeBSD/FreeBSD.git] / contrib / libfido2 / src / iso7816.h
1 /*
2  * Copyright (c) 2018 Yubico AB. All rights reserved.
3  * Use of this source code is governed by a BSD-style
4  * license that can be found in the LICENSE file.
5  */
6
7 #ifndef _ISO7816_H
8 #define _ISO7816_H
9
10 #include <stdint.h>
11 #include <stdlib.h>
12
13 #include "packed.h"
14
15 #ifdef __cplusplus
16 extern "C" {
17 #endif /* __cplusplus */
18
19 PACKED_TYPE(iso7816_header_t,
20 struct iso7816_header {
21         uint8_t cla;
22         uint8_t ins;
23         uint8_t p1;
24         uint8_t p2;
25         uint8_t lc1;
26         uint8_t lc2;
27         uint8_t lc3;
28 })
29
30 PACKED_TYPE(iso7816_apdu_t,
31 struct iso7816_apdu {
32         size_t            alloc_len;
33         uint16_t          payload_len;
34         uint8_t          *payload_ptr;
35         iso7816_header_t  header;
36         uint8_t           payload[];
37 })
38
39 const unsigned char *iso7816_ptr(const iso7816_apdu_t *);
40 int iso7816_add(iso7816_apdu_t *, const void *, size_t);
41 iso7816_apdu_t *iso7816_new(uint8_t, uint8_t, uint8_t, uint16_t);
42 size_t iso7816_len(const iso7816_apdu_t *);
43 void iso7816_free(iso7816_apdu_t **);
44
45 #ifdef __cplusplus
46 } /* extern "C" */
47 #endif /* __cplusplus */
48
49 #endif /* !_ISO7816_H */