Skip to content

Commit ba3367d

Browse files
committed
Add more entropy to the generated secret
1 parent 1aabc8e commit ba3367d

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

src/Configurator/EnvConfigurator.php

+17-2
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,24 @@ private function evaluateValue($value, ?string $originalValue = null)
197197
return $value;
198198
}
199199

200-
private function generateRandomBytes($length = 16)
200+
private function generateRandomBytes($length = 16): string
201201
{
202-
return bin2hex(random_bytes($length));
202+
$base58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
203+
$length *= 2;
204+
205+
if (\PHP_VERSION_ID >= 80300) {
206+
$randomizer = new \Random\Randomizer();
207+
208+
return $randomizer->getBytesFromString($base58, $length);
209+
}
210+
211+
$max = \strlen($base58) - 1;
212+
$str = '';
213+
for ($i = 0; $i < $length; ++$i) {
214+
$str .= $base58[random_int(0, $max)];
215+
}
216+
217+
return $str;
203218
}
204219

205220
private function getContentsAfterApplyingRecipe(string $rootDir, Recipe $recipe, array $vars): array

tests/Configurator/EnvConfiguratorTest.php

+8-8
Original file line numberDiff line numberDiff line change
@@ -184,19 +184,19 @@ public function testConfigureGeneratedSecret()
184184
], $lock);
185185

186186
$envContents = file_get_contents($env);
187-
$this->assertMatchesRegularExpression('/#TRUSTED_SECRET_1=[a-z0-9]{64}/', $envContents);
188-
$this->assertMatchesRegularExpression('/#TRUSTED_SECRET_2=[a-z0-9]{64}/', $envContents);
189-
$this->assertMatchesRegularExpression('/#TRUSTED_SECRET_3=[a-z0-9]{64}/', $envContents);
190-
$this->assertMatchesRegularExpression('/APP_SECRET=[a-z0-9]{32}/', $envContents);
187+
$this->assertMatchesRegularExpression('/#TRUSTED_SECRET_1=[A-Za-z0-9]{64}/', $envContents);
188+
$this->assertMatchesRegularExpression('/#TRUSTED_SECRET_2=[A-Za-z0-9]{64}/', $envContents);
189+
$this->assertMatchesRegularExpression('/#TRUSTED_SECRET_3=[A-Za-z0-9]{64}/', $envContents);
190+
$this->assertMatchesRegularExpression('/APP_SECRET=[A-Za-z0-9]{32}/', $envContents);
191191
@unlink($env);
192192

193193
foreach ([$phpunitDist, $phpunit] as $file) {
194194
$fileContents = file_get_contents($file);
195195

196-
$this->assertMatchesRegularExpression('/<!-- env name="TRUSTED_SECRET_1" value="[a-z0-9]{64}" -->/', $fileContents);
197-
$this->assertMatchesRegularExpression('/<!-- env name="TRUSTED_SECRET_2" value="[a-z0-9]{64}" -->/', $fileContents);
198-
$this->assertMatchesRegularExpression('/<!-- env name="TRUSTED_SECRET_3" value="[a-z0-9]{64}" -->/', $fileContents);
199-
$this->assertMatchesRegularExpression('/<env name="APP_SECRET" value="[a-z0-9]{32}"\/>/', $fileContents);
196+
$this->assertMatchesRegularExpression('/<!-- env name="TRUSTED_SECRET_1" value="[A-Za-z0-9]{64}" -->/', $fileContents);
197+
$this->assertMatchesRegularExpression('/<!-- env name="TRUSTED_SECRET_2" value="[A-Za-z0-9]{64}" -->/', $fileContents);
198+
$this->assertMatchesRegularExpression('/<!-- env name="TRUSTED_SECRET_3" value="[A-Za-z0-9]{64}" -->/', $fileContents);
199+
$this->assertMatchesRegularExpression('/<env name="APP_SECRET" value="[A-Za-z0-9]{32}"\/>/', $fileContents);
200200
}
201201
}
202202

0 commit comments

Comments
 (0)