Skip to content

Commit a4cbd80

Browse files
authored
Improve password generation - KC-207 (#383)
1 parent b18a24d commit a4cbd80

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

keepercommander/generator.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# Keeper Commander
88
99
#
10-
10+
import logging
1111
import os
1212
import random
1313
import string
@@ -16,9 +16,23 @@
1616
def randomSample(sampleLength=0, sampleString=''):
1717
sample = ''
1818

19+
use_secrets = False
20+
21+
try:
22+
# Older version of Python (before 3.6) don't have this module.
23+
# If not installed, fall back to the original version of the code
24+
import secrets
25+
logging.debug("module 'secrets' is installed")
26+
use_secrets = True
27+
except ModuleNotFoundError:
28+
logging.warning("module 'secrets' is not installed")
29+
1930
for i in range(sampleLength):
20-
pos = int.from_bytes(os.urandom(2), 'big') % len(sampleString)
21-
sample += sampleString[pos]
31+
if use_secrets:
32+
sample += secrets.choice(sampleString)
33+
else:
34+
pos = int.from_bytes(os.urandom(2), 'big') % len(sampleString)
35+
sample += sampleString[pos]
2236

2337
return sample
2438

0 commit comments

Comments
 (0)