blob: a68441dfe004a2fcc4c7589db1dc9a49d0beeb3c [file] [log] [blame]
Harald Welte92c45f32010-06-12 18:59:38 +02001/*-
2 * Copyright (c) 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
3 * Redistribution and modifications are permitted subject to BSD license.
4 */
5#ifndef ASN_TYPE_ANY_H
6#define ASN_TYPE_ANY_H
7
8#include <OCTET_STRING.h> /* Implemented via OCTET STRING type */
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14typedef struct ANY {
15 uint8_t *buf; /* BER-encoded ANY contents */
16 int size; /* Size of the above buffer */
17
18 asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */
19} ANY_t;
20
21extern asn_TYPE_descriptor_t asn_DEF_ANY;
22
23asn_struct_free_f ANY_free;
24asn_struct_print_f ANY_print;
25ber_type_decoder_f ANY_decode_ber;
26der_type_encoder_f ANY_encode_der;
27xer_type_encoder_f ANY_encode_xer;
28
29/******************************
30 * Handy conversion routines. *
31 ******************************/
32
33/* Convert another ASN.1 type into the ANY. This implies DER encoding. */
34int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr);
Harald Welte41b85d52015-08-31 08:56:53 +020035int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr);
Harald Welte92c45f32010-06-12 18:59:38 +020036ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr);
Harald Welte41b85d52015-08-31 08:56:53 +020037ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr);
Harald Welte92c45f32010-06-12 18:59:38 +020038
39/* Convert the contents of the ANY type into the specified type. */
40int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr);
Harald Welte41b85d52015-08-31 08:56:53 +020041int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr);
Harald Welte92c45f32010-06-12 18:59:38 +020042
43#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size))
44#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \
45 &asn_DEF_ANY, (buf), (size))
46
47#ifdef __cplusplus
48}
49#endif
50
51#endif /* ASN_TYPE_ANY_H */