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:----emimtoAee9gxuR0XEA1/D4XY/rV9ZDGYzh1Ugt8yLD/qX54PkEgj4pxpzwcvCjs/rGGLnDzmBa0xBZKv1xwb2T4EVZHZDvUYw+PUqyNL+bLPdCwY9VV7D/5b+ZBME7dAv7UJHkc/xRelZ+v5Y8U1V2bGz4jgymeAnO9eNhH+J4JZNUus1ASBlsoEg0QoIt6fhc/YVxkhQO/59eCpea7QiO7dLXVx1UQQGCqWzJm8IBf07fSKnCWqzhIe8dftYEWY41Mspq8mHg0iSk1eTx7q1tPZyCT0QJ8r3TjA0z/QEGc5vtYUWeKMUW9NiIwfYynnHZdwIQFNQOU8kVD+yk5ZzSSJ7AwhNDBfzUYyuGZ7OpDkcwoYfGhPHINoi/ey66/ujkvPpbo6iFVCPGESM8VVFOLWO8pskJ0PbYlxQo5Valtc0ehwcFNGY+2kA0aBGvnB5/ft3ugZ5ph5eLAdLkseMPn9xfnvR2Wz68qG4eqSY68TkIbfq/II+Wbn2cpBkxLyGeCZg3QXNWrMKCw3JcIGIDyotFfageCZAPUCwihACtxs1x/gfQD/NadS0dsyxKXL0zqKL2a8NwOls8Lnt3dl3MC11eb4IMZnvTBAM5TLTl9jD+a6c3U1y4Hq09W0hDrLQv46Q/VwUVJbtbm3KQHYXtECcdi62B5GYXCi6ruxga0=----ATTACHMENT:----NDYyMDI0NDI5NDk0NTk1OSA0NjAwODU2MjgxNDkzMDkzIDM3NzUxNzMwODYwMDk2ODA=