VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/DcsCfg/DcsCfg.h
blob: 37fdbca1aae03d20df63bd8fe6677b5f4926bc02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/** @file
This is DCS configuration tool. (EFI shell application/wizard)

Copyright (c) 2016. Disk Cryptography Services for EFI (DCS), Alex Kolotnikov
Copyright (c) 2016. VeraCrypt, Mounir IDRASSI 

This program and the accompanying materials
are licensed and made available under the terms and conditions
of the GNU Lesser General Public License, version 3.0 (LGPL-3.0).

The full text of the license may be found at
https://opensource.org/licenses/LGPL-3.0
**/

#ifndef __DcsCfg_h__
#define __DcsCfg_h__

#include <Uefi.h>
#include <Uefi/UefiGpt.h>

//////////////////////////////////////////////////////////////////////////
// Block I/O
//////////////////////////////////////////////////////////////////////////
extern UINTN             BioIndexStart;
extern UINTN             BioIndexEnd;
extern BOOLEAN           BioSkipPartitions;

void
BioPrintDevicePath(
	UINTN bioIndex
	);

VOID
PrintBioList();

EFI_STATUS
BlockRangeWipe(
	IN EFI_HANDLE h,
	IN UINT64 start,
	IN UINT64 end
	);

//////////////////////////////////////////////////////////////////////////
// System crypt
//////////////////////////////////////////////////////////////////////////
EFI_STATUS
VolumeEncrypt(
	IN UINTN index);

EFI_STATUS
VolumeDecrypt(
	IN UINTN index);

EFI_STATUS
OSRestoreKey();

EFI_STATUS
OSDecrypt();

EFI_STATUS
VolumeChangePassword(
	IN UINTN index);

EFI_STATUS
CreateVolumeHeaderOnDisk(
	IN UINTN          index,
	OUT VOID          **pinfo,
	OUT EFI_HANDLE    *phDisk,
	OUT UINT64        *sector
	);

EFI_STATUS
GptCryptFile(
	IN BOOLEAN  crypt
	);

EFI_STATUS
GptEdit(
	IN UINTN index
	);

EFI_STATUS
OuterInit();

//////////////////////////////////////////////////////////////////////////
// Security regions
//////////////////////////////////////////////////////////////////////////
extern UINTN gSecRigonCount;

EFI_STATUS
SecRigionMark();

EFI_STATUS
SecRigionWipe();

EFI_STATUS
SecRigionAdd(
	IN UINTN       regIdx
	);

EFI_STATUS
SecRigionDump(
	IN EFI_HANDLE   hBio,
	IN CHAR16       *prefix
	);

//////////////////////////////////////////////////////////////////////////
// Set DcsInt parameters
//////////////////////////////////////////////////////////////////////////
VOID
UpdateDcsBoot();

//////////////////////////////////////////////////////////////////////////
// DCS authorization check
//////////////////////////////////////////////////////////////////////////

EFI_STATUS 
IntCheckVolume(
	UINTN index
	);

VOID
DisksAuthCheck();

VOID
TestAuthAsk();


//////////////////////////////////////////////////////////////////////////
// RUD / USB
//////////////////////////////////////////////////////////////////////////
extern UINTN             UsbIndex;

VOID
PrintUsbList();

EFI_STATUS
UsbScApdu(
	IN CHAR16* hexString);

//////////////////////////////////////////////////////////////////////////
// Beep
//////////////////////////////////////////////////////////////////////////
VOID
PrintSpeakerList();

VOID
TestSpeaker();

//////////////////////////////////////////////////////////////////////////
// Graphics
//////////////////////////////////////////////////////////////////////////
VOID
PrintGraphList();

//////////////////////////////////////////////////////////////////////////
// Touch
//////////////////////////////////////////////////////////////////////////
extern UINTN       TouchIndex;

VOID
PrintTouchList();

VOID
TestTouch();

//////////////////////////////////////////////////////////////////////////
// Interactive setup
//////////////////////////////////////////////////////////////////////////

EFI_STATUS
DcsInteractiveSetup();

//////////////////////////////////////////////////////////////////////////
// TPM
//////////////////////////////////////////////////////////////////////////
EFI_STATUS
Tpm12ListPcrs(
	UINT32 sPcr,
	UINT32 ePcr
	);

EFI_STATUS
Tpm12NvList();

EFI_STATUS
Tpm12DcsConfigure();

#endif // DcsCfg_h__