fix: treat an empty PLUGIN_SIGNING_KEY_FILE as unset #996

This commit is contained in:
Linus Rath
2026-09-30 14:24:29 +02:00
parent 70dee66966
commit b663f0e774
2 changed files with 17 additions and 2 deletions
@@ -64,6 +64,18 @@ describe('plugin signing key storage', () => {
await expect(getPublicKeyBase64()).resolves.toBe(expected.subarray(-32).toString('base64'));
});
it('treats an empty PLUGIN_SIGNING_KEY_FILE as unset', async () => {
const configDir = path.join(dir, 'config');
const pem = privateKeyPem();
await mkdir(configDir);
await writeFile(path.join(configDir, 'plugin-signing.key'), pem);
vi.stubEnv('PLUGIN_SIGNING_KEY_FILE', '');
vi.stubEnv('ADMIN_CONFIG_DIR', configDir);
const expected = createPublicKey(pem).export({ type: 'spki', format: 'der' }) as Buffer;
await expect(getPublicKeyBase64()).resolves.toBe(expected.subarray(-32).toString('base64'));
});
it('keeps generating plugin-signing.key when external path is unset', async () => {
const configDir = path.join(dir, 'config');
vi.stubEnv('ADMIN_CONFIG_DIR', configDir);
+5 -2
View File
@@ -47,8 +47,11 @@ async function loadExternal(path: string): Promise<{ privateKey: KeyObject; publ
}
async function loadOrCreate(): Promise<{ privateKey: KeyObject; publicKey: KeyObject }> {
const externalPath = process.env.PLUGIN_SIGNING_KEY_FILE;
if (externalPath !== undefined) return loadExternal(externalPath);
// An empty value (`PLUGIN_SIGNING_KEY_FILE=` in an env file) means unset,
// like the other *_FILE variables. Reading '' fails, and a failed load
// makes every bundle ship unsigned with only a console warning.
const externalPath = process.env.PLUGIN_SIGNING_KEY_FILE?.trim();
if (externalPath) return loadExternal(externalPath);
await ensureConfigDir();
const path = getConfigPath(KEY_FILENAME);