⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hashauthbase.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
STDMETHODIMP CHashAuthenticatorBase::SetCredentials(IHXAuthenticationDBManagerResponse* pDBRespondee,        IHXBuffer* pPrincipalID, IHXBuffer* pPassword){    if(!pDBRespondee)    {	    return HXR_UNEXPECTED;    }    m_pAuthDBRespondee = pDBRespondee;    m_pAuthDBRespondee->AddRef();    if (!m_pAuthDBManager)    {	    m_pAuthDBRespondee->SetCredentialsDone(HXR_NOINTERFACE, pPrincipalID);	    HX_RELEASE(m_pAuthDBRespondee);	    return HXR_NOINTERFACE;    }    IHXBuffer* pStorageKey = NULL;    _MungeUserRealmPass(pPrincipalID, m_pRealm, pPassword, &pStorageKey);    m_pAuthDBManager->SetCredentials(this, pPrincipalID, pStorageKey);    HX_RELEASE(pStorageKey);    return HXR_OK;}// IHXAuthenticationDBManagerResponseSTDMETHODIMP CHashAuthenticatorBase::AddPrincipalDone(HX_RESULT	hr,                                                IHXBuffer* pBufferPrincipalID){    m_pAuthDBRespondee->AddPrincipalDone(hr, pBufferPrincipalID);    HX_RELEASE(m_pAuthDBRespondee);    return HXR_OK;}STDMETHODIMP CHashAuthenticatorBase::RemovePrincipalDone(HX_RESULT hr,                                            IHXBuffer* pBufferPrincipalID){    m_pAuthDBRespondee->RemovePrincipalDone(hr, pBufferPrincipalID);    HX_RELEASE(m_pAuthDBRespondee);    return HXR_OK;}STDMETHODIMP CHashAuthenticatorBase::SetCredentialsDone(HX_RESULT hr,                                            IHXBuffer* pBufferPrincipalID){    m_pAuthDBRespondee->SetCredentialsDone(hr, pBufferPrincipalID);    HX_RELEASE(m_pAuthDBRespondee);    return HXR_OK;}/************************************************************************ *	Method: *	    IHXAuthenticationDBAccess::_NewEnum *	Purpose: *	     *	    Call this to make a new enumerator of this collection. * */STDMETHODIMP CHashAuthenticatorBase::_NewEnum(REF(IHXAsyncEnumAuthenticationDB*) pEnumDBNew){    if (m_pAuthDBAccess)    {    	return m_pAuthDBAccess->_NewEnum(pEnumDBNew);    }    else    {	    pEnumDBNew = NULL;	    return HXR_NOINTERFACE;    }}/************************************************************************ *	Method: *	    IRMAAuthenticationDBAccess::CheckExistence *	Purpose: *	     *	    Call this to verify the existance of a principal. * */STDMETHODIMP CHashAuthenticatorBase::CheckExistence(IHXAuthenticationDBAccessResponse* pDBAccessResp,    IHXBuffer*		pBufferPrincipalID){    if(!pDBAccessResp)    {    	return HXR_UNEXPECTED;    }    // XXXSSH - why not implemented?    pDBAccessResp->ExistenceCheckDone(HXR_NOTIMPL, pBufferPrincipalID);    return HXR_OK;}/************************************************************************ *	Method: *	    IHXAuthenticationDBAccess::GetCredentials *	Purpose: *	     *	    Call this to access the credentials for the specified principal. * */STDMETHODIMP CHashAuthenticatorBase::GetCredentials(IHXAuthenticationDBAccessResponse* pDBAccessResp,    IHXBuffer*		pBufferPrincipalID){    if(!pDBAccessResp)    {	return HXR_UNEXPECTED;    }    // XXXSSH - why not implemented?    pDBAccessResp->GetCredentialsDone(HXR_NOTIMPL, pBufferPrincipalID, NULL);    return HXR_OK;}HX_RESULT CHashAuthenticatorBase::_MungeUserRealmPass(IHXBuffer*  pUserName,         IHXBuffer*  pRealm, IHXBuffer*  pPassword, IHXBuffer** ppStorageKey){    HX_ASSERT(pUserName && pPassword && pRealm);    char resbuf[1024]; /* Flawfinder: ignore */    (*ppStorageKey) = new CHXBuffer;    (*ppStorageKey)->AddRef();    (*ppStorageKey)->SetSize(64);    char* sMD5 = (char*)(*ppStorageKey)->GetBuffer();    sprintf(resbuf, "%-.200s:%-.200s:%-.200s", /* Flawfinder: ignore */	pUserName->GetBuffer(),	pRealm->GetBuffer(),	pPassword->GetBuffer());    //The result of this MD5 is what needs to be stored in    //a file somewhere in the server, associated with the username.    MD5Data(sMD5, (BYTE*)resbuf, strlen(resbuf));    return HXR_OK;}BOOL CHashAuthenticatorBase::_GetQuotedValue(const char*& instr, char* valname, char* valbuf){    char* equals = (char*)strchr(instr, '=');    if(!equals)	return FALSE;    while(isspace(*(equals - 1)) && equals > instr) equals--;    if(equals <= instr || (equals - instr > 200))	return FALSE;    strncpy(valname, instr, equals - instr); /* Flawfinder: ignore */    valname[equals -instr] = 0;    char* firstquote = strchr(equals, '"');    if(!firstquote)	return FALSE;    char* secondquote = strchr(firstquote + 1, '"');    if(!secondquote || (secondquote - firstquote > 200))	return FALSE;    strncpy(valbuf, firstquote + 1, secondquote - firstquote - 1); /* Flawfinder: ignore */    valbuf[secondquote - firstquote - 1] = 0;    instr = secondquote + 1;    return TRUE;}BOOL CHashAuthenticatorBase::GetNameValuePair(const char*& instr, char* valname, char* valbuf){    char* equals = (char*)strchr(instr, '=');    if(!equals)    	return FALSE;        while(isspace(*(equals - 1)) && equals > instr) equals--;    if(equals <= instr || (equals - instr > 200))	    return FALSE;    strncpy(valname, instr, equals - instr); /* Flawfinder: ignore */    valname[equals -instr] = 0;    equals++;    while (isspace(*equals)) equals++;    if (*equals==',')    {        return FALSE;    }    else    {        if (*equals=='"')        {            char* firstquote = equals;            char* secondquote = strchr(firstquote + 1, '"');            if(!secondquote || (secondquote - firstquote > 200))	            return FALSE;            strncpy(valbuf, firstquote + 1, secondquote - firstquote - 1); /* Flawfinder: ignore */            valbuf[secondquote - firstquote - 1] = 0;            instr = secondquote + 1;            return TRUE;        }        else        {            // Non Quoted string            char* szvalstart = equals;            equals++;            while (!isspace(*equals) && *equals && (*equals!=',')) equals++;            char* szvalend = equals;            strncpy(valbuf, szvalstart, szvalend-szvalstart);            valbuf[szvalend-szvalstart] = 0;            instr = szvalend;            return TRUE;        }    } }HX_RESULT CHashAuthenticatorBase::_GetQuotedFields(char* s, IHXValues* pValues){    char valbuf[256]; /* Flawfinder: ignore */    char valname[256]; /* Flawfinder: ignore */    BOOL done = FALSE;    while(!done)    {	    while ((isspace(*s) || *s == ',') && *s)	    {	        ++s;	    }	    if(!(*s))	        break;	    if (GetNameValuePair((const char*&)s, valname, valbuf))	    {	        _SetPropertyFromCharArray(pValues, valname, valbuf);	    }	    else	    {	        done = TRUE;	    }    }    return HXR_OK;}void CHashAuthenticatorBase::_SetPropertyFromCharArray(IHXValues* pOptions, 			  const char* sName, const char* sValue){    IHXBuffer* pVal = NULL;    CHXBuffer::FromCharArray(sValue, &pVal);    pOptions->SetPropertyCString(sName, pVal);    HX_RELEASE(pVal);}/*     Returns the repsonse headers from m_pServerRequest, creating them if they     don't exist. Caller must release the returned pointer */IHXValues* CHashAuthenticatorBase::_GetResponseHeaders(){    HX_ASSERT(m_pServerRequest);    if (!m_pServerRequest)	    return NULL;    // uh-oh    IHXValues* pResHeaders = NULL;    m_pServerRequest->GetResponseHeaders(pResHeaders);    if (!pResHeaders)    {	    IUnknown* pUnknown = NULL;        IHXCommonClassFactory*  pFactory = NULL;	    m_pContext->QueryInterface(IID_IHXCommonClassFactory,	        (void **)&pFactory);	    if (pFactory)	    {	        pFactory->CreateInstance(CLSID_IHXKeyValueList, (void**)&pUnknown);	        HX_RELEASE(pFactory);	    }	    if (pUnknown)	    {	        pUnknown->QueryInterface(IID_IHXValues, (void**)&pResHeaders);	        	        if (pResHeaders)	        {    		    m_pServerRequest->SetResponseHeaders(pResHeaders);	        }            HX_RELEASE(pUnknown);	    }    }    return pResHeaders;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -