PRCYCoin  2.0.0.7rc1
P2P Digital Currency
scoring.hpp
Go to the documentation of this file.
1 #ifndef __ZXCVBN__SCORING_HPP
2 #define __ZXCVBN__SCORING_HPP
3 
4 #include <zxcvbn/common.hpp>
5 
6 #include <functional>
7 #include <memory>
8 #include <string>
9 #include <regex>
10 #include <vector>
11 
12 namespace zxcvbn {
13 
14 const auto START_UPPER = std::regex(R"(^[A-Z][^A-Z]+$)");
15 const auto END_UPPER = std::regex(R"(^[^A-Z]+[A-Z]$)");
16 const auto ALL_UPPER = std::regex(R"(^[^a-z]+$)");
17 const auto ALL_LOWER = std::regex(R"(^[^A-Z]+$)");
18 
20 const auto REFERENCE_YEAR = 2016;
21 
22 struct ScoringResult {
23  std::string password;
26  std::vector<std::unique_ptr<Match>> bruteforce_matches;
27  std::vector<std::reference_wrapper<Match>> sequence;
28 };
29 
30 template<class T>
31 T nCk(T n, T k) {
32  // http://blog.plover.com/math/choose.html
33  if (k > n) return 0;
34  if (k == 0) return 1;
35  T r = 1;
36  for (T d = 1; d <= k; ++d) {
37  r *= n;
38  r /= d;
39  n -= 1;
40  }
41  return r;
42 }
43 
44 ScoringResult most_guessable_match_sequence(const std::string & password,
45  std::vector<Match> & matches,
46  bool exclude_additive = false);
47 
48 guesses_t estimate_guesses(Match & match, const std::string & password);
49 
50 #define MATCH_FN(title, upper, lower) \
51  guesses_t lower##_guesses(const Match &);
52 MATCH_RUN();
53 #undef MATCH_FN
54 
55 guesses_t uppercase_variations(const Match & match);
56 guesses_t l33t_variations(const Match & match);
57 
58 }
59 
60 #endif
61 
zxcvbn::MIN_YEAR_SPACE
const guesses_t MIN_YEAR_SPACE
Definition: scoring.hpp:19
zxcvbn::most_guessable_match_sequence
ScoringResult most_guessable_match_sequence(const std::string &password, std::vector< Match > &matches, bool exclude_additive)
Definition: scoring.cpp:93
common.hpp
zxcvbn::MATCH_RUN
MATCH_RUN()
zxcvbn::ScoringResult::password
std::string password
Definition: scoring.hpp:23
zxcvbn::ALL_UPPER
const auto ALL_UPPER
Definition: scoring.hpp:16
zxcvbn
Definition: _frequency_lists.cpp:7
zxcvbn::estimate_guesses
guesses_t estimate_guesses(Match &match, const std::string &password)
Definition: scoring.cpp:273
r
void const uint64_t uint64_t * r
Definition: field_5x52_asm_impl.h:10
zxcvbn::guesses_log10_t
int guesses_log10_t
Definition: common.hpp:16
zxcvbn::END_UPPER
const auto END_UPPER
Definition: scoring.hpp:15
zxcvbn::ScoringResult::bruteforce_matches
std::vector< std::unique_ptr< Match > > bruteforce_matches
Definition: scoring.hpp:26
zxcvbn::START_UPPER
const auto START_UPPER
Definition: scoring.hpp:14
zxcvbn::REFERENCE_YEAR
const auto REFERENCE_YEAR
Definition: scoring.hpp:20
zxcvbn::guesses_t
zxcvbn_guesses_t guesses_t
Definition: common.hpp:15
zxcvbn::ScoringResult::guesses
guesses_t guesses
Definition: scoring.hpp:24
zxcvbn::ScoringResult
Definition: scoring.hpp:22
zxcvbn::ALL_LOWER
const auto ALL_LOWER
Definition: scoring.hpp:17
zxcvbn::ScoringResult::guesses_log10
guesses_log10_t guesses_log10
Definition: scoring.hpp:25
zxcvbn::l33t_variations
guesses_t l33t_variations(const Match &match)
Definition: scoring.cpp:475
zxcvbn::nCk
T nCk(T n, T k)
Definition: scoring.hpp:31
zxcvbn::ScoringResult::sequence
std::vector< std::reference_wrapper< Match > > sequence
Definition: scoring.hpp:27
zxcvbn::uppercase_variations
guesses_t uppercase_variations(const Match &match)
Definition: scoring.cpp:442