Example #1
0
        // _perform_auth_request
        private Dictionary <string, string> PerformAuthRequest(object data)
        {
            string result = string.Empty;

            try
            {
                authUrl.WithHeader("User-Agent", userAgent)
                .PostUrlEncodedAsync(data)
                .ReceiveString()
                .ContinueWith
                (
                    (e) =>
                {
                    result = e.Result;
                }
                )
                .Wait();
            }
            catch (WebException ex)
            {
                result = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
            }

            return(GoogleKeyUtils.ParseAuthResponse(result));
        }
        private static async Task <Dictionary <string, string> > PerformAuthRequest(Dictionary <string, string> data)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.UserAgent.TryParseAdd(UserAgent);
                var postResponse = await client.PostAsync(AuthUrl, new FormUrlEncodedContent(data.ToArray()));

                var result = await postResponse.Content.ReadAsStringAsync();

                return(GoogleKeyUtils.ParseAuthResponse(result));
            }
        }
Example #3
0
        // signature
        public static string CreateSignature(string email, string password, RSAParameters key)
        {
            IAsymmetricKeyAlgorithmProvider alg = PCLCrypto.WinRTCrypto.AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithm.RsaOaepSha1);
            var importedKey = alg.ImportParameters(key);
            var hasher      = WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(HashAlgorithm.Sha1);

            byte[] prefix        = { 0x00 };
            byte[] keyArray      = GoogleKeyUtils.KeyToStruct(key);
            byte[] something     = Encoding.UTF8.GetBytes(email + "\x00" + password);
            byte[] hash          = hasher.HashData(keyArray).Take(4).ToArray();
            byte[] encrypted     = WinRTCrypto.CryptographicEngine.Encrypt(importedKey, something, null);
            byte[] combinedBytes = DataTypeUtils.CombineBytes(prefix, hash, encrypted);
            return(DataTypeUtils.UrlSafeBase64(combinedBytes));
        }
        public async Task <Dictionary <string, string> > PerformMasterLogin(string service       = "ac2dm",
                                                                            string deviceCountry = "us", string operatorCountry = "us", string lang = "en", int sdkVersion = 21)
        {
            var signature = GoogleKeyUtils.CreateSignature(_email, _password, _androidKey);
            var dict      = new Dictionary <string, string> {
                { "accountType", "HOSTED_OR_GOOGLE" },
                { "Email", _email },
                { "has_permission", 1.ToString() },
                { "add_account", 1.ToString() },
                { "EncryptedPasswd", signature },
                { "service", service },
                { "source", "android" },
                { "device_country", deviceCountry },
                { "operatorCountry", operatorCountry },
                { "lang", lang },
                { "sdk_version", sdkVersion.ToString() }
            };

            return(await PerformAuthRequest(dict));
        }
Example #5
0
        // perform_master_login
        public Dictionary <string, string> PerformMasterLogin(string service       = "ac2dm",
                                                              string deviceCountry = "us", string operatorCountry = "us", string lang = "en", int sdkVersion = 21)
        {
            string signature = GoogleKeyUtils.CreateSignature(email, password, androidKey);
            var    data      = new
            {
                accountType     = "HOSTED_OR_GOOGLE",
                Email           = email,
                has_permission  = 1.ToString(),
                add_account     = 1.ToString(),
                EncryptedPasswd = signature,
                service         = service,
                source          = "android",
                device_country  = deviceCountry,
                operatorCountry = operatorCountry,
                lang            = lang,
                sdk_version     = sdkVersion.ToString()
            };

            return(PerformAuthRequest(data));
        }