1*ae771770SStanislav Sedov /* $Id$ */ 25e9cd1aeSAssar Westerlund 35e9cd1aeSAssar Westerlund #include <stddef.h> 45e9cd1aeSAssar Westerlund #include <time.h> 5*ae771770SStanislav Sedov #include <krb5-types.h> 65e9cd1aeSAssar Westerlund 75e9cd1aeSAssar Westerlund #ifndef __asn1_common_definitions__ 85e9cd1aeSAssar Westerlund #define __asn1_common_definitions__ 95e9cd1aeSAssar Westerlund 10c19800e8SDoug Rabson typedef struct heim_integer { 115e9cd1aeSAssar Westerlund size_t length; 125e9cd1aeSAssar Westerlund void *data; 13c19800e8SDoug Rabson int negative; 14c19800e8SDoug Rabson } heim_integer; 155e9cd1aeSAssar Westerlund 16c19800e8SDoug Rabson typedef struct heim_octet_string { 17c19800e8SDoug Rabson size_t length; 18c19800e8SDoug Rabson void *data; 19c19800e8SDoug Rabson } heim_octet_string; 205e9cd1aeSAssar Westerlund 21c19800e8SDoug Rabson typedef char *heim_general_string; 22c19800e8SDoug Rabson typedef char *heim_utf8_string; 23*ae771770SStanislav Sedov typedef struct heim_octet_string heim_printable_string; 24*ae771770SStanislav Sedov typedef struct heim_octet_string heim_ia5_string; 25c19800e8SDoug Rabson 26c19800e8SDoug Rabson typedef struct heim_bmp_string { 27c19800e8SDoug Rabson size_t length; 28c19800e8SDoug Rabson uint16_t *data; 29c19800e8SDoug Rabson } heim_bmp_string; 30c19800e8SDoug Rabson 31c19800e8SDoug Rabson typedef struct heim_universal_string { 32c19800e8SDoug Rabson size_t length; 33c19800e8SDoug Rabson uint32_t *data; 34c19800e8SDoug Rabson } heim_universal_string; 35c19800e8SDoug Rabson 36c19800e8SDoug Rabson typedef char *heim_visible_string; 37c19800e8SDoug Rabson 38c19800e8SDoug Rabson typedef struct heim_oid { 394137ff4cSJacques Vidrine size_t length; 404137ff4cSJacques Vidrine unsigned *components; 41c19800e8SDoug Rabson } heim_oid; 42c19800e8SDoug Rabson 43c19800e8SDoug Rabson typedef struct heim_bit_string { 44c19800e8SDoug Rabson size_t length; 45c19800e8SDoug Rabson void *data; 46c19800e8SDoug Rabson } heim_bit_string; 47c19800e8SDoug Rabson 48c19800e8SDoug Rabson typedef struct heim_octet_string heim_any; 49c19800e8SDoug Rabson typedef struct heim_octet_string heim_any_set; 50c19800e8SDoug Rabson 51c19800e8SDoug Rabson #define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \ 52c19800e8SDoug Rabson do { \ 53c19800e8SDoug Rabson (BL) = length_##T((S)); \ 54c19800e8SDoug Rabson (B) = malloc((BL)); \ 55c19800e8SDoug Rabson if((B) == NULL) { \ 56c19800e8SDoug Rabson (R) = ENOMEM; \ 57c19800e8SDoug Rabson } else { \ 58c19800e8SDoug Rabson (R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \ 59c19800e8SDoug Rabson (S), (L)); \ 60c19800e8SDoug Rabson if((R) != 0) { \ 61c19800e8SDoug Rabson free((B)); \ 62c19800e8SDoug Rabson (B) = NULL; \ 63c19800e8SDoug Rabson } \ 64c19800e8SDoug Rabson } \ 65c19800e8SDoug Rabson } while (0) 664137ff4cSJacques Vidrine 67*ae771770SStanislav Sedov #ifdef _WIN32 68*ae771770SStanislav Sedov #ifndef ASN1_LIB 69*ae771770SStanislav Sedov #define ASN1EXP __declspec(dllimport) 70*ae771770SStanislav Sedov #else 71*ae771770SStanislav Sedov #define ASN1EXP 72*ae771770SStanislav Sedov #endif 73*ae771770SStanislav Sedov #define ASN1CALL __stdcall 74*ae771770SStanislav Sedov #else 75*ae771770SStanislav Sedov #define ASN1EXP 76*ae771770SStanislav Sedov #define ASN1CALL 77*ae771770SStanislav Sedov #endif 78*ae771770SStanislav Sedov 795e9cd1aeSAssar Westerlund #endif 80