public function encrypt_password($data, $user, $pass)
{
foreach (array('realm', 'cnonce', 'digest-uri') as $key) {
if (!isset($data[$key])) {
$data[$key] = '';
}
}
$pack = md5($user . ':' . $data['realm'] . ':' . $pass);
if (isset($data['authzid'])) {
$a1 = pack('H32', $pack) . sprintf(':%s:%s:%s', $data['nonce'], $data['cnonce'], $data['authzid']);
} else {
$a1 = pack('H32', $pack) . sprintf(':%s:%s', $data['nonce'], $data['cnonce']);
}
$a2 = 'AUTHENTICATE:' . $data['digest-uri'];
return md5(sprintf('%s:%s:%s:%s:%s:%s', md5($a1), $data['nonce'], $data['nc'], $data['cnonce'], $data['qop'], md5($a2)));
}