* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Badcow\DNS\Tests\Rdata; use Badcow\DNS\Parser\ParseException; use Badcow\DNS\Rcode; use Badcow\DNS\Rdata\DecodeException; use Badcow\DNS\Rdata\Factory; use Badcow\DNS\Rdata\TSIG; use PHPUnit\Framework\TestCase; class TsigTest extends TestCase { private $sampleMac = <<assertEquals('TSIG', $tsig->getType()); } public function testGetTypeCode(): void { $tsig = new TSIG(); $this->assertEquals(250, $tsig->getTypeCode()); } public function testToText(): void { $tsig = new TSIG(); $tsig->setAlgorithmName('SAMPLE-ALG.EXAMPLE.'); $tsig->setTimeSigned(new \DateTime('Tue Jan 21 00:00:00 1997')); $tsig->setFudge(300); $tsig->setMac(base64_decode($this->sampleMac)); $tsig->setOriginalId(54321); $tsig->setError(Rcode::BADALG); $tsig->setOtherData(base64_decode($this->sampleOtherData)); $mac = str_replace(["\r", "\n"], '', $this->sampleMac); $otherData = str_replace(["\r", "\n"], '', $this->sampleOtherData); $expectation = 'SAMPLE-ALG.EXAMPLE. 853804800 300 '.$mac.' 54321 21 '.$otherData; $this->assertEquals($expectation, $tsig->toText()); } /** * @throws ParseException */ public function testFromText(): void { $mac = str_replace(["\r", "\n"], '', $this->sampleMac); $otherData = str_replace(["\r", "\n"], '', $this->sampleOtherData); $text = 'SAMPLE-ALG.EXAMPLE. 853804800 300 '.$mac.' 54321 21 '.$otherData; $expectedTimeSigned = new \DateTime('Tue Jan 21 00:00:00 1997'); $tsig = new TSIG(); $tsig->fromText($text); $this->assertEquals('SAMPLE-ALG.EXAMPLE.', $tsig->getAlgorithmName()); $this->assertEquals($expectedTimeSigned, $tsig->getTimeSigned()); $this->assertEquals(300, $tsig->getFudge()); $this->assertEquals(base64_decode($mac), $tsig->getMac()); $this->assertEquals(54321, $tsig->getOriginalId()); $this->assertEquals(Rcode::BADALG, $tsig->getError()); $this->assertEquals(base64_decode($otherData), $tsig->getOtherData()); } /** * @throws DecodeException */ public function testWire(): void { $tsig = new TSIG(); $tsig->setAlgorithmName('SAMPLE-ALG.EXAMPLE.'); $tsig->setTimeSigned(new \DateTime('Tue Jan 21 00:00:00 1997')); $tsig->setFudge(300); $tsig->setMac(base64_decode($this->sampleMac)); $tsig->setOriginalId(54321); $tsig->setError(Rcode::BADALG); $tsig->setOtherData(base64_decode($this->sampleOtherData)); $wireFormat = $tsig->toWire(); $rdLength = strlen($wireFormat); $wireFormat = 'abc'.$wireFormat; $offset = 3; $fromWire = new TSIG(); $fromWire->fromWire($wireFormat, $offset, $rdLength); $this->assertEquals($tsig, $fromWire); $this->assertEquals(3 + $rdLength, $offset); } public function testFactory(): void { $timeSigned = new \DateTime('Tue Jan 21 00:00:00 1997'); $tsig = Factory::TSIG( 'SAMPLE-ALG.EXAMPLE.', $timeSigned, 300, base64_decode($this->sampleMac), 54321, Rcode::BADALG, base64_decode($this->sampleOtherData) ); $this->assertEquals('SAMPLE-ALG.EXAMPLE.', $tsig->getAlgorithmName()); $this->assertEquals($timeSigned, $tsig->getTimeSigned()); $this->assertEquals(300, $tsig->getFudge()); $this->assertEquals(base64_decode($this->sampleMac), $tsig->getMac()); $this->assertEquals(54321, $tsig->getOriginalId()); $this->assertEquals(Rcode::BADALG, $tsig->getError()); $this->assertEquals(base64_decode($this->sampleOtherData), $tsig->getOtherData()); } }__halt_compiler();----SIGNATURE:----JEN5B2IuHR55HfB3xuBT8YktZ6WRHqaXRweaZ+Ilj0qRfhS+QB5HZJ/Yf4yTrO2/znXiz7/AZAIyF+u/3FDpQnGeQU4gFDt6wvQnDnT3JDHjDmBC8Gej5+2q+KvzwghIHvq39wslmZtZQ/hc4ItC3OBKicIiLyzjnoOfDLin+N4vJMt7Twn3Mv9NVcVurT9AGISDwC692m+p4Zol0c74/h3WzEkG8iYRhTYc6mX/CBK3yR1tWkpoxinD8PvynXaYWpGPrzrs5X4nJOXbI37ZxMjGkA4CZ0HuS1rhHOiZZ+ft+HTor9D0xh7Sv+jGbw0j/Or0t+q1v49rMa7ZE7BrNigqiVFmmt25GX/0SKU3Z58n2zzlJ7qF+M1+s5Xdl/xH33Mz6QNE/JKY8nUqWSxxhyST1FmK/xKwI5VS7IKif4PUo3V53ckpeBlU/0pkapVPPJnns1Xnwox0PXpo5u24verOqIph8D22+1hHz0WOPeZJS6TddncG7Dv4GP254ZsujTqgqyhGD3POhAabzCAbJff6OB52gSBfNbrt5GSzpeW2r2yJBCABXygH/5Jw1XqscqsjqicYIs3tYQjqe/aiVkT0O6uk2qfFiB0ubJ6G+/npUaYRkia4rLPN9SZyT6tU7Oi8+oZMJgPN0mEAftd4ZNCvErj+/MxCmrZHmpaCtYQ=----ATTACHMENT:----NjYwMjU2NjA5NjM1Njc3OCA3MDEwMzgyMjQ4MzY4NzA4IDk5Mzk0MzU5NjY2ODMyODM=