1 /*
2  * Python object wrapper of libbde_volume_t
3  *
4  * Copyright (C) 2011-2021, Joachim Metz <joachim.metz@gmail.com>
5  *
6  * Refer to AUTHORS for acknowledgements.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
20  */
21 
22 #if !defined( _PYBDE_VOLUME_H )
23 #define _PYBDE_VOLUME_H
24 
25 #include <common.h>
26 #include <types.h>
27 
28 #include "pybde_libbde.h"
29 #include "pybde_libbfio.h"
30 #include "pybde_python.h"
31 
32 #if defined( __cplusplus )
33 extern "C" {
34 #endif
35 
36 typedef struct pybde_volume pybde_volume_t;
37 
38 struct pybde_volume
39 {
40 	/* Python object initialization
41 	 */
42 	PyObject_HEAD
43 
44 	/* The libbde volume
45 	 */
46 	libbde_volume_t *volume;
47 
48 	/* The libbfio file IO handle
49 	 */
50 	libbfio_handle_t *file_io_handle;
51 };
52 
53 extern PyMethodDef pybde_volume_object_methods[];
54 extern PyTypeObject pybde_volume_type_object;
55 
56 int pybde_volume_init(
57      pybde_volume_t *pybde_volume );
58 
59 void pybde_volume_free(
60       pybde_volume_t *pybde_volume );
61 
62 PyObject *pybde_volume_signal_abort(
63            pybde_volume_t *pybde_volume,
64            PyObject *arguments );
65 
66 PyObject *pybde_volume_open(
67            pybde_volume_t *pybde_volume,
68            PyObject *arguments,
69            PyObject *keywords );
70 
71 PyObject *pybde_volume_open_file_object(
72            pybde_volume_t *pybde_volume,
73            PyObject *arguments,
74            PyObject *keywords );
75 
76 PyObject *pybde_volume_close(
77            pybde_volume_t *pybde_volume,
78            PyObject *arguments );
79 
80 PyObject *pybde_volume_is_locked(
81            pybde_volume_t *pybde_volume,
82            PyObject *arguments );
83 
84 PyObject *pybde_volume_read_buffer(
85            pybde_volume_t *pybde_volume,
86            PyObject *arguments,
87            PyObject *keywords );
88 
89 PyObject *pybde_volume_read_buffer_at_offset(
90            pybde_volume_t *pybde_volume,
91            PyObject *arguments,
92            PyObject *keywords );
93 
94 PyObject *pybde_volume_seek_offset(
95            pybde_volume_t *pybde_volume,
96            PyObject *arguments,
97            PyObject *keywords );
98 
99 PyObject *pybde_volume_get_offset(
100            pybde_volume_t *pybde_volume,
101            PyObject *arguments );
102 
103 PyObject *pybde_volume_get_size(
104            pybde_volume_t *pybde_volume,
105            PyObject *arguments );
106 
107 PyObject *pybde_volume_get_encryption_method(
108            pybde_volume_t *pybde_volume,
109            PyObject *arguments );
110 
111 PyObject *pybde_volume_get_volume_identifier(
112            pybde_volume_t *pybde_volume,
113            PyObject *arguments );
114 
115 PyObject *pybde_volume_get_creation_time(
116            pybde_volume_t *pybde_volume,
117            PyObject *arguments );
118 
119 PyObject *pybde_volume_get_creation_time_as_integer(
120            pybde_volume_t *pybde_volume,
121            PyObject *arguments );
122 
123 PyObject *pybde_volume_get_description(
124            pybde_volume_t *pybde_volume,
125            PyObject *arguments );
126 
127 PyObject *pybde_volume_get_number_of_key_protectors(
128            pybde_volume_t *pybde_volume,
129            PyObject *arguments );
130 
131 PyObject *pybde_volume_get_key_protector_by_index(
132            PyObject *pybde_volume,
133            int key_protector_index );
134 
135 PyObject *pybde_volume_get_key_protector(
136            pybde_volume_t *pybde_volume,
137            PyObject *arguments,
138            PyObject *keywords );
139 
140 PyObject *pybde_volume_get_key_protectors(
141            pybde_volume_t *pybde_volume,
142            PyObject *arguments );
143 
144 PyObject *pybde_volume_set_keys(
145            pybde_volume_t *pybde_volume,
146            PyObject *arguments,
147            PyObject *keywords );
148 
149 PyObject *pybde_volume_set_password(
150            pybde_volume_t *pybde_volume,
151            PyObject *arguments,
152            PyObject *keywords );
153 
154 PyObject *pybde_volume_set_recovery_password(
155            pybde_volume_t *pybde_volume,
156            PyObject *arguments,
157            PyObject *keywords );
158 
159 PyObject *pybde_volume_read_startup_key(
160            pybde_volume_t *pybde_volume,
161            PyObject *arguments,
162            PyObject *keywords );
163 
164 #if defined( __cplusplus )
165 }
166 #endif
167 
168 #endif /* !defined( _PYBDE_VOLUME_H ) */
169 
170