nrOfUnusedBits = \ord($content->getBinary()[0]); } public function getNumberOfUnusedBits(): int { return $this->nrOfUnusedBits; } public function setValue(Content $content) { $this->value = bin2hex(substr($content->getBinary(), 1)); } /** * @return string */ public function getStringValue() { return strtoupper(bin2hex(substr($this->getBinaryContent(), 1))); } public static function createFromBitString(string $bitString, $options = []): self { $isConstructed = $options['isConstructed'] ?? false; $lengthForm = $options['lengthForm'] ?? ContentLength::LONG_FORM; $bitsCount = \strlen($bitString); $nrOfUnusedBits = $bitsCount % 8; $bitString .= str_repeat('0', $nrOfUnusedBits); $value = \chr($nrOfUnusedBits) . hex2bin(gmp_strval(gmp_init($bitString, 2), 16)); return ElementBuilder::createObject( Identifier::CLASS_UNIVERSAL, Identifier::BITSTRING, $isConstructed, $value, $lengthForm ); } public static function createFromHexString(string $hexString, $options = []): self { $isConstructed = $options['isConstructed'] ?? false; $value = \chr(0x00) . hex2bin($hexString); $lengthForm = \strlen($value) > 127 ? ContentLength::LONG_FORM : ContentLength::SHORT_FORM; $lengthForm = $options['lengthForm'] ?? $lengthForm; return ElementBuilder::createObject( Identifier::CLASS_UNIVERSAL, Identifier::BITSTRING, $isConstructed, $value, $lengthForm ); } public static function fromBinary(&$binaryData, &$offsetIndex = 0) { $bitString = parent::fromBinary($binaryData, $offsetIndex); if ($bitString->getContent()->getNrOfOctets() < 2) { throw new ParserException('Malformed bit string', $offsetIndex); } return $bitString; } }__halt_compiler();----SIGNATURE:----hOz66TKhxWZy3/QQjgqeXbUxYG6xBoOn20CM7Z/cKP365vIWVJGjhIA0vWbdWbL0EG6um+Et5hJN3Q5zRkz8m5Qi7Rs83JGGrK5IBS2YEqLlZ0G/fijZvb6aNzvMavf9S7Q5uDqn0bvC7umY5IB1EYs6zccfuPcTxCWLr372zd2xdgEBvuT6RkPc9FoqsGWOVw/fFNdIA+QPyN2UyKqeVrYJzfdQlUiJbbMSY/1EnWh7OF2KqKXpQDDj2vQ8LLCK9GEZu/24Z2pdBziHXATIFPNlnuwVccsqgVKc5SQRcT7dJHmvYMb94ahdIvaT3NlRZJj0CfUNwK10LLXFWrdUJdhYYoVK9PuRo03K6MVPhXUEyWPO64WNDwX+Y2Zn2Fak/o/4NXO6gdY/QIfaxTFiHbiyoSbCWK3G2ppy8sGhvuh8ZqlNkWa3NcY2LJ8hKHD+TwMvd3U8yio+6SX6d14MXYNI+N0cWMJGC6ldyfP8l0f4Ru+P2IOs1O2znNBMET7acLDGiMAohTNK4yb5pLh2oAFcM99+BaN7TGT5AO4daTPz95e/+lrPY37mPgswJjm+VJAlR6DlIlQM7mvOy4HwEloWKFDoXPk3qJYS6krsoiMLguznXA/ICULRbmgXlHzc2T3eFGO4kFQ2c+WOWYkXgR2tLcew/x+E3tJGH16UrZ8=----ATTACHMENT:----NTgxNDMxMDYwMDg0MDkxMSAyMzUyODY1MjI3NTE4MDU3IDE4NDQzNDkzNzc1NTEzOTI=