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:----gZFfyYAzN4l8ADmd9muYLQ2sn6Z7Haq8qJKa/3IbY2Ix52/igNceCwK3/mLwPh/Jny7Lz/HJwCE922yuPqtoal7KCOlnX5pQIAKUQi+2u66i1paA8SEXBeTOag7m6ylW7D21iNKNAB7GTN0uTtIg7UwawRrop6o2X718XtnTRs0+tDuYT8cZazzEbIhx5eICj6LVy1OFOUsC9XKaYPKGZk4i4c6mNS0FsUxS6cFpXI1xCI3oVyy15UTYz8t1m6hbReA3sJoT3FPfR4xShGnBCe/+uMs51NjdDnRK3XeC5AlglupZODLmOtr/c4Z+EKoZGJ8wrOAJ7OjRXIKUIiuOQtoKmUbkpX5w+onahXlt7P873E8ijno0XI9+ca2t+jijFTTI66RYfBVC2qlo/FHAONhNwR9KTFXTYCjA8iPpU1Li9Bq0zEcIOcLtoqHsPhiAaSfl4Ur4Gv5fIF8GklHWChzW+Z2YG65L8k2Q1B83dDrh5iCfZRDLOcS5Y4JbZwg0V/MY6OvsU6EnTbeJdE9KRalVK7tV1PgVk0XLw3C/fhIkXibN41eQkpgPznj9X7/KVbXXAMVjUrFMwb4EYHA7XOq5dIT1dy2WEI6Cv6+ZuRWEuHDN1I9cBusi8XIIIxgbdzJSc+rYIi3C5M/ZkDourH6ic6ouaZC8Fq+etofYZGI=----ATTACHMENT:----NjQ3ODkyMDY3MjQ1ODQyOCA5MzgyMjczMTQ3ODc3NzQ2IDgwNzI2NDMxMzI3NTk5NzA=