Path: blob/main/crypto/heimdal/lib/asn1/asn1-common.h
34878 views
/* $Id$ */12#include <stddef.h>3#include <time.h>4#include <krb5-types.h>56#ifndef __asn1_common_definitions__7#define __asn1_common_definitions__89typedef struct heim_integer {10size_t length;11void *data;12int negative;13} heim_integer;1415typedef struct heim_octet_string {16size_t length;17void *data;18} heim_octet_string;1920typedef char *heim_general_string;21typedef char *heim_utf8_string;22typedef struct heim_octet_string heim_printable_string;23typedef struct heim_octet_string heim_ia5_string;2425typedef struct heim_bmp_string {26size_t length;27uint16_t *data;28} heim_bmp_string;2930typedef struct heim_universal_string {31size_t length;32uint32_t *data;33} heim_universal_string;3435typedef char *heim_visible_string;3637typedef struct heim_oid {38size_t length;39unsigned *components;40} heim_oid;4142typedef struct heim_bit_string {43size_t length;44void *data;45} heim_bit_string;4647typedef struct heim_octet_string heim_any;48typedef struct heim_octet_string heim_any_set;4950#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \51do { \52(BL) = length_##T((S)); \53(B) = malloc((BL)); \54if((B) == NULL) { \55(R) = ENOMEM; \56} else { \57(R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \58(S), (L)); \59if((R) != 0) { \60free((B)); \61(B) = NULL; \62} \63} \64} while (0)6566#ifdef _WIN3267#ifndef ASN1_LIB68#define ASN1EXP __declspec(dllimport)69#else70#define ASN1EXP71#endif72#define ASN1CALL __stdcall73#else74#define ASN1EXP75#define ASN1CALL76#endif7778#endif798081