$this->certs =
$this->
normalizeFilePath($certificate);
} $this->cipher =
$cipher ?? \OPENSSL_CIPHER_AES_256_CBC;
} public function encrypt(Message
$message): Message
{ $bufferFile =
tmpfile();
$outputFile =
tmpfile();
$this->
iteratorToFile($message->
toIterable(),
$bufferFile);
if (!@
openssl_pkcs7_encrypt(stream_get_meta_data($bufferFile)['uri'
],
stream_get_meta_data($outputFile)['uri'
],
$this->certs,
[], 0,
$this->cipher
)) { throw new RuntimeException(sprintf('Failed to encrypt S/Mime message. Error: "%s".',
openssl_error_string()));
} $mimePart =
$this->
convertMessageToSMimePart($outputFile, 'application', 'pkcs7-mime'
);
$mimePart->
getHeaders() ->
addTextHeader('Content-Transfer-Encoding', 'base64'
) ->
addParameterizedHeader('Content-Disposition', 'attachment',
['name' => 'smime.p7m'
]) ;