diff options
Diffstat (limited to 'source4/heimdal/lib/asn1/asn1-common.h')
-rw-r--r-- | source4/heimdal/lib/asn1/asn1-common.h | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/source4/heimdal/lib/asn1/asn1-common.h b/source4/heimdal/lib/asn1/asn1-common.h index 4560b1b29c..01411b384a 100644 --- a/source4/heimdal/lib/asn1/asn1-common.h +++ b/source4/heimdal/lib/asn1/asn1-common.h @@ -1,4 +1,4 @@ -/* $Id: asn1-common.h,v 1.4 2003/07/15 13:57:31 lha Exp $ */ +/* $Id: asn1-common.h,v 1.5 2005/07/12 06:27:14 lha Exp $ */ #include <stddef.h> #include <time.h> @@ -6,6 +6,12 @@ #ifndef __asn1_common_definitions__ #define __asn1_common_definitions__ +typedef struct heim_integer { + size_t length; + void *data; + int negative; +} heim_integer; + typedef struct heim_octet_string { size_t length; void *data; @@ -13,10 +19,44 @@ typedef struct heim_octet_string { typedef char *heim_general_string; typedef char *heim_utf8_string; +typedef char *heim_printable_string; +typedef char *heim_ia5_string; + +typedef struct heim_bmp_string { + size_t length; + uint16_t *data; +} heim_bmp_string; + +typedef struct heim_universal_string { + size_t length; + uint32_t *data; +} heim_universal_string; + typedef struct heim_oid { size_t length; unsigned *components; } heim_oid; +typedef struct heim_bit_string { + size_t length; + void *data; +} heim_bit_string; + +#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \ + do { \ + (BL) = length_##T((S)); \ + (B) = malloc((BL)); \ + if((B) == NULL) { \ + (R) = ENOMEM; \ + } else { \ + (R) = encode_##T(((unsigned char*)(B)) + (BL) - 1, (BL), \ + (S), (L)); \ + if((R) != 0) { \ + free((B)); \ + (B) = NULL; \ + } \ + } \ + } while (0) + #endif |