Skip to content

Commit cc02e90

Browse files
committed
fix: remove speculative CRL extension fallback matching
Signed-off-by: Vitor Mattos <[email protected]>
1 parent e7e4435 commit cc02e90

2 files changed

Lines changed: 20 additions & 5 deletions

File tree

lib/Handler/CertificateEngine/AEngineHandler.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,18 @@ private function addCrlValidationInfo(array &$certData, string $certPem): void {
213213
*/
214214
private function extractCrlUrlsFromExtensions(array $extensions): array {
215215
$values = [];
216+
$acceptedCrlExtensionNames = [
217+
'crldistributionpoints',
218+
'x509v3 crl distribution points',
219+
'2.5.29.31',
220+
];
216221
foreach ($extensions as $extensionName => $extensionValue) {
217222
if (!is_string($extensionName)) {
218223
continue;
219224
}
220225

221226
$normalizedName = strtolower(trim($extensionName));
222-
$isCrlDistributionPoints =
223-
$normalizedName === 'crldistributionpoints'
224-
|| $normalizedName === 'x509v3 crl distribution points'
225-
|| $normalizedName === '2.5.29.31'
226-
|| str_contains($normalizedName, 'crl distribution points');
227+
$isCrlDistributionPoints = in_array($normalizedName, $acceptedCrlExtensionNames, true);
227228

228229
if (!$isCrlDistributionPoints) {
229230
continue;

tests/php/Unit/Handler/CertificateEngine/OpenSslHandlerTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,20 @@ public function testExtractCrlUrlsFromX509LabelExtensionName(): void {
496496
$this->assertSame(['https://example.org/crl/issuer.crl'], $result['urls']);
497497
}
498498

499+
public function testExtractCrlUrlsIgnoreUnknownExtensionNameWithSimilarText(): void {
500+
$handler = $this->getInstance();
501+
502+
$method = new \ReflectionMethod('OCA\\Libresign\\Handler\\CertificateEngine\\AEngineHandler', 'extractCrlUrlsFromExtensions');
503+
$method->setAccessible(true);
504+
505+
$result = $method->invoke($handler, [
506+
'Issuer CRL Distribution Points' => "Full Name:\nURI:https://example.org/crl/issuer.crl",
507+
]);
508+
509+
$this->assertFalse($result['hasExtension']);
510+
$this->assertSame([], $result['urls']);
511+
}
512+
499513
public function testRealCertificateRevocationInCrl(): void {
500514
$this->caIdentifierService->generateCaId('openssl');
501515

0 commit comments

Comments
 (0)