Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / btls / btls-x509.h
1 //
2 //  btls-x509.h
3 //  MonoBtls
4 //
5 //  Created by Martin Baulig on 14/11/15.
6 //  Copyright (c) 2015 Xamarin. All rights reserved.
7 //
8
9 #ifndef __btls__btls_x509__
10 #define __btls__btls_x509__
11
12 #include <stdio.h>
13 #include <btls-ssl.h>
14 #include <btls-x509-name.h>
15
16 typedef enum {
17         MONO_BTLS_X509_FORMAT_DER = 1,
18         MONO_BTLS_X509_FORMAT_PEM = 2
19 } MonoBtlsX509Format;
20
21 typedef enum {
22         MONO_BTLS_x509_FILE_TYPE_PEM = 1,               // X509_FILETYPE_PEM
23         MONO_BTLS_x509_FILE_TYPE_ASN1 = 2,              // X509_FILETYPE_ASN1
24         MONO_BTLS_x509_FILE_TYPE_DEFAULT = 3,   // X509_FILETYPE_DEFAULT
25 } MonoBtlsX509FileType;
26
27 typedef enum {
28         MONO_BTLS_X509_PURPOSE_SSL_CLIENT               = 1,
29         MONO_BTLS_X509_PURPOSE_SSL_SERVER               = 2,
30         MONO_BTLS_X509_PURPOSE_NS_SSL_SERVER    = 3,
31         MONO_BTLS_X509_PURPOSE_SMIME_SIGN               = 4,
32         MONO_BTLS_X509_PURPOSE_SMIME_ENCRYPT    = 5,
33         MONO_BTLS_X509_PURPOSE_CRL_SIGN         = 6,
34         MONO_BTLS_X509_PURPOSE_ANY                      = 7,
35         MONO_BTLS_X509_PURPOSE_OCSP_HELPER              = 8,
36         MONO_BTLS_X509_PURPOSE_TIMESTAMP_SIGN   = 9,
37 } MonoBtlsX509Purpose;
38
39 typedef enum {
40         MONO_BTLS_X509_TRUST_KIND_DEFAULT               = 0,
41         MONO_BTLS_X509_TRUST_KIND_TRUST_CLIENT  = 1,
42         MONO_BTLS_X509_TRUST_KIND_TRUST_SERVER  = 2,
43         MONO_BTLS_X509_TRUST_KIND_TRUST_ALL             = 4,
44         MONO_BTLS_X509_TRUST_KIND_REJECT_CLIENT = 32,
45         MONO_BTLS_X509_TRUST_KIND_REJECT_SERVER = 64,
46         MONO_BTLS_X509_TRUST_KIND_REJECT_ALL    = 128
47 } MonoBtlsX509TrustKind;
48
49 X509 *
50 mono_btls_x509_from_data (const void *buf, int len, MonoBtlsX509Format format);
51
52 X509 *
53 mono_btls_x509_up_ref (X509 *x509);
54
55 void
56 mono_btls_x509_free (X509 *x509);
57
58 X509 *
59 mono_btls_x509_dup (X509 *x509);
60
61 MonoBtlsX509Name *
62 mono_btls_x509_get_subject_name (X509 *x509);
63
64 MonoBtlsX509Name *
65 mono_btls_x509_get_issuer_name (X509 *x509);
66
67 int
68 mono_btls_x509_get_subject_name_string (X509 *name, char *buffer, int size);
69
70 int
71 mono_btls_x509_get_issuer_name_string (X509 *name, char *buffer, int size);
72
73 int
74 mono_btls_x509_get_raw_data (X509 *x509, BIO *bio, MonoBtlsX509Format format);
75
76 int
77 mono_btls_x509_cmp (const X509 *a, const X509 *b);
78
79 int
80 mono_btls_x509_get_hash (X509 *x509, const void **data);
81
82 int64_t
83 mono_btls_x509_get_not_before (X509 *x509);
84
85 int64_t
86 mono_btls_x509_get_not_after (X509 *x509);
87
88 int
89 mono_btls_x509_get_public_key (X509 *x509, BIO *bio);
90
91 int
92 mono_btls_x509_get_public_key_parameters (X509 *x509, char *out_oid, int oid_len, uint8_t **buffer, int *size);
93
94 int
95 mono_btls_x509_get_serial_number (X509 *x509, char *buffer, int size, int mono_style);
96
97 int
98 mono_btls_x509_get_public_key_algorithm (X509 *x509, char *buffer, int size);
99
100 int
101 mono_btls_x509_get_version (X509 *x509);
102
103 int
104 mono_btls_x509_get_signature_algorithm (X509 *x509, char *buffer, int size);
105
106 int
107 mono_btls_x509_get_public_key_asn1 (X509 *x509, char *out_oid, int oid_len, uint8_t **buffer, int *size);
108
109 EVP_PKEY *
110 mono_btls_x509_get_pubkey (X509 *x509);
111
112 int
113 mono_btls_x509_get_subject_key_identifier (X509 *x509, uint8_t **buffer, int *size);
114
115 int
116 mono_btls_x509_print (X509 *x509, BIO *bio);
117
118 int
119 mono_btls_x509_add_trust_object (X509 *x509, MonoBtlsX509Purpose purpose);
120
121 int
122 mono_btls_x509_add_reject_object (X509 *x509, MonoBtlsX509Purpose purpose);
123
124 int
125 mono_btls_x509_add_explicit_trust (X509 *x509, MonoBtlsX509TrustKind kind);
126
127 #endif /* defined(__btls__btls_x509__) */