1/* $Id$ */ 2 3#include <stddef.h> 4#include <time.h> 5#include <krb5-types.h> 6 7#ifndef __asn1_common_definitions__ 8#define __asn1_common_definitions__ 9 10typedef struct heim_integer { 11 size_t length; 12 void *data; 13 int negative; 14} heim_integer; 15 16typedef struct heim_octet_string { 17 size_t length; 18 void *data; 19} heim_octet_string; 20 21typedef char *heim_general_string; 22typedef char *heim_utf8_string; 23typedef struct heim_octet_string heim_printable_string; 24typedef struct heim_octet_string heim_ia5_string; 25 26typedef struct heim_bmp_string { 27 size_t length; 28 uint16_t *data; 29} heim_bmp_string; 30 31typedef struct heim_universal_string { 32 size_t length; 33 uint32_t *data; 34} heim_universal_string; 35 36typedef char *heim_visible_string; 37 38typedef struct heim_oid { 39 size_t length; 40 unsigned *components; 41} heim_oid; 42 43typedef struct heim_bit_string { 44 size_t length; 45 void *data; 46} heim_bit_string; 47 48typedef struct heim_octet_string heim_any; 49typedef struct heim_octet_string heim_any_set; 50 51#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \ 52 do { \ 53 (BL) = length_##T((S)); \ 54 (B) = malloc((BL)); \ 55 if((B) == NULL) { \ 56 (R) = ENOMEM; \ 57 } else { \ 58 (R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \ 59 (S), (L)); \ 60 if((R) != 0) { \ 61 free((B)); \ 62 (B) = NULL; \ 63 } \ 64 } \ 65 } while (0) 66 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