示例#1
0
        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;
        }
示例#2
0
        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;
        }