/
home
/
sjslayjy
/
public_html
/
theweavenest
/
vendor
/
symfony
/
mime
/
Tests
/
Crypto
/
Upload File
HOME
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Mime\Tests\Crypto; use Symfony\Component\Mime\Crypto\SMimeEncrypter; use Symfony\Component\Mime\Crypto\SMimeSigner; use Symfony\Component\Mime\Email; use Symfony\Component\Mime\Message; /** * @requires extension openssl */ class SMimeEncrypterTest extends SMimeTestCase { public function testEncryptMessage() { $message = (new Email()) ->date(new \DateTimeImmutable('2019-04-07 10:36:30', new \DateTimeZone('Europe/Paris'))) ->to('fabien@symfony.com') ->subject('Testing') ->from('noreply@example.com') ->text('El Barto was not here'); $message->getHeaders()->addIdHeader('Message-ID', 'some@id'); $encrypter = new SMimeEncrypter($this->samplesDir.'encrypt.crt'); $encryptedMessage = $encrypter->encrypt($message); $this->assertMessageIsEncryptedProperly($encryptedMessage, $message); } public function testEncryptSignedMessage() { $message = (new Email()) ->date(new \DateTimeImmutable('2019-04-07 10:36:30', new \DateTimeZone('Europe/Paris'))) ->to('fabien@symfony.com') ->bcc('luna@symfony.com') ->subject('Testing') ->from('noreply@example.com') ->text('El Barto was not here'); $message->getHeaders()->addIdHeader('Message-ID', 'some@id'); $signer = new SMimeSigner($this->samplesDir.'sign.crt', $this->samplesDir.'sign.key'); $signedMessage = $signer->sign($message); $encrypter = new SMimeEncrypter($this->samplesDir.'encrypt.crt'); $encryptedMessage = $encrypter->encrypt($signedMessage); $this->assertMessageIsEncryptedProperly($encryptedMessage, $signedMessage); } public function testEncryptMessageWithMultipleCerts() { $message = (new Email()) ->date(new \DateTimeImmutable('2019-04-07 10:36:30', new \DateTimeZone('Europe/Paris'))) ->to('fabien@symfony.com') ->subject('Testing') ->from('noreply@example.com') ->text('El Barto was not here'); $message2 = (new Email()) ->date(new \DateTimeImmutable('2019-04-07 10:36:30', new \DateTimeZone('Europe/Paris'))) ->to('luna@symfony.com') ->subject('Testing') ->from('noreply@example.com') ->text('El Barto was not here'); $message->getHeaders()->addIdHeader('Message-ID', 'some@id'); $message2->getHeaders()->addIdHeader('Message-ID', 'some@id2'); $encrypter = new SMimeEncrypter(['fabien@symfony.com' => $this->samplesDir.'encrypt.crt', 'luna@symfony.com' => $this->samplesDir.'encrypt2.crt']); $this->assertMessageIsEncryptedProperly($encrypter->encrypt($message), $message); $this->assertMessageIsEncryptedProperly($encrypter->encrypt($message2), $message2); } private function assertMessageIsEncryptedProperly(Message $message, Message $originalMessage): void { $messageFile = $this->generateTmpFilename(); file_put_contents($messageFile, $messageString = $message->toString()); // Ensure the proper line-ending is used for compatibility with the RFC $this->assertStringContainsString("\n\r", $messageString); $this->assertStringNotContainsString("\n\n", $messageString); $outputFile = $this->generateTmpFilename(); $this->assertMessageHeaders($message, $originalMessage); $this->assertTrue( openssl_pkcs7_decrypt( $messageFile, $outputFile, 'file://'.$this->samplesDir.'encrypt.crt', 'file://'.$this->samplesDir.'encrypt.key' ), sprintf('Decryption of the message failed. Internal error "%s".', openssl_error_string()) ); $this->assertEquals(str_replace("\r", '', $originalMessage->toString()), str_replace("\r", '', file_get_contents($outputFile))); } }