PEAR2 API authentication problem

I still have a problem with the PEAR2 API.
Can someone in you help me finally solve the problem?
Connection to pre-6.43 devices

    private static function _login(
        Communicator $com,
        $username,
        $password = '',
        $timeout = null
    ) {
        $request = new Request('/login');
        $request->send($com);
        $response = new Response($com, false, $timeout);
        $request->setArgument('name', $username);
        $request->setArgument(
            'response',
            '00' . md5(
                chr(0) . $password
                . pack('H*', $response->getProperty('ret'))
            )
        );
        $request->verify($com)->send($com);

        $response = new Response($com, false, $timeout);
        if ($response->getType() === Response::TYPE_FINAL) {
            return null === $response->getProperty('ret');
        } else {
            while ($response->getType() !== Response::TYPE_FINAL
                && $response->getType() !== Response::TYPE_FATAL
            ) {
                $response = new Response($com, false, $timeout);
            }
            return false;
        }
    }

Connection to post-6.43 devices

private static function _login(
Communicator $com,
$username,
$password = '',
$timeout = null
) {
$request = new Request('/login');
$request->setArgument('name', $username);
$request->setArgument('password', $password);
$request->verify($com)->send($com);

$response = new Response($com, false, $timeout);
if ($response->getType() === Response::TYPE_FINAL) {
return null === $response->getProperty('ret');
} else {
while ($response->getType() !== Response::TYPE_FINAL
&& $response->getType() !== Response::TYPE_FATAL
) {
$response = new Response($com, false, $timeout);
}
return false;
}
}

How to change this function to connect to both software versions?
in case of login problem try the second method of authentication?

@boen_robot: please help.

anyone?