| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #include "./loginCredentials.h"
- #include "./common.h"
- #include "../api_auth.h"
- LoginCredentials::LoginCredentials(const GUID *pRealm, LPCWSTR pszName, LPCSTR pszSession, LPCSTR pszToken, __time64_t tExpire)
- : ref(1), username(NULL), sessionKey(NULL), token(NULL)
- {
- realm = (NULL == pRealm) ? GUID_NULL : *pRealm;
- username = LoginBox_CopyString(pszName);
- sessionKey = LoginBox_CopyAnsiString(pszSession);
- token = LoginBox_CopyAnsiString(pszToken);
- expire = tExpire;
- }
- LoginCredentials::~LoginCredentials()
- {
- LoginBox_FreeStringSecure(username);
- LoginBox_FreeAnsiStringSecure(sessionKey);
- LoginBox_FreeAnsiStringSecure(token);
- }
- HRESULT LoginCredentials::CreateInstance(const GUID *pRealm, LPCWSTR pszName, LPCSTR pszSession, LPCSTR pszToken, __time64_t tExpire, LoginCredentials **instance)
- {
- if (NULL == instance) return E_POINTER;
- *instance = new LoginCredentials(pRealm, pszName, pszSession, pszToken, tExpire);
- if (NULL == *instance) return E_OUTOFMEMORY;
- return S_OK;
- }
- HRESULT LoginCredentials::CreateFromAuth(api_auth *authApi, const GUID *pRealm, LoginCredentials **instance)
- {
- if (NULL == instance) return E_POINTER;
- *instance = NULL;
- if (NULL == authApi) return E_INVALIDARG;
-
- const size_t sessionKeyMax(8192), tokenMax(8192), usernameMax(8192);
- LPSTR sessionKey = LoginBox_MallocAnsiString(sessionKeyMax);
- LPSTR token = LoginBox_MallocAnsiString(tokenMax);
- LPWSTR username = LoginBox_MallocString(usernameMax);
- __time64_t expire;
- HRESULT hr;
- if (NULL == sessionKey || NULL == token || NULL == username)
- hr = E_OUTOFMEMORY;
- else
- {
- INT result = authApi->GetCredentials((NULL != pRealm) ? *pRealm : GUID_NULL, sessionKey, sessionKeyMax, token, tokenMax, username, usernameMax, &expire);
- if (AUTH_SUCCESS == result)
- {
- hr = CreateInstance(pRealm, username, sessionKey, token, expire, instance);
- }
- else
- {
- hr = E_FAIL;
- }
- }
-
- LoginBox_FreeAnsiStringSecure(sessionKey);
- LoginBox_FreeAnsiStringSecure(token);
- LoginBox_FreeStringSecure(username);
- return hr;
- }
- UINT LoginCredentials::AddRef()
- {
- return InterlockedIncrement((LONG*)&ref);
- }
- UINT LoginCredentials::Release()
- {
- if (0 == ref)
- return ref;
-
- LONG r = InterlockedDecrement((LONG*)&ref);
- if (0 == r)
- delete(this);
-
- return r;
- }
- GUID LoginCredentials::GetRealm()
- {
- return realm;
- }
- __time64_t LoginCredentials::GetExpiration()
- {
- return expire;
- }
- LPCWSTR LoginCredentials::GetUsername()
- {
- return username;
- }
- LPCSTR LoginCredentials::GetSessionKey()
- {
- return sessionKey;
- }
- LPCSTR LoginCredentials::GetToken()
- {
- return token;
- }
|