Monero
Toggle main menu visibility
Loading...
Searching...
No Matches
src
common
password.h
Go to the documentation of this file.
1
// Copyright (c) 2014-2022, The Monero Project
2
//
3
// All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without modification, are
6
// permitted provided that the following conditions are met:
7
//
8
// 1. Redistributions of source code must retain the above copyright notice, this list of
9
// conditions and the following disclaimer.
10
//
11
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
12
// of conditions and the following disclaimer in the documentation and/or other
13
// materials provided with the distribution.
14
//
15
// 3. Neither the name of the copyright holder nor the names of its contributors may be
16
// used to endorse or promote products derived from this software without specific
17
// prior written permission.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
//
29
// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
30
31
#pragma once
32
33
#include <string>
34
#include <atomic>
35
#include <boost/optional/optional.hpp>
36
#include "
wipeable_string.h
"
37
38
namespace
tools
39
{
40
class
password_container
41
{
42
public
:
43
static
constexpr
const
size_t
max_password_size
= 1024;
44
46
password_container
() noexcept;
47
49
password_container
(
std
::
string
&&
password
) noexcept;
50
password_container
(const
epee
::wipeable_string&
password
) noexcept;
51
53
static
boost
::optional<
password_container
>
prompt
(
bool
verify, const
char
*mesage =
"Password"
,
bool
hide_input =
true
);
54
static
std
::atomic<
bool
>
is_prompting
;
55
56
password_container
(const
password_container
&) = delete;
57
password_container
(
password_container
&& rhs) = default;
58
60
~
password_container
() noexcept;
61
62
password_container
& operator=(const
password_container
&) = delete;
63
password_container
& operator=(
password_container
&&) = default;
64
65
const
epee
::wipeable_string &
password
() const noexcept {
return
m_password
; }
66
67
private
:
68
epee::wipeable_string
m_password
;
69
};
70
71
struct
login
72
{
73
login
() =
default
;
74
88
static
boost::optional<login>
parse
(std::string&& userpass,
bool
verify,
const
std::function<boost::optional<password_container>(
bool
)> &prompt);
89
90
login
(
const
login
&) =
delete
;
91
login
(
login
&&) =
default
;
92
~login
() =
default
;
93
login
&
operator=
(
const
login
&) =
delete
;
94
login
&
operator=
(
login
&&) =
default
;
95
96
std::string
username
;
97
password_container
password
;
98
};
99
}
epee::wipeable_string
Definition
wipeable_string.h:41
tools::password_container
Definition
password.h:41
tools::password_container::password_container
password_container() noexcept
Empty password.
Definition
password.cpp:235
tools::password_container::password
const epee::wipeable_string & password() const noexcept
Definition
password.h:65
tools::password_container::prompt
static boost::optional< password_container > prompt(bool verify, const char *mesage="Password", bool hide_input=true)
Definition
password.cpp:252
tools::password_container::m_password
epee::wipeable_string m_password
Definition
password.h:68
tools::password_container::max_password_size
static constexpr const size_t max_password_size
Definition
password.h:43
tools::password_container::is_prompting
static std::atomic< bool > is_prompting
Definition
password.h:54
true
#define true
boost
Definition
portable_binary_archive.hpp:29
epee
TODO: (mj-xmr) This will be reduced in an another PR.
Definition
byte_slice.h:40
std
Definition
enums.h:68
tools
Various Tools.
Definition
apply_permutation.h:40
tools::login::operator=
login & operator=(const login &)=delete
tools::login::login
login(const login &)=delete
tools::login::password
password_container password
Definition
password.h:97
tools::login::username
std::string username
Definition
password.h:96
tools::login::operator=
login & operator=(login &&)=default
tools::login::parse
static boost::optional< login > parse(std::string &&userpass, bool verify, const std::function< boost::optional< password_container >(bool)> &prompt)
Definition
password.cpp:267
tools::login::~login
~login()=default
tools::login::login
login(login &&)=default
tools::login::login
login()=default
wipeable_string.h
Generated on
for Monero by
1.17.0