1c19800e8SDoug Rabson /* $Id$ */ 25e9cd1aeSAssar Westerlund 35e9cd1aeSAssar Westerlund #include <stddef.h> 45e9cd1aeSAssar Westerlund #include <time.h> 55e9cd1aeSAssar Westerlund #include <krb5-types.h> 65e9cd1aeSAssar Westerlund 75e9cd1aeSAssar Westerlund #ifndef __asn1_common_definitions__ 85e9cd1aeSAssar Westerlund #define __asn1_common_definitions__ 9c19800e8SDoug Rabson 105e9cd1aeSAssar Westerlund typedef struct heim_integer { 115e9cd1aeSAssar Westerlund size_t length; 12c19800e8SDoug Rabson void *data; 13c19800e8SDoug Rabson int negative; 145e9cd1aeSAssar Westerlund } heim_integer; 15c19800e8SDoug Rabson 16c19800e8SDoug Rabson typedef struct heim_octet_string { 17c19800e8SDoug Rabson size_t length; 18c19800e8SDoug Rabson void *data; 195e9cd1aeSAssar Westerlund } heim_octet_string; 20c19800e8SDoug Rabson 21c19800e8SDoug Rabson typedef char *heim_general_string; 22c19800e8SDoug Rabson typedef char *heim_utf8_string; 23c19800e8SDoug Rabson typedef struct heim_octet_string heim_printable_string; 24c19800e8SDoug Rabson 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 384137ff4cSJacques Vidrine typedef struct heim_oid { 394137ff4cSJacques Vidrine size_t length; 40c19800e8SDoug Rabson 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 } \ 654137ff4cSJacques Vidrine } while (0) 665e9cd1aeSAssar Westerlund 67 #ifdef _WIN32 68 #ifndef ASN1_LIB 69 #define ASN1EXP __declspec(dllimport) 70 #else 71 #define ASN1EXP 72 #endif 73 #define ASN1CALL __stdcall 74 #else 75 #define ASN1EXP 76 #define ASN1CALL 77 #endif 78 79 #endif 80