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/C/C/N/N/N/n', $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[''])); $this->setAlgorithm($values['']); $this->setLabels($values['']); $this->setOriginalTtl($values['']); $this->setKeyTag($values['']); $this->setSignersName($signersName); $this->setSignature($signature); $this->setSignatureExpiration(self::makeDateTime((string) $values[''])); $this->setSignatureInception(self::makeDateTime((string) $values[''])); } 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; } }__halt_compiler();----SIGNATURE:----qKaWszDFPiqJRjG06mvjA3ubndR0XfdFwygwyNnZNYGfD+9EcsmwJb1B1+vGVHgLB6i+96Yr0//Dfyd8ZCeooWK3VqIVBHgy/m+rq8/L24a7WO+LvzlTCNJGZz/6cyVomNCWxCLG7xPQgnNfxAmDHexJS7r7wIZsvuFcvMGwG79F/3xUwnmASi1aVvLnK5NH1ilZQ8UewT31l3ZVrhn31X+VFfoWEplVcsWlnp1wee0VEnzpTwhNpdHYtBXhY9moQ/FoSr7MbXi7oxI+Dq8OfbFt0YSBNv1ODKyu5uOA4sYsR6/Da4Kg6iTM9uDgxNxUMD7uaM9ldU6B5xC7uSNBO2feJqDg1FAYfukUt3cjBK6Kj6TdlkxoRJojikmg9ET1nqHxbnZHFZ4KHCZSEFG4dBda3h5J+rClMlbMMN5Y2aKjmpob3BeyTe2mNPtLd9m0JDrgqFg2kqokNP072CfWL7SlR7VUOzSM203DBC9mqbIUq/JXRWZpOsOwg/INOQF0UjeU1AdGhsMZtXLl2F8p7o6qU8YKAruxLaUo08KJDlIwNEf7jplEnYdt0BuCeeOZBwj2dMLs539n78UmWeXfAxXBjHhZGYbuBWD6jyVUyomAzlo9oMkWJKEuYohNnCHGLoW3HwfOYDhOUuU+7VFzRpSXmhi1Z7sJzMYlrVyPIFI=----ATTACHMENT:----NzE3NDU4NzA0Njg3MDk4MiA4OTAyMjc2Njk5NTg0Njk4IDM3ODQ5MTAyMjE3OTA2Mg==