1255e72915d4cbddceb435e13d81601755714e9fSE Android/*
2255e72915d4cbddceb435e13d81601755714e9fSE Android * Author: Mary Garvin <mgarvin@tresys.com>
3255e72915d4cbddceb435e13d81601755714e9fSE Android *
4255e72915d4cbddceb435e13d81601755714e9fSE Android * Copyright (C) 2007-2008 Tresys Technology, LLC
5255e72915d4cbddceb435e13d81601755714e9fSE Android *
6255e72915d4cbddceb435e13d81601755714e9fSE Android *  This library is free software; you can redistribute it and/or
7255e72915d4cbddceb435e13d81601755714e9fSE Android *  modify it under the terms of the GNU Lesser General Public
8255e72915d4cbddceb435e13d81601755714e9fSE Android *  License as published by the Free Software Foundation; either
9255e72915d4cbddceb435e13d81601755714e9fSE Android *  version 2.1 of the License, or (at your option) any later version.
10255e72915d4cbddceb435e13d81601755714e9fSE Android *
11255e72915d4cbddceb435e13d81601755714e9fSE Android *  This library is distributed in the hope that it will be useful,
12255e72915d4cbddceb435e13d81601755714e9fSE Android *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13255e72915d4cbddceb435e13d81601755714e9fSE Android *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14255e72915d4cbddceb435e13d81601755714e9fSE Android *  Lesser General Public License for more details.
15255e72915d4cbddceb435e13d81601755714e9fSE Android *
16255e72915d4cbddceb435e13d81601755714e9fSE Android *  You should have received a copy of the GNU Lesser General Public
17255e72915d4cbddceb435e13d81601755714e9fSE Android *  License along with this library; if not, write to the Free Software
18255e72915d4cbddceb435e13d81601755714e9fSE Android *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19255e72915d4cbddceb435e13d81601755714e9fSE Android */
20255e72915d4cbddceb435e13d81601755714e9fSE Android
21255e72915d4cbddceb435e13d81601755714e9fSE Android#ifndef __TEST_DOWNGRADE_H__
22255e72915d4cbddceb435e13d81601755714e9fSE Android#define __TEST_DOWNGRADE_H__
23255e72915d4cbddceb435e13d81601755714e9fSE Android
24255e72915d4cbddceb435e13d81601755714e9fSE Android#include <CUnit/Basic.h>
25255e72915d4cbddceb435e13d81601755714e9fSE Android#include <sepol/policydb/policydb.h>
26255e72915d4cbddceb435e13d81601755714e9fSE Android
27255e72915d4cbddceb435e13d81601755714e9fSE Android/*
28255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name:  downgrade_test_init
29255e72915d4cbddceb435e13d81601755714e9fSE Android *
30255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: None
31255e72915d4cbddceb435e13d81601755714e9fSE Android *
32255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: None
33255e72915d4cbddceb435e13d81601755714e9fSE Android *
34255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Initialize the policydb (policy data base structure)
35255e72915d4cbddceb435e13d81601755714e9fSE Android */
36255e72915d4cbddceb435e13d81601755714e9fSE Androidint downgrade_test_init(void);
37255e72915d4cbddceb435e13d81601755714e9fSE Android
38255e72915d4cbddceb435e13d81601755714e9fSE Android/*
39255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name:  downgrade_test_cleanup
40255e72915d4cbddceb435e13d81601755714e9fSE Android *
41255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: None
42255e72915d4cbddceb435e13d81601755714e9fSE Android *
43255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: None
44255e72915d4cbddceb435e13d81601755714e9fSE Android *
45255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Destroys policydb structure
46255e72915d4cbddceb435e13d81601755714e9fSE Android */
47255e72915d4cbddceb435e13d81601755714e9fSE Androidint downgrade_test_cleanup(void);
48255e72915d4cbddceb435e13d81601755714e9fSE Android
49255e72915d4cbddceb435e13d81601755714e9fSE Android/*
50255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: downgrade_add_tests
51255e72915d4cbddceb435e13d81601755714e9fSE Android *
52255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: CU_pSuite
53255e72915d4cbddceb435e13d81601755714e9fSE Android *
54255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: Returns 0 upon success.  Upon failure, a CUnit testing error
55255e72915d4cbddceb435e13d81601755714e9fSE Android *	   value is returned
56255e72915d4cbddceb435e13d81601755714e9fSE Android *
57255e72915d4cbddceb435e13d81601755714e9fSE Android * Description:  Add the given downgrade tests to the downgrade suite.
58255e72915d4cbddceb435e13d81601755714e9fSE Android */
59255e72915d4cbddceb435e13d81601755714e9fSE Androidint downgrade_add_tests(CU_pSuite suite);
60255e72915d4cbddceb435e13d81601755714e9fSE Android
61255e72915d4cbddceb435e13d81601755714e9fSE Android/*
62255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: test_downgrade_possible
63255e72915d4cbddceb435e13d81601755714e9fSE Android *
64255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: None
65255e72915d4cbddceb435e13d81601755714e9fSE Android *
66255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: None
67255e72915d4cbddceb435e13d81601755714e9fSE Android *
68255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Tests the backward compatability of MLS and Non-MLS binary
69255e72915d4cbddceb435e13d81601755714e9fSE Android *		policy versions.
70255e72915d4cbddceb435e13d81601755714e9fSE Android */
71255e72915d4cbddceb435e13d81601755714e9fSE Androidvoid test_downgrade(void);
72255e72915d4cbddceb435e13d81601755714e9fSE Android
73255e72915d4cbddceb435e13d81601755714e9fSE Android/*
74255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name:  do_downgrade_test
75255e72915d4cbddceb435e13d81601755714e9fSE Android *
76255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: int that represents a 0 for Non-MLS policy and a
77255e72915d4cbddceb435e13d81601755714e9fSE Android * 		 1 for MLS policy downgrade testing
78255e72915d4cbddceb435e13d81601755714e9fSE Android *
79255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: (int) 0 on success, negative number upon failure
80255e72915d4cbddceb435e13d81601755714e9fSE Android *
81255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: This function handles the downgrade testing.  A binary policy
82255e72915d4cbddceb435e13d81601755714e9fSE Android *		is read into the policydb structure, the policy version is
83255e72915d4cbddceb435e13d81601755714e9fSE Android *		decreased by a specific amount, written back out and then read
84255e72915d4cbddceb435e13d81601755714e9fSE Android *		back in again. The process is iterative until the minimum
85255e72915d4cbddceb435e13d81601755714e9fSE Android *		policy version is reached.
86255e72915d4cbddceb435e13d81601755714e9fSE Android */
87255e72915d4cbddceb435e13d81601755714e9fSE Androidint do_downgrade_test(int mls);
88255e72915d4cbddceb435e13d81601755714e9fSE Android
89255e72915d4cbddceb435e13d81601755714e9fSE Android/*
90255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: read_binary_policy
91255e72915d4cbddceb435e13d81601755714e9fSE Android *
92255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: char * which is the path to the file containing the binary policy
93255e72915d4cbddceb435e13d81601755714e9fSE Android *
94255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: Returns 0 upon success.  Upon failure, -1 is returned.
95255e72915d4cbddceb435e13d81601755714e9fSE Android *	   Possible failures are, filename with given path does not exist,
96255e72915d4cbddceb435e13d81601755714e9fSE Android *	   a failure to open the file, or a failure from prolicydb_read
97255e72915d4cbddceb435e13d81601755714e9fSE Android *	   function call.
98255e72915d4cbddceb435e13d81601755714e9fSE Android *
99255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Get a filename, open file and read in the binary policy
100255e72915d4cbddceb435e13d81601755714e9fSE Android *		into the policydb structure.
101255e72915d4cbddceb435e13d81601755714e9fSE Android */
102255e72915d4cbddceb435e13d81601755714e9fSE Androidint read_binary_policy(const char *path, policydb_t *);
103255e72915d4cbddceb435e13d81601755714e9fSE Android
104255e72915d4cbddceb435e13d81601755714e9fSE Android/*
105255e72915d4cbddceb435e13d81601755714e9fSE Android * Function Name: write_binary_policy
106255e72915d4cbddceb435e13d81601755714e9fSE Android *
107255e72915d4cbddceb435e13d81601755714e9fSE Android * Input: char * which is the path to the file containing the binary policy
108255e72915d4cbddceb435e13d81601755714e9fSE Android *
109255e72915d4cbddceb435e13d81601755714e9fSE Android * Output: Returns 0 upon success.  Upon failure, -1 is returned.
110255e72915d4cbddceb435e13d81601755714e9fSE Android *	   Possible failures are, filename with given path does not exist,
111255e72915d4cbddceb435e13d81601755714e9fSE Android *	   a failure to open the file, or a failure from prolicydb_read
112255e72915d4cbddceb435e13d81601755714e9fSE Android *	   function call.
113255e72915d4cbddceb435e13d81601755714e9fSE Android *
114255e72915d4cbddceb435e13d81601755714e9fSE Android * Description: Get a filename, open file and read in the binary policy
115255e72915d4cbddceb435e13d81601755714e9fSE Android *		into the policydb structure.
116255e72915d4cbddceb435e13d81601755714e9fSE Android */
117255e72915d4cbddceb435e13d81601755714e9fSE Androidint write_binary_policy(const char *path, policydb_t *);
118255e72915d4cbddceb435e13d81601755714e9fSE Android
119255e72915d4cbddceb435e13d81601755714e9fSE Android#endif
120