Skip to content

Commit dda0661

Browse files
authored
Merge pull request #11 from LibreCodeCoop/test/legacy-pfx-cli-fallback
test: CLI fallback extracts PEM from PFX via -legacy flag
2 parents 934fc9a + 89ad2ef commit dda0661

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

tests/Unit/Xml/DpsSignerTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,4 +170,27 @@ public function testExtractPemPartsReturnsPrivateKeyAndCertificateFromCliBundle(
170170
self::assertSame(rtrim($privateKeyPem), $parts[0]);
171171
self::assertSame(rtrim($certificatePem), $parts[1]);
172172
}
173+
174+
public function testExtractLegacyPemMaterialViaCLIReturnsPrivateKeyAndCertificate(): void
175+
{
176+
$method = new \ReflectionMethod(DpsSigner::class, 'extractLegacyPemMaterial');
177+
$method->setAccessible(true);
178+
179+
$key = openssl_pkey_new(['private_key_bits' => 2048, 'private_key_type' => OPENSSL_KEYTYPE_RSA]);
180+
self::assertNotFalse($key);
181+
$csr = openssl_csr_new(['commonName' => $this->testCnpj], $key, ['digest_alg' => 'sha256']);
182+
self::assertNotFalse($csr);
183+
$cert = openssl_csr_sign($csr, null, $key, 1, ['digest_alg' => 'sha256']);
184+
self::assertNotFalse($cert);
185+
$pfxData = '';
186+
$ok = openssl_pkcs12_export($cert, $pfxData, $key, 'legacypass');
187+
self::assertTrue($ok, 'openssl_pkcs12_export must succeed');
188+
189+
[$privateKeyPem, $certificatePem] = $method->invoke($this->signer, $pfxData, 'legacypass', $this->testCnpj);
190+
191+
self::assertStringContainsString('-----BEGIN PRIVATE KEY-----', $privateKeyPem);
192+
self::assertStringContainsString('-----END PRIVATE KEY-----', $privateKeyPem);
193+
self::assertStringContainsString('-----BEGIN CERTIFICATE-----', $certificatePem);
194+
self::assertStringContainsString('-----END CERTIFICATE-----', $certificatePem);
195+
}
173196
}

0 commit comments

Comments
 (0)