1*0a6a1f1dSLionel Sambuc /* $NetBSD: asn1-common.h,v 1.1.1.3 2014/04/24 12:45:28 pettai Exp $ */ 2ebfedea0SLionel Sambuc 3ebfedea0SLionel Sambuc /* Id */ 4ebfedea0SLionel Sambuc 5ebfedea0SLionel Sambuc #include <stddef.h> 6ebfedea0SLionel Sambuc #include <time.h> 7ebfedea0SLionel Sambuc #include <krb5/krb5-types.h> 8ebfedea0SLionel Sambuc 9ebfedea0SLionel Sambuc #ifndef __asn1_common_definitions__ 10ebfedea0SLionel Sambuc #define __asn1_common_definitions__ 11ebfedea0SLionel Sambuc 12ebfedea0SLionel Sambuc typedef struct heim_integer { 13ebfedea0SLionel Sambuc size_t length; 14ebfedea0SLionel Sambuc void *data; 15ebfedea0SLionel Sambuc int negative; 16ebfedea0SLionel Sambuc } heim_integer; 17ebfedea0SLionel Sambuc 18ebfedea0SLionel Sambuc typedef struct heim_octet_string { 19ebfedea0SLionel Sambuc size_t length; 20ebfedea0SLionel Sambuc void *data; 21ebfedea0SLionel Sambuc } heim_octet_string; 22ebfedea0SLionel Sambuc 23ebfedea0SLionel Sambuc typedef char *heim_general_string; 24ebfedea0SLionel Sambuc typedef char *heim_utf8_string; 25ebfedea0SLionel Sambuc typedef struct heim_octet_string heim_printable_string; 26ebfedea0SLionel Sambuc typedef struct heim_octet_string heim_ia5_string; 27ebfedea0SLionel Sambuc 28ebfedea0SLionel Sambuc typedef struct heim_bmp_string { 29ebfedea0SLionel Sambuc size_t length; 30ebfedea0SLionel Sambuc uint16_t *data; 31ebfedea0SLionel Sambuc } heim_bmp_string; 32ebfedea0SLionel Sambuc 33ebfedea0SLionel Sambuc typedef struct heim_universal_string { 34ebfedea0SLionel Sambuc size_t length; 35ebfedea0SLionel Sambuc uint32_t *data; 36ebfedea0SLionel Sambuc } heim_universal_string; 37ebfedea0SLionel Sambuc 38ebfedea0SLionel Sambuc typedef char *heim_visible_string; 39ebfedea0SLionel Sambuc 40ebfedea0SLionel Sambuc typedef struct heim_oid { 41ebfedea0SLionel Sambuc size_t length; 42ebfedea0SLionel Sambuc unsigned *components; 43ebfedea0SLionel Sambuc } heim_oid; 44ebfedea0SLionel Sambuc 45ebfedea0SLionel Sambuc typedef struct heim_bit_string { 46ebfedea0SLionel Sambuc size_t length; 47ebfedea0SLionel Sambuc void *data; 48ebfedea0SLionel Sambuc } heim_bit_string; 49ebfedea0SLionel Sambuc 50ebfedea0SLionel Sambuc typedef struct heim_octet_string heim_any; 51ebfedea0SLionel Sambuc typedef struct heim_octet_string heim_any_set; 52ebfedea0SLionel Sambuc 53ebfedea0SLionel Sambuc #define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \ 54ebfedea0SLionel Sambuc do { \ 55ebfedea0SLionel Sambuc (BL) = length_##T((S)); \ 56ebfedea0SLionel Sambuc (B) = malloc((BL)); \ 57ebfedea0SLionel Sambuc if((B) == NULL) { \ 58ebfedea0SLionel Sambuc (R) = ENOMEM; \ 59ebfedea0SLionel Sambuc } else { \ 60ebfedea0SLionel Sambuc (R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \ 61ebfedea0SLionel Sambuc (S), (L)); \ 62ebfedea0SLionel Sambuc if((R) != 0) { \ 63ebfedea0SLionel Sambuc free((B)); \ 64ebfedea0SLionel Sambuc (B) = NULL; \ 65ebfedea0SLionel Sambuc } \ 66ebfedea0SLionel Sambuc } \ 67ebfedea0SLionel Sambuc } while (0) 68ebfedea0SLionel Sambuc 69ebfedea0SLionel Sambuc #ifdef _WIN32 70ebfedea0SLionel Sambuc #ifndef ASN1_LIB 71ebfedea0SLionel Sambuc #define ASN1EXP __declspec(dllimport) 72ebfedea0SLionel Sambuc #else 73ebfedea0SLionel Sambuc #define ASN1EXP 74ebfedea0SLionel Sambuc #endif 75ebfedea0SLionel Sambuc #define ASN1CALL __stdcall 76ebfedea0SLionel Sambuc #else 77ebfedea0SLionel Sambuc #define ASN1EXP 78ebfedea0SLionel Sambuc #define ASN1CALL 79ebfedea0SLionel Sambuc #endif 80ebfedea0SLionel Sambuc 81ebfedea0SLionel Sambuc #endif 82