12#ifndef __PACKET_BER_H__
13#define __PACKET_BER_H__
18#include "ws_symbol_export.h"
29#define BER_CLASS_UNI 0
30#define BER_CLASS_APP 1
31#define BER_CLASS_CON 2
32#define BER_CLASS_PRI 3
33#define BER_CLASS_ANY 99
35#define BER_UNI_TAG_EOC 0
36#define BER_UNI_TAG_BOOLEAN 1
37#define BER_UNI_TAG_INTEGER 2
38#define BER_UNI_TAG_BITSTRING 3
39#define BER_UNI_TAG_OCTETSTRING 4
40#define BER_UNI_TAG_NULL 5
41#define BER_UNI_TAG_OID 6
42#define BER_UNI_TAG_ObjectDescriptor 7
43#define BER_UNI_TAG_EXTERNAL 8
44#define BER_UNI_TAG_REAL 9
45#define BER_UNI_TAG_ENUMERATED 10
46#define BER_UNI_TAG_EMBEDDED_PDV 11
47#define BER_UNI_TAG_UTF8String 12
48#define BER_UNI_TAG_RELATIVE_OID 13
53#define BER_UNI_TAG_SEQUENCE 16
54#define BER_UNI_TAG_SET 17
56#define BER_UNI_TAG_NumericString 18
57#define BER_UNI_TAG_PrintableString 19
58#define BER_UNI_TAG_TeletexString 20
59#define BER_UNI_TAG_VideotexString 21
60#define BER_UNI_TAG_IA5String 22
62#define BER_UNI_TAG_UTCTime 23
63#define BER_UNI_TAG_GeneralizedTime 24
65#define BER_UNI_TAG_GraphicString 25
66#define BER_UNI_TAG_VisibleString 26
67#define BER_UNI_TAG_GeneralString 27
68#define BER_UNI_TAG_UniversalString 28
69#define BER_UNI_TAG_CHARACTERSTRING 29
70#define BER_UNI_TAG_BMPString 30
79WS_DLL_PUBLIC
int get_ber_identifier(
tvbuff_t *tvb,
int offset, int8_t *ber_class,
bool *pc, int32_t *tag);
80WS_DLL_PUBLIC
int dissect_ber_identifier(
packet_info *pinfo,
proto_tree *tree,
tvbuff_t *tvb,
int offset, int8_t *ber_class,
bool *pc, int32_t *tag);
85WS_DLL_PUBLIC
int get_ber_length(
tvbuff_t *tvb,
int offset, uint32_t *length,
bool *ind);
88WS_DLL_PUBLIC
int dissect_ber_tagged_type(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id, int8_t tag_cls, int32_t tag_tag,
bool tag_impl, ber_type_fn type);
90extern int dissect_ber_constrained_octet_string(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset, int32_t min_len, int32_t max_len,
int hf_id,
tvbuff_t **out_tvb);
92WS_DLL_PUBLIC
int dissect_ber_octet_string_with_encoding(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id,
tvbuff_t **out_tvb,
unsigned encoding);
93extern int dissect_ber_octet_string_wcb(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id, ber_callback func);
95WS_DLL_PUBLIC
int dissect_ber_integer64(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id, int64_t *value);
96extern int dissect_ber_constrained_integer64(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset, int64_t min_len, int64_t max_len,
int hf_id, int64_t *value);
98WS_DLL_PUBLIC
int dissect_ber_integer(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id, uint32_t *value);
99extern int dissect_ber_constrained_integer(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset, int32_t min_len, int32_t max_len,
int hf_id, uint32_t *value);
103WS_DLL_PUBLIC
int dissect_ber_boolean(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id,
bool *value);
104WS_DLL_PUBLIC
int dissect_ber_real(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id,
double *value);
106extern int dissect_ber_external_type(
bool implicit_tag,
proto_tree *parent_tree,
tvbuff_t *tvb,
int offset,
asn1_ctx_t *actx,
int hf_id, ber_callback func);
107WS_DLL_PUBLIC
int dissect_ber_EmbeddedPDV_Type(
bool implicit_tag,
proto_tree *parent_tree,
tvbuff_t *tvb,
int offset,
asn1_ctx_t *actx,
int hf_id, ber_callback func);
109#define BER_FLAGS_OPTIONAL 0x00000001
110#define BER_FLAGS_IMPLTAG 0x00000002
111#define BER_FLAGS_NOOWNTAG 0x00000004
112#define BER_FLAGS_NOTCHKTAG 0x00000008
145extern int dissect_ber_constrained_restricted_string(
bool implicit_tag, int32_t type,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset, int32_t min_len, int32_t max_len,
int hf_id,
tvbuff_t **out_tvb);
147extern int dissect_ber_GeneralString(
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id,
char *name_string,
unsigned name_len);
153WS_DLL_PUBLIC
int dissect_ber_object_identifier_str(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id,
const char **value_stringx);
158WS_DLL_PUBLIC
int dissect_ber_relative_oid_str(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id,
const char **value_stringx);
162extern int dissect_ber_constrained_sequence_of(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *parent_tree,
tvbuff_t *tvb,
int offset, int32_t min_len, int32_t max_len,
const ber_sequence_t *seq,
int hf_id,
int ett_id);
165extern int dissect_ber_constrained_set_of(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *parent_tree,
tvbuff_t *tvb,
int offset, int32_t min_len, int32_t max_len,
const ber_sequence_t *seq,
int hf_id,
int ett_id);
168WS_DLL_PUBLIC
int dissect_ber_GeneralizedTime(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id);
170WS_DLL_PUBLIC
int dissect_ber_UTCTime(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *tree,
tvbuff_t *tvb,
int offset,
int hf_id,
char **datestrptr, uint32_t *tvblen);
172extern int dissect_ber_constrained_bitstring(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *parent_tree,
tvbuff_t *tvb,
int offset, int32_t min_len, int32_t max_len,
int *
const *named_bits,
int num_named_bits,
int hf_id,
int ett_id,
tvbuff_t **out_tvb);
173WS_DLL_PUBLIC
int dissect_ber_bitstring(
bool implicit_tag,
asn1_ctx_t *actx,
proto_tree *parent_tree,
tvbuff_t *tvb,
int offset,
int *
const *named_bits,
int num_named_bits,
int hf_id,
int ett_id,
tvbuff_t **out_tvb);
178void register_ber_oid_dissector_handle(
const char *oid,
dissector_handle_t dissector,
int proto,
const char *name);
180void register_ber_oid_dissector(
const char *oid, dissector_t dissector,
int proto,
const char *name);
182void register_ber_syntax_dissector(
const char *syntax,
int proto, dissector_t dissector);
183void register_ber_oid_name(
const char *oid,
const char *name);
185void register_ber_oid_syntax(
const char *oid,
const char *name,
const char *syntax);
189void ber_decode_as_foreach(GHFunc func,
void *user_data);
192bool oid_has_dissector(
const char *oid);
Definition packet-ber.h:127
Definition packet-ber.h:113
Definition packet_info.h:43
Definition tvbuff-int.h:35