lib/classes/Swift/Signers/SMimeSigner.php
protected function smimeSignMessage(Swift_Message $message)
    {
        // If we don't have a certificate we can't sign the message
        if (null === $this->signCertificate) {
            return;
        }

        // Work on a clone of the original message
        $signMessage = clone $message;
        $signMessage->clearSigners();

        if ($this->wrapFullMessage) {
            // The original message essentially becomes the body of the new
            // wrapped message
            $signMessage = $this->wrapMimeMessage($signMessage);
        } else {
            // Only keep header needed to parse the body correctly
            $this->clearAllHeaders($signMessage);
            $this->copyHeaders(
                $message,
                $signMessage,
                [
                    'Content-Type',
                    'Content-Transfer-Encoding',
                    'Content-Disposition',
                ]
            );
        }

        // Copy the cloned message into a temporary file stream
        $messageStream = new Swift_ByteStream_TemporaryFileByteStream();
        $signMessage->toByteStream($messageStream);
        $messageStream->commit();
        $signedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();

        // Sign the message using openssl
        if (!openssl_pkcs7_sign(
                $messageStream->getPath(),
                $signedMessageStream->getPath(),
                $this->signCertificate,
                $this->signPrivateKey,
                [],
                $this->signOptions,
                $this->extraCerts
            )
        ) {
            throw new Swift_IoException(sprintf('Failed to sign S/Mime message. Error: "%s".', openssl_error_string()));
        }

        // Parse the resulting signed message content back into the Swift message
        // preserving the original headers
        $this->parseSSLOutput($signedMessageStream, $message);
    }
protected function smimeSignMessage(Swift_Message $message)
    {
        // If we don't have a certificate we can't sign the message
        if (null === $this->signCertificate) {
            return;
        }

        // Work on a clone of the original message
        $signMessage = clone $message;
        $signMessage->clearSigners();

        if ($this->wrapFullMessage) {
            // The original message essentially becomes the body of the new
            // wrapped message
            $signMessage = $this->wrapMimeMessage($signMessage);
        } else {
            // Only keep header needed to parse the body correctly
            $this->clearAllHeaders($signMessage);
            $this->copyHeaders(
                $message,
                $signMessage,
                [
                    'Content-Type',
                    'Content-Transfer-Encoding',
                    'Content-Disposition',
                ]
            );
        }

        // Copy the cloned message into a temporary file stream
        $messageStream = new Swift_ByteStream_TemporaryFileByteStream();
        $signMessage->toByteStream($messageStream);
        $messageStream->commit();
        $signedMessageStream = new Swift_ByteStream_TemporaryFileByteStream();

        // Sign the message using openssl
        if (!openssl_pkcs7_sign(
                $messageStream->getPath(),
                $signedMessageStream->getPath(),
                $this->signCertificate,
                $this->signPrivateKey,
                [],
                $this->signOptions,
                $this->extraCerts
            )
        ) {
            throw new Swift_IoException(sprintf('Failed to sign S/Mime message. Error: "%s".', openssl_error_string()));
        }

        // Parse the resulting signed message content back into the Swift message
        // preserving the original headers
        $this->parseSSLOutput($signedMessageStream, $message);
    }
protected function smimeSignMessage ( Swift_Message $ message ) { // If we don't have a certificate we can't sign the message if ( null === $ this -> signCertificate ) { return ; } // Work on a clone of the original message $ signMessage = clone $ message ; $ signMessage -> clearSigners ( ) ; if ( $ this -> wrapFullMessage ) { // The original message essentially becomes the body of the new // wrapped message $ signMessage = $ this -> wrapMimeMessage ( $ signMessage ) ; } else { // Only keep header needed to parse the body correctly $ this -> clearAllHeaders ( $ signMessage ) ; $ this -> copyHeaders ( $ message , $ signMessage , [ 'Content-Type' , 'Content-Transfer-Encoding' , 'Content-Disposition' , ] ) ; } // Copy the cloned message into a temporary file stream $ messageStream = new Swift_ByteStream_TemporaryFileByteStream ( ) ; $ signMessage -> toByteStream ( $ messageStream ) ; $ messageStream -> commit ( ) ; $ signedMessageStream = new Swift_ByteStream_TemporaryFileByteStream ( ) ; // Sign the message using openssl if ( ! openssl_pkcs7_sign ( $ messageStream -> getPath ( ) , $ signedMessageStream -> getPath ( ) , $ this -> signCertificate , $ this -> signPrivateKey , [ ] , $ this -> signOptions , $ this -> extraCerts ) ) { throw new Swift_IoException ( sprintf ( 'Failed to sign S/Mime message. Error: "%s".' , openssl_error_string ( ) ) ) ; } // Parse the resulting signed message content back into the Swift message // preserving the original headers $ this -> parseSSLOutput ( $ signedMessageStream , $ message ) ; }
Sign a Swift message.
Sign a Swift message .