private static HttpCookie MakeAuthCookie(string baseCookie, UserAuthData data, string cookieName) { HttpCookie cLogin = new HttpCookie(baseCookie); #if ! DEBUG && !PAYMENT_DEBUG cLogin.Domain = COOKIE_DOMAIN; #endif #region -- login data string oData = data.ToCookieValue(); string vData = new ebay.security.auth.CCrypto().Encode(oData, 1); cLogin.Values.Add(cookieName, HttpUtility.UrlEncode(vData)); #endregion #region -- hmac string vHmac = ebay.security.Hmac.Instance.GetHash(oData); cLogin.Values.Add(COOKIE_SUB_AUTH_HMAC, HttpUtility.UrlEncode(vHmac)); #endregion return cLogin; }
private static UserAuthData GetLoginCookieData(string baseCookie, string cookieName) { UserAuthData data = new UserAuthData(); HttpCookie cLogin = HttpContext.Current.Request.Cookies[baseCookie]; if (null != cLogin) { string cData = cLogin.Values[cookieName]; string cHmac = cLogin.Values[COOKIE_SUB_AUTH_HMAC]; if (false == string.IsNullOrEmpty(cData) && false == string.IsNullOrEmpty(cHmac)) { string oData = HttpUtility.UrlDecode(cData); string oHmac = HttpUtility.UrlDecode(cHmac); string vData = new ebay.security.auth.CCrypto().Decode(oData, 1); if (false == string.IsNullOrEmpty(vData)) { if (true == ebay.security.Hmac.Instance.CompareHash(vData, oHmac)) { SortedList<string, string> parts = ParseUrlParams(vData); if (null != parts && 0 < parts.Count) { data.UserId = (true == parts.ContainsKey(@"a")) ? parts[@"a"] : string.Empty; data.RemoteAddress = (true == parts.ContainsKey(@"b")) ? parts[@"b"] : string.Empty; if (true == parts.ContainsKey(@"c")) { long lat = 0; data.LastAccessed = (true == long.TryParse(parts[@"c"], out lat)) ? new DateTime(lat) : DateTime.MinValue; } } } } } } return data; }