PHPMailer::DKIM_BodyC PHP Method

DKIM_BodyC() public method

Generate a DKIM canonicalization body.
public DKIM_BodyC ( string $body ) : string
$body string Message Body
return string
    public function DKIM_BodyC($body)
    {
        if ($body == '') {
            return "\r\n";
        }
        // stabilize line endings
        $body = str_replace("\r\n", "\n", $body);
        $body = str_replace("\n", "\r\n", $body);
        // END stabilize line endings
        while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") {
            $body = substr($body, 0, strlen($body) - 2);
        }
        return $body;
    }

Usage Example

Example #1
0
 /**
  * DKIM body canonicalization tests.
  * @link https://tools.ietf.org/html/rfc6376#section-3.4.4
  */
 public function testDKIMBodyCanonicalization()
 {
     //Example from https://tools.ietf.org/html/rfc6376#section-3.4.5
     $prebody = " C \r\nD \t E\r\n\r\n\r\n";
     $postbody = " C \r\nD \t E\r\n";
     $this->assertEquals($this->Mail->DKIM_BodyC(''), "\r\n", 'DKIM empty body canonicalization incorrect');
     $this->assertEquals(base64_encode(sha1($this->Mail->DKIM_BodyC(''), true)), 'uoq1oCgLlTqpdDX/iUbLy7J1Wic=', 'DKIM canonicalized empty body hash mismatch');
     $this->assertEquals($this->Mail->DKIM_BodyC($prebody), $postbody, 'DKIM body canonicalization incorrect');
 }