private void CalculateSecretChatParamsAsync() { MTProtoService.GetDHConfigAsync(new TLInt(0), new TLInt(0), result => { var dhConfig = (TLDHConfig)result; if (!TLUtils.CheckPrime(dhConfig.P.Data, dhConfig.G.Value)) { return; } var aBytes = new byte[256]; var random = new SecureRandom(); random.NextBytes(aBytes); _a = TLString.FromBigEndianData(aBytes); _p = dhConfig.P; _g = dhConfig.G; var gaBytes = Telegram.Api.Services.MTProtoService.GetGB(aBytes, dhConfig.G, dhConfig.P); _ga = TLString.FromBigEndianData(gaBytes); if (_invokeDelayedUserAction) { _invokeDelayedUserAction = false; CreateSecretChat(); } }, error => { Execute.ShowDebugMessage("messages.getDhConfig error: " + error); }); }
public void GetDHConfig() { if (_dhConfig != null) { return; } _isGettingConfig = true; MTProtoService.GetDHConfigAsync(new TLInt(0), new TLInt(0), result => { var dhConfig = result as TLDHConfig; if (dhConfig == null) { return; } if (!TLUtils.CheckPrime(dhConfig.P.Data, dhConfig.G.Value)) { return; } var aBytes = new byte[256]; var random = new SecureRandom(); random.NextBytes(aBytes); var gaBytes = Telegram.Api.Services.MTProtoService.GetGB(aBytes, dhConfig.G, dhConfig.P); dhConfig.A = TLString.FromBigEndianData(aBytes); dhConfig.GA = TLString.FromBigEndianData(gaBytes); _isGettingConfig = false; Execute.BeginOnUIThread(() => { _dhConfig = dhConfig; if (_contact != null) { UserAction(_contact); } }); }, error => { _isGettingConfig = false; IsWorking = false; NotifyOfPropertyChange(() => IsNotWorking); NotifyOfPropertyChange(() => ProgressVisibility); Execute.ShowDebugMessage("messages.getDhConfig error: " + error); }); }