OpenCT
0.6.20
openct
tlv.h
1
/*
2
* Handle TLV encoded data
3
*
4
* Copyright (C) 2003, Olaf Kirch <okir@suse.de>
5
*/
6
7
#ifndef OPENCT_TLV_H
8
#define OPENCT_TLV_H
9
10
#ifdef __cplusplus
11
extern
"C"
{
12
#endif
13
14
#include <openct/protocol.h>
15
#include <openct/buffer.h>
16
17
typedef
unsigned
char
ifd_tag_t;
18
19
typedef
struct
ct_tlv_parser
{
20
unsigned
char
use_large_tags;
21
unsigned
char
* val[256];
22
unsigned
int
len[256];
23
}
ct_tlv_parser_t
;
24
25
typedef
struct
ct_tlv_builder
{
26
int
error;
27
unsigned
char
use_large_tags;
28
ct_buf_t
* buf;
29
unsigned
int
len;
30
unsigned
char
* lenp;
31
}
ct_tlv_builder_t
;
32
33
extern
int
ct_tlv_parse(
ct_tlv_parser_t
*,
ct_buf_t
*);
34
/* ct_tlv_get return 0 == not there, 1 == there */
35
extern
int
ct_tlv_get_int(
ct_tlv_parser_t
*,
36
ifd_tag_t,
unsigned
int
*);
37
extern
int
ct_tlv_get_string(
ct_tlv_parser_t
*,
38
ifd_tag_t,
char
*,
size_t
);
39
extern
int
ct_tlv_get_opaque(
ct_tlv_parser_t
*,
40
ifd_tag_t,
unsigned
char
**,
size_t
*);
41
/* or number of bytes */
42
extern
int
ct_tlv_get_bytes(
ct_tlv_parser_t
*,
43
ifd_tag_t,
void
*,
size_t
);
44
45
extern
void
ct_tlv_builder_init(
ct_tlv_builder_t
*,
ct_buf_t
*,
int
);
46
extern
void
ct_tlv_put_int(
ct_tlv_builder_t
*,
47
ifd_tag_t,
unsigned
int
);
48
extern
void
ct_tlv_put_string(
ct_tlv_builder_t
*,
49
ifd_tag_t,
const
char
*);
50
extern
void
ct_tlv_put_opaque(
ct_tlv_builder_t
*, ifd_tag_t,
51
const
unsigned
char
*,
size_t
);
52
extern
void
ct_tlv_put_tag(
ct_tlv_builder_t
*, ifd_tag_t);
53
extern
void
ct_tlv_add_byte(
ct_tlv_builder_t
*,
unsigned
char
);
54
extern
void
ct_tlv_add_bytes(
ct_tlv_builder_t
*,
55
const
unsigned
char
*,
size_t
);
56
57
#ifdef __cplusplus
58
}
59
#endif
60
61
#endif
/* OPENCT_TLV_H */
ct_tlv_parser
Definition:
tlv.h:19
ct_buf
Definition:
buffer.h:16
ct_tlv_builder
Definition:
tlv.h:25
libp11, Copyright (C) 2005 Olaf Kirch <okir@lst.de>