OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/autofill/core/browser/password_generator.h" | 5 #include "components/autofill/core/browser/password_generator.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
81 PasswordGenerator::~PasswordGenerator() {} | 81 PasswordGenerator::~PasswordGenerator() {} |
82 | 82 |
83 std::string PasswordGenerator::Generate() const { | 83 std::string PasswordGenerator::Generate() const { |
84 char password[255]; | 84 char password[255]; |
85 char unused_hypenated_password[255]; | 85 char unused_hypenated_password[255]; |
86 // Generate passwords that have numbers and upper and lower case letters. | 86 // Generate passwords that have numbers and upper and lower case letters. |
87 // No special characters included for now. | 87 // No special characters included for now. |
88 unsigned int mode = S_NB | S_CL | S_SL; | 88 unsigned int mode = S_NB | S_CL | S_SL; |
89 | 89 |
90 // gen_pron_pass() doesn't guarantee that it includes all of the type given | 90 // gen_pron_pass() doesn't guarantee that it includes all of the type given |
91 // in mode, so regenerate a few times if neccessary. | 91 // in mode, so if generated password is not proper we will force fix this by |
92 // TODO(gcasto): Is it worth regenerating at all? | 92 // |ForceFixPassword| as lowercase letters are default in generated password. |
AKV
2015/06/22 09:39:18
Can we reduce this password generation loop furthe
Deepak
2015/06/22 10:50:31
ok, I will raise the bug and discuss this.
| |
93 for (int i = 0; i < 10; ++i) { | 93 gen_pron_pass(password, unused_hypenated_password, password_length_, |
94 gen_pron_pass(password, unused_hypenated_password, | 94 password_length_, mode); |
95 password_length_, password_length_, mode); | 95 if (VerifyPassword(password)) |
96 if (VerifyPassword(password)) | 96 return std::string(password); |
AKV
2015/06/22 09:39:18
Looks legitimate.
Deepak
2015/06/22 10:50:31
Done.
| |
97 break; | |
98 } | |
99 | 97 |
100 // If the password still isn't conforming after a few iterations, force it | 98 // As the password isn't conforming force it to be so. This may change a |
101 // to be so. This may change a syllable in the password. | 99 // syllable in the password. |
102 std::string str_password(password); | 100 std::string str_password(password); |
103 if (!VerifyPassword(str_password)) { | 101 ForceFixPassword(&str_password); |
104 ForceFixPassword(&str_password); | |
105 } | |
106 return str_password; | 102 return str_password; |
107 } | 103 } |
108 | 104 |
109 } // namespace autofill | 105 } // namespace autofill |
OLD | NEW |