00001
00002
00003
00004
00005
00006 #ifndef _BER_H
00007 #define _BER_H
00008
00009 struct ber_tag {
00010 const char *tag;
00011 size_t tag_len;
00012 int(*op)(const uint8_t *ptr, size_t len, void *priv);
00013 };
00014
00015 #define BER_NUM_TAGS(x) (sizeof(x)/sizeof(struct ber_tag))
00016
00017 int ber_decode(const struct ber_tag *tags, unsigned int num_tags,
00018 const uint8_t *ptr, size_t len, void *priv);
00019 size_t ber_tag_len(const uint8_t *ptr, const uint8_t *end);
00020 const uint8_t *ber_decode_tag(const uint8_t **ptr, const uint8_t *end,
00021 size_t *tag_len);
00022 size_t ber_decode_len(const uint8_t **ptr, const uint8_t *end);
00023
00024 #endif