Beispiel #1
0
 protected static function parseBinaryIdentifier($binaryData, &$offsetIndex)
 {
     if (strlen($binaryData) <= $offsetIndex) {
         throw new ParserException('Can not parse identifier from data: Offset index larger than input size', $offsetIndex);
     }
     $identifier = $binaryData[$offsetIndex++];
     if (IdentifierManager::isLongForm(ord($identifier)) == false) {
         return $identifier;
     }
     while (true) {
         if (strlen($binaryData) <= $offsetIndex) {
             throw new ParserException('Can not parse identifier (long form) from data: Offset index larger than input size', $offsetIndex);
         }
         $nextOctet = $binaryData[$offsetIndex++];
         $identifier .= $nextOctet;
         if ((ord($nextOctet) & 0x80) === 0) {
             // the most significant bit is 0 to we have reached the end of the identifier
             break;
         }
     }
     return $identifier;
 }
Beispiel #2
0
 /**
  * @param int|string $identifier
  *
  * @return int
  */
 public static function getTagNumber($identifier)
 {
     $firstOctet = substr($identifier, 0, 1);
     if (!IdentifierManager::isLongForm($firstOctet)) {
         return ord($firstOctet) & self::LONG_FORM;
     }
     $firstOctet = self::makeNumeric($identifier);
     if (is_numeric($identifier)) {
         $identifier = chr($identifier);
     }
     return Base128::decode(substr($identifier, 1));
 }