sip response計算方式

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章