assertEquals(Identifier::OCTETSTRING, $object->getIdentifier()->getTagNumber()); } public function testContent() { $object = OctetString::createFromString('A01200C3'); $this->assertEquals('A01200C3', (string) $object); } public function testGetObjectLength() { $object = OctetString::createFromString(hex2bin('00')); $this->assertEquals(3, $object->getObjectLength()); $object = OctetString::createFromString(hex2bin('FF')); $this->assertEquals(3, $object->getObjectLength()); $object = OctetString::createFromString(hex2bin('A000')); $this->assertEquals(4, $object->getObjectLength()); $object = OctetString::createFromString(hex2bin('3F2001')); $this->assertEquals(5, $object->getObjectLength()); } public function testGetObjectLengthWithVeryLongOctetString() { $hexString = str_repeat('FF', 1024); $object = OctetString::createFromString(hex2bin($hexString)); $this->assertEquals(1 + 3 + 1024, $object->getObjectLength()); } public function testGetBinary() { $expectedType = chr(Identifier::OCTETSTRING); $expectedLength = chr(0x01); $object = OctetString::createFromString(hex2bin('FF')); $expectedContent = chr(0xFF); $this->assertEquals($expectedType.$expectedLength.$expectedContent, $object->getBinary()); $object = OctetString::createFromString(hex2bin('FFA034')); $expectedLength = chr(0x03); $expectedContent = chr(0xFF); $expectedContent .= chr(0xA0); $expectedContent .= chr(0x34); $this->assertEquals($expectedType.$expectedLength.$expectedContent, $object->getBinary()); } public function testGetBinaryForLargeOctetStrings() { $nrOfBytes = 1024; $hexString = str_repeat('FF', $nrOfBytes); $object = OctetString::createFromString(hex2bin($hexString)); $expectedType = chr(Identifier::OCTETSTRING); $expectedLength = chr(0x80 | 0x02); // long length form: 2 length octets $expectedLength .= chr(1024 >> 8); // first 8 bit of 1025 $expectedLength .= chr(1024 & 0xFF); // last 8 bit of 1025 $expectedContent = ''; for ($i = 0; $i < $nrOfBytes; $i++) { $expectedContent .= chr(0xFF); // content } $this->assertEquals($expectedType.$expectedLength.$expectedContent, $object->getBinary()); } /** * @depends testGetBinary */ public function testFromBinary() { $originalObject = OctetString::createFromString(hex2bin('12')); $binaryData = $originalObject->getBinary(); $parsedObject = OctetString::fromBinary($binaryData); $this->assertEquals($originalObject, $parsedObject); $originalObject = OctetString::createFromString(hex2bin('010203A0')); $binaryData = $originalObject->getBinary(); $parsedObject = OctetString::fromBinary($binaryData); $this->assertEquals($originalObject, $parsedObject); } /** * @depends testFromBinary */ public function testFromBinaryWithOffset() { $originalObject1 = OctetString::createFromString(hex2bin('A0')); $originalObject2 = OctetString::createFromString(hex2bin('314510')); $binaryData = $originalObject1->getBinary(); $binaryData .= $originalObject2->getBinary(); $offset = 0; $parsedObject = OctetString::fromBinary($binaryData, $offset); $this->assertEquals($originalObject1, $parsedObject); $this->assertEquals(3, $offset); $parsedObject = OctetString::fromBinary($binaryData, $offset); $this->assertEquals($originalObject2, $parsedObject); $this->assertEquals(8, $offset); } }__halt_compiler();----SIGNATURE:----IgNYiD2GH7QI5XKSX0L713lgQjE3EE2fHJ30l7XcUBt5RFCT9nJ9Vg6dLbuTGQ9xmUA7IWyYiB7oDa2/bq6I80+lm0mw3XVm83xm78mKtoXDtU07TpUjiY/79Fop71w8rI1HYnaLcliM/F84iPL7acRZKNg3QHdqYSsU/N32dP/77O86BjTP8WrYY9GQsQfnuC6H2Dchcv64ruippVOIyFZtt6zfDXeTj8Hkxk/U+L34yht8o8CBxSwOa5oUaKzc+F1Vo6edhV0flRcfPwsZQObSg/IYLopCSdijIJNxqDmRXoDCh/OTWxFUfa5rW5h1sLt/5lamcGOzmPN81QdlfeIVhDgm2fmqeSuufYvVzmFlfASnxZFS6AuATCJQftB3i1QIeTkqp9d6m+A9JzxO4uqkeHeDPv1yDfQteD3xg4cdepbqegiRmIm9Zf34tqzFSPnE3fv0os97NQmiXbxv4ELbh/9V7FDxaccpqPZF6pSsqkHBTa1q7B5O1IBKqNWv3++Gdn8Qz31C3qG8APRam/FExFN8sG273cDgPWvdifKLOid9yVMUVzMyvpjVZYTaVDHiLmPaXloPuRTpzPaFF4x5Pvypni/G6pgsM4cERdQIwo0hH/v6dEsA/3H/hYZJckEh8PYfEx392sTrYZ79rTh6HcvrbPeMFRWCd9G/2T4=----ATTACHMENT:----NzQ2NjE5MDA3ODI5NzQzOSA2ODg3OTE1NTE0OTEwNzA1IDUxNTQ2NjgyNjMwMjI2NDM=