Set the headers to sign.
public setHeaders ( Swift_Mime_HeaderSet $headers ) : Swift_Signers_DKIMSigner | ||
$headers | Swift_Mime_HeaderSet | |
return | Swift_Signers_DKIMSigner |
public function setHeaders(Swift_Mime_HeaderSet $headers) { if (!$this->_peclLoaded) { return parent::setHeaders($headers); } //dkim_sign(privateKey, selector, domain[, header_canon[, body_canon[, sign_alg[, body_length]]]]) $bodyLen = $this->_bodyLen(); if (is_bool($bodyLen)) { $bodyLen = -1; } $hash = $this->_hashAlgorithm == 'rsa-sha1' ? DKIM_SIGN_RSASHA1 : DKIM_SIGN_RSASHA256; $bodyCanon = $this->_bodyCanon == 'simple' ? DKIM_CANON_SIMPLE : DKIM_CANON_RELAXED; $headerCanon = $this->_headerCanon == 'simple' ? DKIM_CANON_SIMPLE : DKIM_CANON_RELAXED; $this->_dkimHandler = dkim_sign($this->_privateKey, $this->_selector, $this->_domainName, $headerCanon, $bodyCanon, $hash, $bodyLen); $listHeaders = $headers->listAll(); foreach ($listHeaders as $hName) { // Check if we need to ignore Header if (!isset($this->_ignoredHeaders[strtolower($hName)])) { $tmp = $headers->getAll($hName); if ($headers->has($hName)) { foreach ($tmp as $header) { if ($header->getFieldBody() != '') { dkim_header($this->_dkimHandler, $header->toString()); $this->_signedHeaders[] = $header->getFieldName(); } } } } } return $this; }
public function testSigningSimpleRelaxed256() { $headerSet = $this->_createHeaderSet(); $messageContent = "Hello World"; $signer = new Swift_Signers_DKIMSigner(file_get_contents(dirname(dirname(dirname(__DIR__))) . '/_samples/dkim/dkim.test.priv'), 'dummy.nxdomain.be', 'dummySelector'); $signer->setHashAlgorithm('rsa-sha256'); $signer->setSignatureTimestamp('1299879181'); $signer->setBodyCanon('relaxed'); $altered = $signer->getAlteredHeaders(); $this->assertEquals(array('DKIM-Signature'), $altered); $signer->reset(); $signer->setHeaders($headerSet); $this->assertFalse($headerSet->has('DKIM-Signature')); $signer->startBody(); $signer->write($messageContent); $signer->endBody(); $signer->addSignature($headerSet); $this->assertTrue($headerSet->has('DKIM-Signature')); $dkim = $headerSet->getAll('DKIM-Signature'); $sig = reset($dkim); $this->assertEquals($sig->getValue(), 'v=1; a=rsa-sha256; bh=f+W+hu8dIhf2VAni89o8lF6WKTXi7nViA4RrMdpD5/U=; d=dummy.nxdomain.be; h=; i=@dummy.nxdomain.be; s=dummySelector; c=simple/relaxed; t=1299879181; b=M5eomH/zamyzix9kOes+6YLzQZxuJdBP4x3nP9zF2N26eMLG2/cBKbnNyqiOTDhJdYfWPbLIa 1CWnjST0j5p4CpeOkGYuiE+M4TWEZwhRmRWootlPO3Ii6XpbBJKFk1o9zviS7OmXblUUE4aqb yRSIMDhtLdCK5GlaCneFLN7RQ='); }