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; }
/** * 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'); }