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