//1.根据返回字符串response判断是要进行基本认证,还是要进行数字摘要认证
string PatternDigest("WWW-Authenticate: *Digest +realm=\"([a-zA-Z_0-9 ]+)\", *nonce=\"([a-zA-Z0-9]+)\"");
string PatternBasic("WWW-Authenticate: *Basic +realm=\"([a-zA-Z_0-9 ]+)\"");
string RealmTmp("");
stringstream Msg("");
string RtspUri = m_rtspURI;
Msg << cmd << " " << RtspUri << " " << "RTSP/" << VERSION_RTSP << "\r\n";
Msg << "CSeq: " << ++m_rtspCSeq << "\r\n";
smatch result;
if(regex_search(m_rtspResponse,result,regex(PatternDigest)))
{
string Md5Response("");
string NonceTmp("");
RealmTmp.assign(result[1].str());
NonceTmp.assign(result[2].str());
m_Realm.assign(RealmTmp);
m_Nonce.assign(NonceTmp);
//进行认证
Md5Response = MakeMd5DigestResp(RealmTmp, cmd, uri, NonceTmp);
if (Md5Response.length() != MD5_SIZE)
{
return CHECK_ERROR;
}
Msg << "Authorization: D
rtsp认证方法
最新推荐文章于 2024-10-22 08:43:54 发布