1 use libc::*;
2 
3 use *;
4 
5 // ASN.1 tag values
6 pub const V_ASN1_EOC: c_int = 0;
7 pub const V_ASN1_BOOLEAN: c_int = 1;
8 pub const V_ASN1_INTEGER: c_int = 2;
9 pub const V_ASN1_BIT_STRING: c_int = 3;
10 pub const V_ASN1_OCTET_STRING: c_int = 4;
11 pub const V_ASN1_NULL: c_int = 5;
12 pub const V_ASN1_OBJECT: c_int = 6;
13 pub const V_ASN1_OBJECT_DESCRIPTOR: c_int = 7;
14 pub const V_ASN1_EXTERNAL: c_int = 8;
15 pub const V_ASN1_REAL: c_int = 9;
16 pub const V_ASN1_ENUMERATED: c_int = 10;
17 pub const V_ASN1_UTF8STRING: c_int = 12;
18 pub const V_ASN1_SEQUENCE: c_int = 16;
19 pub const V_ASN1_SET: c_int = 17;
20 pub const V_ASN1_NUMERICSTRING: c_int = 18;
21 pub const V_ASN1_PRINTABLESTRING: c_int = 19;
22 pub const V_ASN1_T61STRING: c_int = 20;
23 pub const V_ASN1_TELETEXSTRING: c_int = 20; // alias
24 pub const V_ASN1_VIDEOTEXSTRING: c_int = 21;
25 pub const V_ASN1_IA5STRING: c_int = 22;
26 pub const V_ASN1_UTCTIME: c_int = 23;
27 pub const V_ASN1_GENERALIZEDTIME: c_int = 24;
28 pub const V_ASN1_GRAPHICSTRING: c_int = 25;
29 pub const V_ASN1_ISO64STRING: c_int = 26;
30 pub const V_ASN1_VISIBLESTRING: c_int = 26; // alias
31 pub const V_ASN1_GENERALSTRING: c_int = 27;
32 pub const V_ASN1_UNIVERSALSTRING: c_int = 28;
33 pub const V_ASN1_BMPSTRING: c_int = 30;
34 
35 pub const MBSTRING_FLAG: c_int = 0x1000;
36 pub const MBSTRING_UTF8: c_int = MBSTRING_FLAG;
37 pub const MBSTRING_ASC: c_int = MBSTRING_FLAG | 1;
38 pub const MBSTRING_BMP: c_int = MBSTRING_FLAG | 2;
39 pub const MBSTRING_UNIV: c_int = MBSTRING_FLAG | 4;
40 
41 #[repr(C)]
42 pub struct ASN1_ENCODING {
43     pub enc: *mut c_uchar,
44     pub len: c_long,
45     pub modified: c_int,
46 }
47 
48 extern "C" {
ASN1_OBJECT_free(x: *mut ASN1_OBJECT)49     pub fn ASN1_OBJECT_free(x: *mut ASN1_OBJECT);
50 }
51 
52 stack!(stack_st_ASN1_OBJECT);
53 
54 extern "C" {
ASN1_STRING_type_new(ty: c_int) -> *mut ASN1_STRING55     pub fn ASN1_STRING_type_new(ty: c_int) -> *mut ASN1_STRING;
56     #[cfg(any(ossl110, libressl273))]
ASN1_STRING_get0_data(x: *const ASN1_STRING) -> *const c_uchar57     pub fn ASN1_STRING_get0_data(x: *const ASN1_STRING) -> *const c_uchar;
58     #[cfg(any(all(ossl101, not(ossl110)), libressl))]
ASN1_STRING_data(x: *mut ASN1_STRING) -> *mut c_uchar59     pub fn ASN1_STRING_data(x: *mut ASN1_STRING) -> *mut c_uchar;
60 
ASN1_BIT_STRING_free(x: *mut ASN1_BIT_STRING)61     pub fn ASN1_BIT_STRING_free(x: *mut ASN1_BIT_STRING);
62 
ASN1_STRING_free(x: *mut ASN1_STRING)63     pub fn ASN1_STRING_free(x: *mut ASN1_STRING);
ASN1_STRING_length(x: *const ASN1_STRING) -> c_int64     pub fn ASN1_STRING_length(x: *const ASN1_STRING) -> c_int;
65 
ASN1_GENERALIZEDTIME_free(tm: *mut ASN1_GENERALIZEDTIME)66     pub fn ASN1_GENERALIZEDTIME_free(tm: *mut ASN1_GENERALIZEDTIME);
ASN1_GENERALIZEDTIME_print(b: *mut BIO, tm: *const ASN1_GENERALIZEDTIME) -> c_int67     pub fn ASN1_GENERALIZEDTIME_print(b: *mut BIO, tm: *const ASN1_GENERALIZEDTIME) -> c_int;
ASN1_TIME_new() -> *mut ASN1_TIME68     pub fn ASN1_TIME_new() -> *mut ASN1_TIME;
69     #[cfg(ossl102)]
ASN1_TIME_diff( pday: *mut c_int, psec: *mut c_int, from: *const ASN1_TIME, to: *const ASN1_TIME, ) -> c_int70     pub fn ASN1_TIME_diff(
71         pday: *mut c_int,
72         psec: *mut c_int,
73         from: *const ASN1_TIME,
74         to: *const ASN1_TIME,
75     ) -> c_int;
ASN1_TIME_free(tm: *mut ASN1_TIME)76     pub fn ASN1_TIME_free(tm: *mut ASN1_TIME);
ASN1_TIME_print(b: *mut BIO, tm: *const ASN1_TIME) -> c_int77     pub fn ASN1_TIME_print(b: *mut BIO, tm: *const ASN1_TIME) -> c_int;
ASN1_TIME_set(from: *mut ASN1_TIME, to: time_t) -> *mut ASN1_TIME78     pub fn ASN1_TIME_set(from: *mut ASN1_TIME, to: time_t) -> *mut ASN1_TIME;
79 
ASN1_INTEGER_free(x: *mut ASN1_INTEGER)80     pub fn ASN1_INTEGER_free(x: *mut ASN1_INTEGER);
ASN1_INTEGER_get(dest: *const ASN1_INTEGER) -> c_long81     pub fn ASN1_INTEGER_get(dest: *const ASN1_INTEGER) -> c_long;
ASN1_INTEGER_set(dest: *mut ASN1_INTEGER, value: c_long) -> c_int82     pub fn ASN1_INTEGER_set(dest: *mut ASN1_INTEGER, value: c_long) -> c_int;
BN_to_ASN1_INTEGER(bn: *const BIGNUM, ai: *mut ASN1_INTEGER) -> *mut ASN1_INTEGER83     pub fn BN_to_ASN1_INTEGER(bn: *const BIGNUM, ai: *mut ASN1_INTEGER) -> *mut ASN1_INTEGER;
ASN1_INTEGER_to_BN(ai: *const ASN1_INTEGER, bn: *mut BIGNUM) -> *mut BIGNUM84     pub fn ASN1_INTEGER_to_BN(ai: *const ASN1_INTEGER, bn: *mut BIGNUM) -> *mut BIGNUM;
85 
ASN1_TIME_set_string(s: *mut ASN1_TIME, str: *const c_char) -> c_int86     pub fn ASN1_TIME_set_string(s: *mut ASN1_TIME, str: *const c_char) -> c_int;
87     #[cfg(ossl111)]
ASN1_TIME_set_string_X509(s: *mut ASN1_TIME, str: *const c_char) -> c_int88     pub fn ASN1_TIME_set_string_X509(s: *mut ASN1_TIME, str: *const c_char) -> c_int;
89 }
90 
91 const_ptr_api! {
92     extern "C" {
93         pub fn ASN1_STRING_to_UTF8(out: *mut *mut c_uchar, s: #[const_ptr_if(any(ossl110, libressl280))] ASN1_STRING) -> c_int;
94     }
95 }
96