// _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)); } }
// 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)); }
// 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)); }