fix(HTTP Request Node): Keep SSL passphrases with whitespace intact (#37020)

This commit is contained in:
Bernhard Wittmann
2026-08-27 15:38:15 +00:00
committed by GitHub
parent e2afe16634
commit bcd240f589
4 changed files with 55 additions and 3 deletions
@@ -312,8 +312,7 @@ export const setAgentOptions = (
if (sslCertificates.ca) agentOptions.ca = formatPemBlock(sslCertificates.ca);
if (sslCertificates.cert) agentOptions.cert = formatPemBlock(sslCertificates.cert);
if (sslCertificates.key) agentOptions.key = formatPemBlock(sslCertificates.key);
if (sslCertificates.passphrase)
agentOptions.passphrase = formatPemBlock(sslCertificates.passphrase);
if (sslCertificates.passphrase) agentOptions.passphrase = sslCertificates.passphrase;
requestOptions.agentOptions = agentOptions;
}
};
@@ -131,6 +131,48 @@ describe('HTTP Node Utils', () => {
},
});
});
it('should keep a passphrase containing whitespace unchanged', async () => {
const requestOptions: IRequestOptions = {
method: 'GET',
uri: 'https://example.com',
};
const sslCertificates = {
passphrase: 'my secret key',
};
setAgentOptions(requestOptions, sslCertificates);
expect(requestOptions).toStrictEqual({
method: 'GET',
uri: 'https://example.com',
agentOptions: {
passphrase: 'my secret key',
},
});
});
it('should wrap compact PEM certificates but not the passphrase', async () => {
const requestOptions: IRequestOptions = {
method: 'GET',
uri: 'https://example.com',
};
const sslCertificates = {
cert: `-----BEGIN CERTIFICATE-----${'A'.repeat(70)}-----END CERTIFICATE-----`,
key: `-----BEGIN PRIVATE KEY-----${'B'.repeat(70)}-----END PRIVATE KEY-----`,
passphrase: 'my secret key',
};
setAgentOptions(requestOptions, sslCertificates);
expect(requestOptions.agentOptions).toStrictEqual({
cert: `-----BEGIN CERTIFICATE-----\n${'A'.repeat(64)}\n${'A'.repeat(6)}\n-----END CERTIFICATE-----`,
key: `-----BEGIN PRIVATE KEY-----\n${'B'.repeat(64)}\n${'B'.repeat(6)}\n-----END PRIVATE KEY-----`,
passphrase: 'my secret key',
});
});
});
describe('sanitizeUiMessage', () => {