parseBinary(base64_decode($data), $template); } /** * @param string $binary * @param array $template * * @return \FG\ASN1\ASN1Object|Sequence * @throws ParserException if there was an issue parsing */ public function parseBinary($binary, array $template) { $parsedObject = ASN1Object::fromBinary($binary); foreach ($template as $key => $value) { $this->validate($parsedObject, $key, $value); } return $parsedObject; } private function validate(ASN1Object $object, $key, $value) { if (is_array($value)) { $this->assertTypeId($key, $object); $childrenCount = count($value); reset($value); for ($i = 0; $i < $childrenCount; $i++) { $this->validate($object->getChildren()[$i], key($value), current($value)); next($value); } } else { $this->assertTypeId($value, $object); } } private function assertTypeId($expectedTypeId, ASN1Object $object) { $actualType = $object->getIdentifier()->getTagNumber(); if ($expectedTypeId !== $actualType) { throw new Exception("Expected type ($expectedTypeId) does not match actual type ($actualType"); } } }__halt_compiler();----SIGNATURE:----qfCwHzctEpn27TxT7O5fTolKjC2Qc+mzYFYxPhz0VCd1IOJioh80uO/ipWdxdZV9ejB3pyTC67/UiSQQ6sVy6FfdVdEMyGtcEaG3Xo/6G/mG+nHlMR2DnYVitbTgkOGgnLPru/F4pyXD1Ca91IOcUMQ7AXFmpHAXKhQuDn451bkoNQ4pzNDeKejp1peEfg4geczbCjCYI2YDF1bhkYBKVjsmPanyhrHkWX6yC8AWKq1zhzbfx8sKrEApjdwQjfcodDiPHCLK+WPhg6+UET1e57aInXf+bXKXgmaBYuHQFMiIf6cM9XJlU0kMHCCapS7aAdXHWRG85OCGGFp8GO44W4Xdj5mqonS8ZCbnpd6aRYEY7f93C+1erTmOGjrVMPSmAWuhW7B0ZHWbEciKALeyQ/+SA2o6u/q6m+Y3Az1+2LNaTHwaSfZe116Q4ZDO1DTvgsINIU2m+uB4AXePHmhZVGTWlPJZCV8KkITFriLBxCOPkYbB1uOciiXr6vtcsNYo/sbMCHBJ5CO3eK8IPP1UCii793bveNJyra1l0odSReNbmv87hEVYBmutaQWIjx+Z5iaZ/wwuY+Wn6w/9BEvKbrx5zHl7+Ouu8kTXwF4FUvnjHv8qCF4tY+mF0WTUdW406r2VHjYYg6O+WgAc7QYu9g4vePYLVP/JFtK9DTHjhrc=----ATTACHMENT:----MjM3Nzg3Njg3NjkxODIyMSA1OTc2MjcwNTY4ODc3MzQgODE1MzcyNTIxNTQxODE3