@@ -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