libmongocrypt
mongo_crypt-v1.h
1 
6 #ifndef MONGO_CRYPT_SUPPORT_H
7 #define MONGO_CRYPT_SUPPORT_H
8 
9 #include <stddef.h>
10 #include <stdint.h>
11 
12 #pragma push_macro("MONGO_API_CALL")
13 #undef MONGO_API_CALL
14 
15 #pragma push_macro("MONGO_API_IMPORT")
16 #undef MONGO_API_IMPORT
17 
18 #pragma push_macro("MONGO_API_EXPORT")
19 #undef MONGO_API_EXPORT
20 
21 #pragma push_macro("MONGO_CRYPT_SUPPORT_API")
22 #undef MONGO_CRYPT_SUPPORT_API
23 
24 #if defined(_WIN32)
25 #define MONGO_API_CALL __cdecl
26 #define MONGO_API_IMPORT __declspec(dllimport)
27 #define MONGO_API_EXPORT __declspec(dllexport)
28 #else
29 #define MONGO_API_CALL
30 #define MONGO_API_IMPORT __attribute__((visibility("default")))
31 #define MONGO_API_EXPORT __attribute__((used, visibility("default")))
32 #endif
33 
34 #if defined(MONGO_CRYPT_SUPPORT_STATIC)
35 #define MONGO_CRYPT_API
36 #else
37 #if defined(MONGO_CRYPT_SUPPORT_COMPILING)
38 #define MONGO_CRYPT_API MONGO_API_EXPORT
39 #else
40 #define MONGO_CRYPT_API MONGO_API_IMPORT
41 #endif
42 #endif
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
70 typedef struct mongo_crypt_v1_status mongo_crypt_v1_status;
71 
79 MONGO_CRYPT_API mongo_crypt_v1_status* MONGO_API_CALL mongo_crypt_v1_status_create(void);
80 
98 MONGO_CRYPT_API void MONGO_API_CALL mongo_crypt_v1_status_destroy(mongo_crypt_v1_status* status);
99 
108 typedef enum {
109  MONGO_CRYPT_V1_ERROR_IN_REPORTING_ERROR = -2,
110  MONGO_CRYPT_V1_ERROR_UNKNOWN = -1,
111 
112  MONGO_CRYPT_V1_SUCCESS = 0,
113 
114  MONGO_CRYPT_V1_ERROR_ENOMEM = 1,
115  MONGO_CRYPT_V1_ERROR_EXCEPTION = 2,
116  MONGO_CRYPT_V1_ERROR_LIBRARY_ALREADY_INITIALIZED = 3,
117  MONGO_CRYPT_V1_ERROR_LIBRARY_NOT_INITIALIZED = 4,
118  MONGO_CRYPT_V1_ERROR_INVALID_LIB_HANDLE = 5,
119  MONGO_CRYPT_V1_ERROR_REENTRANCY_NOT_ALLOWED = 6,
120 } mongo_crypt_v1_error;
121 
134 MONGO_CRYPT_API int MONGO_API_CALL
135 mongo_crypt_v1_status_get_error(const mongo_crypt_v1_status* status);
136 
151 MONGO_CRYPT_API const char* MONGO_API_CALL
152 mongo_crypt_v1_status_get_explanation(const mongo_crypt_v1_status* status);
153 
165 MONGO_CRYPT_API int MONGO_API_CALL
166 mongo_crypt_v1_status_get_code(const mongo_crypt_v1_status* status);
167 
181 typedef struct mongo_crypt_v1_lib mongo_crypt_v1_lib;
182 
189 MONGO_CRYPT_API mongo_crypt_v1_lib* MONGO_API_CALL
190 mongo_crypt_v1_lib_create(mongo_crypt_v1_status* status);
191 
207 MONGO_CRYPT_API int MONGO_API_CALL mongo_crypt_v1_lib_destroy(mongo_crypt_v1_lib* lib,
208  mongo_crypt_v1_status* status);
209 
210 
222 MONGO_CRYPT_API uint64_t MONGO_API_CALL mongo_crypt_v1_get_version(void);
223 
231 MONGO_CRYPT_API const char* MONGO_API_CALL mongo_crypt_v1_get_version_str(void);
232 
233 
244 typedef struct mongo_crypt_v1_query_analyzer mongo_crypt_v1_query_analyzer;
245 
253 MONGO_CRYPT_API mongo_crypt_v1_query_analyzer* MONGO_API_CALL
254 mongo_crypt_v1_query_analyzer_create(mongo_crypt_v1_lib* lib, mongo_crypt_v1_status* status);
255 
265 MONGO_CRYPT_API void MONGO_API_CALL
266 mongo_crypt_v1_query_analyzer_destroy(mongo_crypt_v1_query_analyzer* analyzer);
267 
268 
286 MONGO_CRYPT_API uint8_t* MONGO_API_CALL
287 mongo_crypt_v1_analyze_query(mongo_crypt_v1_query_analyzer* analyzer,
288  const uint8_t* documentBSON,
289  const char* ns_str,
290  uint32_t ns_len,
291  uint32_t* bson_len,
292  mongo_crypt_v1_status* status);
293 
301 MONGO_CRYPT_API void MONGO_API_CALL mongo_crypt_v1_bson_free(uint8_t* bson);
302 
303 #ifdef __cplusplus
304 } // extern "C"
305 #endif
306 
307 #undef MONGO_CRYPT_SUPPORT_API
308 #pragma pop_macro("MONGO_CRYPT_SUPPORT_API")
309 
310 #undef MONGO_API_EXPORT
311 #pragma push_macro("MONGO_API_EXPORT")
312 
313 #undef MONGO_API_IMPORT
314 #pragma push_macro("MONGO_API_IMPORT")
315 
316 #undef MONGO_API_CALL
317 #pragma pop_macro("MONGO_API_CALL")
318 
319 #endif // MONGO_CRYPT_SUPPORT_H