1255e72915d4cbddceb435e13d81601755714e9fSE Android#ifndef _SEPOL_INTERNAL_CONTEXT_H_
2255e72915d4cbddceb435e13d81601755714e9fSE Android#define _SEPOL_INTERNAL_CONTEXT_H_
3255e72915d4cbddceb435e13d81601755714e9fSE Android
4255e72915d4cbddceb435e13d81601755714e9fSE Android#include <stddef.h>
5255e72915d4cbddceb435e13d81601755714e9fSE Android#include "context_internal.h"
6255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sepol/policydb/context.h>
7255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sepol/policydb/policydb.h>
8255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sepol/handle.h>
9255e72915d4cbddceb435e13d81601755714e9fSE Android
10255e72915d4cbddceb435e13d81601755714e9fSE Android/* Create a context structure from high level representation */
11255e72915d4cbddceb435e13d81601755714e9fSE Androidextern int context_from_record(sepol_handle_t * handle,
12255e72915d4cbddceb435e13d81601755714e9fSE Android			       const policydb_t * policydb,
13255e72915d4cbddceb435e13d81601755714e9fSE Android			       context_struct_t ** cptr,
14255e72915d4cbddceb435e13d81601755714e9fSE Android			       const sepol_context_t * data);
15255e72915d4cbddceb435e13d81601755714e9fSE Android
16255e72915d4cbddceb435e13d81601755714e9fSE Androidextern int context_to_record(sepol_handle_t * handle,
17255e72915d4cbddceb435e13d81601755714e9fSE Android			     const policydb_t * policydb,
18255e72915d4cbddceb435e13d81601755714e9fSE Android			     const context_struct_t * context,
19255e72915d4cbddceb435e13d81601755714e9fSE Android			     sepol_context_t ** record);
20255e72915d4cbddceb435e13d81601755714e9fSE Android
21255e72915d4cbddceb435e13d81601755714e9fSE Android/* Create a context structure from string representation */
22255e72915d4cbddceb435e13d81601755714e9fSE Androidextern int context_from_string(sepol_handle_t * handle,
23255e72915d4cbddceb435e13d81601755714e9fSE Android			       const policydb_t * policydb,
24255e72915d4cbddceb435e13d81601755714e9fSE Android			       context_struct_t ** cptr,
25255e72915d4cbddceb435e13d81601755714e9fSE Android			       const char *con_str, size_t con_str_len);
26255e72915d4cbddceb435e13d81601755714e9fSE Android
27255e72915d4cbddceb435e13d81601755714e9fSE Android/* Check if the provided context is valid for this policy */
28255e72915d4cbddceb435e13d81601755714e9fSE Androidextern int context_is_valid(const policydb_t * policydb,
29255e72915d4cbddceb435e13d81601755714e9fSE Android			    const context_struct_t * context);
30255e72915d4cbddceb435e13d81601755714e9fSE Android
31255e72915d4cbddceb435e13d81601755714e9fSE Android/* Extract the context as string */
32255e72915d4cbddceb435e13d81601755714e9fSE Androidextern int context_to_string(sepol_handle_t * handle,
33255e72915d4cbddceb435e13d81601755714e9fSE Android			     const policydb_t * policydb,
34255e72915d4cbddceb435e13d81601755714e9fSE Android			     const context_struct_t * context,
35255e72915d4cbddceb435e13d81601755714e9fSE Android			     char **result, size_t * result_len);
36255e72915d4cbddceb435e13d81601755714e9fSE Android
37255e72915d4cbddceb435e13d81601755714e9fSE Android#endif
38