xref: /minix3/crypto/external/bsd/heimdal/dist/lib/asn1/asn1-common.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
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