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
|
/* Copyright (C) 2018 Mike Fleetwood
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
/* PasswordRAMStore
*
* Memory only store of passwords and passphrases. Works like an associative array with
* a unique key used to identify each password. Passwords are C strings which are stored
* in a block of the process' virtual memory locked into RAM. Looked up pointers to
* passwords are valid at least until the next time the store is modified by an insert or
* erase call. Passwords are wiped from memory when no longer wanted.
*
* Recommend using LUKS UUIDs as the key when storing LUKS passphrases.
*/
#ifndef GPARTED_PASSWORDRAMSTORE_H
#define GPARTED_PASSWORDRAMSTORE_H
#include <glibmm/ustring.h>
namespace GParted
{
class PasswordRAMStore
{
friend class PasswordRAMStoreTest; // To allow unit testing PasswordRAMStoreTest class
// access to private methods.
public:
static bool store( const Glib::ustring & key, const char * password );
static bool erase( const Glib::ustring & key );
static const char * lookup( const Glib::ustring & key );
private:
static void erase_all();
static const char * get_protected_mem();
};
} //GParted
#endif /* GPARTED_PASSWORDRAMSTORE_H */
|