1 /*- 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 11 extern "C" { 12 #endif 13 14 typedef 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 21 extern asn_TYPE_descriptor_t asn_DEF_ANY; 22 23 asn_struct_free_f ANY_free; 24 asn_struct_print_f ANY_print; 25 ber_type_decoder_f ANY_decode_ber; 26 der_type_encoder_f ANY_encode_der; 27 xer_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. */ 34 int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); 35 ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); 36 37 /* Convert the contents of the ANY type into the specified type. */ 38 int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); 39 40 #define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) 41 #define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ 42 &asn_DEF_ANY, (buf), (size)) 43 44 #ifdef __cplusplus 45 } 46 #endif 47 48 #endif /* ASN_TYPE_ANY_H */ 49