1<?php 2 3declare(strict_types=1); 4 5/* 6 * The MIT License (MIT) 7 * 8 * Copyright (c) 2018-2020 Spomky-Labs 9 * 10 * This software may be modified and distributed under the terms 11 * of the MIT license. See the LICENSE file for details. 12 */ 13 14namespace CBOR\Tag; 15 16use CBOR\ByteStringObject; 17use CBOR\ByteStringWithChunkObject; 18use CBOR\CBORObject; 19use CBOR\TagObject as Base; 20use CBOR\TextStringObject; 21use CBOR\TextStringWithChunkObject; 22use InvalidArgumentException; 23 24final class Base16EncodingTag extends Base 25{ 26 public static function getTagId(): int 27 { 28 return 23; 29 } 30 31 public static function createFromLoadedData(int $additionalInformation, ?string $data, CBORObject $object): Base 32 { 33 return new self($additionalInformation, $data, $object); 34 } 35 36 public static function create(CBORObject $object): Base 37 { 38 if (!$object instanceof ByteStringObject && !$object instanceof ByteStringWithChunkObject && !$object instanceof TextStringObject && !$object instanceof TextStringWithChunkObject) { 39 throw new InvalidArgumentException('This tag only accepts Byte String, Infinite Byte String, Text String or Infinite Text String objects.'); 40 } 41 42 return new self(23, null, $object); 43 } 44 45 public function getNormalizedData(bool $ignoreTags = false) 46 { 47 if ($ignoreTags) { 48 return $this->object->getNormalizedData($ignoreTags); 49 } 50 51 if (!$this->object instanceof ByteStringObject && !$this->object instanceof ByteStringWithChunkObject && !$this->object instanceof TextStringObject && !$this->object instanceof TextStringWithChunkObject) { 52 return $this->object->getNormalizedData($ignoreTags); 53 } 54 55 return bin2hex($this->object->getNormalizedData($ignoreTags)); 56 } 57} 58