UTC = new \DateTimeZone('UTC'); } public function testGetIdentifier() { $object = GeneralizedTime::createFormDateTime(new DateTime()); $this->assertEquals(Identifier::GENERALIZED_TIME, $object->getIdentifier()->getTagNumber()); } public function testGetStringValue() { $timeString = '2012-09-23 20:27'; $dateTime = new DateTime($timeString, $this->UTC); $object = GeneralizedTime::createFormDateTime($dateTime); $value = (string) $object; $this->assertEquals($dateTime->format(DATE_RFC3339), $value); } public function testGetObjectLength() { $expectedSize = 2 + 15; // Identifier + length + YYYYMMDDHHmmSSZ // without specified daytime $object = GeneralizedTime::createFormDateTime(new DateTime('2012-09-23')); $this->assertEquals($expectedSize, $object->getObjectLength()); // with fractional-seconds elements $object = GeneralizedTime::createFormDateTime(new DateTime('2012-09-23 22:21:03.5435440')); $this->assertEquals($expectedSize + 7, $object->getObjectLength()); } public function testGetBinary() { $expectedType = chr(Identifier::GENERALIZED_TIME); $expectedLength = chr(15); // YYYYMMDDHHmmSSZ $dateString = '2012-09-23'; $object = GeneralizedTime::createFormDateTime(new DateTime($dateString)); $expectedContent = '20120923000000Z'; $this->assertEquals($expectedType.$expectedLength.$expectedContent, $object->getBinary()); $dateString = '1987-01-15 12:12'; $object = GeneralizedTime::createFormDateTime(new DateTime($dateString)); $expectedContent = '19870115121200Z'; $this->assertEquals($expectedType.$expectedLength.$expectedContent, $object->getBinary()); $dateString = '2008-07-01 22:35:17.02'; $expectedLength = chr(18); $object = GeneralizedTime::createFormDateTime(new DateTime($dateString)); $expectedContent = '20080701223517.02Z'; $this->assertEquals($expectedType.$expectedLength.$expectedContent, $object->getBinary()); $dateString = '2008-07-01 22:35:17.024540'; $expectedLength = chr(21); $object = GeneralizedTime::createFormDateTime(new DateTime($dateString)); $expectedContent = '20080701223517.02454Z'; $this->assertEquals($expectedType.$expectedLength.$expectedContent, $object->getBinary()); } /** * @depends testGetBinary */ public function testFromBinaryWithDEREncoding() { $dateTime = new DateTime('2012-09-23 20:23:16', $this->UTC); $binaryData = chr(Identifier::GENERALIZED_TIME); $binaryData .= chr(15); $binaryData .= '20120923202316Z'; $parsedObject = GeneralizedTime::fromBinary($binaryData); $this->assertEquals($dateTime->format(DATE_RFC3339), (string) $parsedObject); } /** * @depends testGetBinary */ public function testFromBinaryWithDEREncodingAndFractionalSecondsPart() { $dateTime = new DateTime('2012-09-23 22:21:03.5435440', $this->UTC); $binaryData = chr(Identifier::GENERALIZED_TIME); $binaryData .= chr(22); $binaryData .= '20120923222103.543544Z'; $parsedObject = GeneralizedTime::fromBinary($binaryData); $this->assertEquals($dateTime->format('Y-m-d\TH:i:s.uP'), (string) $parsedObject); } public function testFromBinaryWithBEREncodingWithLocalTimeZone() { $dateTime = new DateTime('2012-09-23 20:23:16'); $binaryData = chr(Identifier::GENERALIZED_TIME); $binaryData .= chr(14); $binaryData .= '20120923202316'; $parsedObject = GeneralizedTime::fromBinary($binaryData); $this->assertEquals($dateTime->format('Y-m-d\TH:i:sP'), (string) $parsedObject); } /** * @depends testGetBinary */ public function testFromBinaryWithBEREncodingWithOtherTimeZone() { $dateTime = new DateTime('2012-09-23 22:13:59', $this->UTC); $binaryData = chr(Identifier::GENERALIZED_TIME); $binaryData .= chr(19); $binaryData .= '20120923161359-0600'; $parsedObject = GeneralizedTime::fromBinary($binaryData); $this->assertEquals($dateTime->format('Y-m-d\TH:i:sP'), (string) $parsedObject); $dateTime = new DateTime('2012-09-23 22:13:59', $this->UTC); $binaryData = chr(Identifier::GENERALIZED_TIME); $binaryData .= chr(19); $binaryData .= '20120924021359+0400'; $parsedObject = GeneralizedTime::fromBinary($binaryData); $this->assertEquals($dateTime->format('Y-m-d\TH:i:sP'), (string) $parsedObject); } /** * @depends testFromBinaryWithDEREncodingAndFractionalSecondsPart */ public function testFromBinaryWithBEREncodingWithFractionalSecondsPartAndOtherTimeZone() { $dateTime = new DateTime('2012-09-23 22:13:59.525', $this->UTC); $binaryData = chr(Identifier::GENERALIZED_TIME); $binaryData .= chr(23); $binaryData .= '20120923161359.525-0600'; $parsedObject = GeneralizedTime::fromBinary($binaryData); $this->assertEquals($dateTime->format('Y-m-d\TH:i:s.uP'), (string) $parsedObject); } }__halt_compiler();----SIGNATURE:----HRuwy7gXj4S9H3rydpWS1oABPzV2VHa5r7NDsvsFbpAGo9eyd8pfEnFbN3UfW95RNGkUZKB0e8edjT760Iw6ZFptmNTOpFiL692fUL3NRODn879l38vqcwqx4+2FNBmtCaaK9cJgAV54C4mXqcT94KUtDLBE+KE1LihoJtE6wsszTOVa8eLM0l0IYH6W9bqv2AnsNQ5+DzxUYn1jqCbzdFEeRpn9l2xVjrjyXmc8yCcnlsx3TMp4M+AFsERGVXsQlZINZ8bDCXTf88cMXVormqxOh9sa/fVPi7nWsgNLHUCPUzTs8du1heYqaSjdU/Hv0NdxmXdkDluz9nDv7ciiWxOMdSy+m3tOp80Z2dLGbML3zdMuMEO/03A7Wry+wKlvvSOlTsnlw8bbCSoc6XvI57FFQz/kcxzcNncvG3j0LfivSd/R/k4OXXbMSBw7+SNF9E0A93r+9gZRiOPd3EOGnVIPTGcXRT6hIo56fULfxVY9y29UPN/61P7TdGLK18rfWeRwkLobxWCSGXfOeApRhFEGxQ8Q7U/8XFcwGg3cUb3ZyrvcEl7OCsR352wIJFKwBLx5auTZFBBRDuBTCudfcelJyewdLnH4aXStpGvKJYGeR7jui09P+eONgvaVYIPwqgwIssH9imOiOuPXwHonO1Uh9cmBLAUacmgxy1UX/w4=----ATTACHMENT:----ODM4OTY3NDA4NTUwMDM2NyA5OTE4MDUxNzc2OTY2Mjc3IDEwNjk5MzExMzA4NTE2NzE=