feat: Add hexadecimal secret generation

Closes #695
This commit is contained in:
3wc
2025-10-18 15:03:02 -04:00
parent 5b504a1550
commit fc5855ff28
4 changed files with 13 additions and 0 deletions

View File

@ -188,6 +188,8 @@ func ReadSecretsConfig(appEnvPath string, composeFiles []string, stackName strin
// resolveCharset sets the passgen Alphabet required for a secret // resolveCharset sets the passgen Alphabet required for a secret
func resolveCharset(input string) string { func resolveCharset(input string) string {
switch strings.ToLower(input) { switch strings.ToLower(input) {
case "hex":
return passgen.AlphabetNumericAmbiguous + "abcdef"
case "special": case "special":
return passgen.AlphabetSpecial return passgen.AlphabetSpecial
case "safespecial": case "safespecial":

View File

@ -48,6 +48,12 @@ func TestReadSecretsConfig(t *testing.T) {
assert.Equal(t, "v1", secretsFromConfig["test_pass_six"].Version) assert.Equal(t, "v1", secretsFromConfig["test_pass_six"].Version)
assert.Equal(t, 0, secretsFromConfig["test_pass_six"].Length) assert.Equal(t, 0, secretsFromConfig["test_pass_six"].Length)
assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#$%^&*_-+=", secretsFromConfig["test_pass_six"].Charset) assert.Equal(t, "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#$%^&*_-+=", secretsFromConfig["test_pass_six"].Charset)
// Has a length modifier and a charset=hex modifier
assert.Equal(t, "test_example_com_test_pass_seven_v1", secretsFromConfig["test_pass_seven"].RemoteName)
assert.Equal(t, "v1", secretsFromConfig["test_pass_seven"].Version)
assert.Equal(t, 32, secretsFromConfig["test_pass_seven"].Length)
assert.Equal(t, "0123456789abcdef", secretsFromConfig["test_pass_seven"].Charset)
} }
func TestReadSecretsConfigWithLongDomain(t *testing.T) { func TestReadSecretsConfigWithLongDomain(t *testing.T) {

View File

@ -4,3 +4,4 @@ SECRET_TEST_PASS_THREE_VERSION=v2
SECRET_TEST_PASS_FOUR_VERSION=v1 # length=12 charset=default,safespecial SECRET_TEST_PASS_FOUR_VERSION=v1 # length=12 charset=default,safespecial
SECRET_TEST_PASS_FIVE_VERSION=v1 # length=12 charset=default,special SECRET_TEST_PASS_FIVE_VERSION=v1 # length=12 charset=default,special
SECRET_TEST_PASS_SIX_VERSION=v1 # charset=default,special SECRET_TEST_PASS_SIX_VERSION=v1 # charset=default,special
SECRET_TEST_PASS_SEVEN_VERSION=v1 # length=32 charset=hex

View File

@ -11,6 +11,7 @@ services:
- test_pass_four - test_pass_four
- test_pass_five - test_pass_five
- test_pass_six - test_pass_six
- test_pass_seven
secrets: secrets:
test_pass_one: test_pass_one:
@ -31,3 +32,6 @@ secrets:
test_pass_six: test_pass_six:
external: true external: true
name: ${STACK_NAME}_test_pass_six_${SECRET_TEST_PASS_SIX_VERSION} name: ${STACK_NAME}_test_pass_six_${SECRET_TEST_PASS_SIX_VERSION}
test_pass_seven:
external: true
name: ${STACK_NAME}_test_pass_seven_${SECRET_TEST_PASS_SEVEN_VERSION}