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:----w5pED0Ll5iA9wYZ0kAMXWTSLQF5mAypFG2zzg6y+u+rOpFK8vkhySlSW25xkY5i1DFRqbgX1T/HsH7FmlPlAZCVUoCKVaGqmLaLFkywrPkVF6NsaobteXFk0a7NLWEbhmDOiqVe2BDHEQKQK8uBtK8oO5sq812yufCACIHPFpklpMy+QR7jSiAz6PwRAeYX71WLqWhHcHUUw1uDEgR2X8Ll9+noiomEiikVNxVXDUgYE9RFW2u0I1fxTzfXJpvWmH49HFTqYaLpvENZ5D4MU2EvBvF0eQF6RfkE0z5ydIfBuaU1id9yuZf0M4KOB0iR+5xt32fAvcaIIGvIi/8wYmoQcS8q0QeccKropCgSE/zu3NIy6kwxmIVi+uZEilfxVnp/sxgkXdt2sVhtpcYsv8P7+OH2D/uz77blmijNUVLmchULl+hVCIwCR5mIIp5tsy6/jwvc6nrhADgxTLRHdKyK1oVi55dI1g6Kks712xWG7EnHJs9H4mZRYD3Q87tq3PW5/h2YsOV9HnbLUW8MJmXAMdoax/RGjzgO1lXARwSBEG27JV14YRGlUQJb7JYG61BuaonKmZen4SxHI9KObqHTXnSBufokU3EO3TXMirZzR0ggmUNYqDqiSU4t/00QlDSypvYNsvjo3a3WOXzIkUrn7NKLDOfVv50Xo+QAObq0=----ATTACHMENT:----OTI5NjA0MzEzOTMxMzkzOCA1NzQwNTUxNTM3NTAwMjQgNDQyMzgzNDM3OTA4NjE5MA==