sip response计算方式

可紊 提交于 2019-12-18 03:03:35

sip注册时有四个步骤,
  1.客户端向服务端发送不带Authorization字段的注册请求
  2.服务端回401,在回复消息头中带WWW_Authorization
  3.客户端向服务端发送带Authorization字段注册请求,Authorization字段中的response信息是
   根据收到的WWW_Authorization中的信息和本地的一个密码信息计算出来的。
  4.服务端会自己计算一个Response值,和客户端发来的对比,一样的会回客户端一个200OK,表示
   注册成功。比对不一样回其他错误码给客户端。

Sip invite时(freeswitch)使用时也需要进行md5校验;
  
  response的计算方法:
  1)HASH1=MD5( username:realm:passwd)
  2)HASH2=MD5(method:uri)
  3)response=MD5(HA1:nonce:HA2)
  exosip/osip是通过下面的两个函数计算response,该exosip/osip的版本是2-4.1.0。
  char HA1[265],HA2[265];
  DigestCalcHA1(0, pszUser, realm_.c_str(), passwd, 0, 0, HA1);
  该函数通过pszUser,realm, passwd三个值产生HA1
  pszUser, realm是客户端发送过来的。passwd是服务端本地的,其值事先和客户端定好的,客户端的发来的response值也要通过他自己本地
  的pwd来计算。
  DigestCalcResponse(HA1, pszNonceFromHeader,pszNonceCount, pszCNonce, pszopo, 1, pszMethod, pszUri, HA2, Response);
  先通过method:uri产生HA2
如果参数pszopo是空,通过HA1:nonce:HA2产生Response

计算字符串md5方法:
echo -n “hello world”|md5sum

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!