Skip to content

Commit 6e816bc

Browse files
committed
Generate gandom key name based on ConfigVarExpender#KEY_PATTERN regex.
1 parent 8e0136a commit 6e816bc

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

logstash-core/src/main/java/org/logstash/secret/cli/SecretStoreCli.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ public void command(String primaryCommand, SecureConfig config, String... allArg
263263
final SecretStore secretStore = secretStoreFactory.load(config);
264264
for (String argument : commandLine.getArguments()) {
265265
if (!ConfigVariableExpander.KEY_PATTERN.matcher(argument).matches()) {
266-
throw new IllegalArgumentException(String.format("Invalid secret key name `%s` provided. %s", argument, ConfigVariableExpander.KEY_PATTERN_DESCRIPTION);
266+
throw new IllegalArgumentException(String.format("Invalid secret key name `%s` provided. %s", argument, ConfigVariableExpander.KEY_PATTERN_DESCRIPTION));
267267
}
268268
final SecretIdentifier id = new SecretIdentifier(argument);
269269
final byte[] existingValue = secretStore.retrieveSecret(id);

logstash-core/src/test/java/org/logstash/secret/cli/SecretStoreCliTest.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import java.util.Map;
3636
import java.util.Optional;
3737
import java.util.Queue;
38-
import java.util.UUID;
38+
import java.util.Random;
3939

4040
import static junit.framework.TestCase.assertTrue;
4141
import static org.assertj.core.api.Assertions.assertThat;
@@ -387,9 +387,21 @@ private void assertNotListed(String... expected) {
387387
assertTrue(Arrays.stream(expected).noneMatch(terminal.out::contains));
388388
}
389389

390+
private final static String KEY_FIRST_CHAR_CANDIDATES = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_.";
391+
private final static String KEY_REST_CHARS = KEY_FIRST_CHAR_CANDIDATES.concat("01234567890");
390392
private String getRandomKeyName() {
391-
final String[] uuidParts = UUID.randomUUID().toString().split("-");
392-
return "r".concat(uuidParts[0]).concat("_").concat(uuidParts[1]);
393+
final Random random = new Random();
394+
final StringBuilder sb = new StringBuilder();
395+
396+
// add a random legal first-character
397+
sb.append(KEY_FIRST_CHAR_CANDIDATES.charAt(random.nextInt(KEY_FIRST_CHAR_CANDIDATES.length())));
398+
399+
// add between 0 and 40 random legal rest-characters
400+
final int more = 40;
401+
random.ints(more, 0, KEY_REST_CHARS.length())
402+
.mapToObj(KEY_REST_CHARS::charAt)
403+
.forEach(sb::append);
404+
return sb.toString().toLowerCase();
393405
}
394406

395407
private void assertPrimaryHelped() {

0 commit comments

Comments
 (0)