assertEquals($expectedIdentifier, $asn->getIdentifier()->getBinary()); } public function testGetTag() { $object = ExplicitlyTaggedObject::create(0, PrintableString::createFromString('test')); $this->assertEquals(0, $object->getIdentifier()->getTagNumber()); $object = ExplicitlyTaggedObject::create(1, PrintableString::createFromString('test')); $this->assertEquals(1, $object->getIdentifier()->getTagNumber()); } public function testGetLength() { $string = PrintableString::createFromString('test'); $object = ExplicitlyTaggedObject::create(0, $string); $this->assertEquals($string->getObjectLength() + 2, $object->getObjectLength()); } public function testGetContent() { $string = PrintableString::createFromString('test'); $object = ExplicitlyTaggedObject::create(0, $string); $this->assertEquals([$string], $object->getChildren()); } public function testGetBinary() { $tag = 0x01; $string = PrintableString::createFromString('test'); $expectedType = IdentifierManager::create(Identifier::CLASS_CONTEXT_SPECIFIC, true, $tag); $expectedLength = chr($string->getObjectLength()); $encodedStringObject = $string->getBinary(); $object = ExplicitlyTaggedObject::create($tag, $string); $this->assertBinaryEquals($expectedType.$expectedLength.$encodedStringObject, $object->getBinary()); } /** * @dataProvider getTags * @depends testGetBinary */ public function testFromBinary($originalTag) { $originalStringObject = PrintableString::createFromString('test'); $originalObject = ExplicitlyTaggedObject::create($originalTag, $originalStringObject); $binaryData = $originalObject->getBinary(); $parsedObject = ExplicitlyTaggedObject::fromBinary($binaryData); $this->assertEquals($originalObject, $parsedObject); } public function getTags() { return [ [0x02], [0x00004002], ]; } public function testFromBinaryWithZeroContent() { $data = hex2bin('A000'); $object = ExplicitlyTaggedObject::fromBinary($data); $this->assertEquals(2, $object->getObjectLength()); $this->assertEquals([], $object->getChildren()); $this->assertEquals('[0]', (string) $object->__toString()); $this->assertEquals($data, $object->getBinary()); } public function testFromBinaryWithMultipleObjects() { $object1 = Boolean::create(true); $object2 = Integer::create(42); $identifier = 0xA0; $length = $object1->getObjectLength() + $object2->getObjectLength(); $data = chr($identifier).chr($length).$object1->getBinary().$object2->getBinary(); $object = ExplicitlyTaggedObject::fromBinary($data); $this->assertEquals(2+$length, $object->getObjectLength()); $this->assertEquals($data, $object->getBinary()); } public function testDecorated() { $object1 = Boolean::create(true); $object2 = Integer::create(42); $identifier = 0xA0; // SHORT_FORM $length = $object1->getObjectLength() + $object2->getObjectLength(); $data = chr($identifier) . chr($length) . $object1->getBinary() . $object2->getBinary(); $object = ExplicitlyTaggedObject::fromBinary($data); $decoratedData = $object->getDecoratedObject(0, Identifier::CLASS_CONTEXT_SPECIFIC, true)->getBinary(); $this->assertEquals($data, $decoratedData); // INDEFINITE_FORM $dataEoc = chr($identifier) . chr(128) . $object1->getBinary() . $object2->getBinary() . chr(0) . chr(0); $object = ExplicitlyTaggedObject::fromBinary($dataEoc); $decoratedData = $object->getDecoratedObject(0, Identifier::CLASS_CONTEXT_SPECIFIC, true)->getBinary(); $this->assertEquals($dataEoc, $decoratedData); } }__halt_compiler();----SIGNATURE:----SpNgXhdyawKD0+dEHUFnj0g7fWAvaS5lPKNaULfQEUQZ6jeVbUQqrjhkjB031o0AcbIP13KIgxHgfz+nKPEPwHxsvKa+7aokxQEHL4zcS1iNsPB2RSMo3In+ZlSlzixgergLaUrItVgW0cnP/M7hoEwDzsar5tD9rtPW5fHWuAOPXMPtDipn1eVGyM28erqXW7xRFQj/Ar43pWklvb3rKu9tnnuXHsjSAEN+kD6eZZMRl1pusmxpY7yWwVKXZ13OvihtmLC0xZsP7rTULcEwmZrEdHYGPDR/ahozJxNTDCvmEkPmgJ2Fe9OMf/2pL2s+Lgt9fXChPvP4UWyerTz+k71ALL+wOJ3i410K0ZOj+iMBXfAzimn/eJA8KeNDmA0DzozvKHrBEd8G+cKgBv0dNg+0WQcJcMZa2Q6n9T52rxSF/rM1vOJkuj1AGYVg9q5D3JkEMdesSvhsqiTvcGuFY8v33Sk1A8axohdchClyliXEkZqj9ecFYfi8dyvk0wXxj+yzGsyV8bKkTx5jQugMgPxc0/7dQrFkRzkEEJgCxpLRN7hXuCIj6SdnFo3/dZLZxc8mhkIyAK04aOFUVkb0DHT9JzOtOWPQ2qrXRONp4veuzZ78ZHVdZm/3VJR86NwDRjaMlRCMAEYs4evl26XpaJtiNtEcV+OkLwJrE/xZTfE=----ATTACHMENT:----NjMxMDc4NjU2OTE5NDU3MiA1NzI4MDU0MjI1OTk2ODM1IDg0MTM3NDQ5NDkxMzUyODU=