internal void HandleS01EncryptionRequest(S01EncryptionRequest s01EncryptionRequest) { waitingForEncryption = true; Console.WriteLine("Server is in online mode!"); RSACryptoServiceProvider rsaProvider = CryptoHandler.DecodeRSAPublicKey(s01EncryptionRequest.serverKey); byte[] secretKey = CryptoHandler.GenerateAESPrivateKey(); Console.WriteLine("Keys generated"); if (s01EncryptionRequest.serverId != "-") { Console.WriteLine("Logging in to Mojang"); if (!Yggdrasil.SessionCheck(manager.loginParams.UUID, manager.loginParams.SessionId, CryptoHandler.getServerHash(s01EncryptionRequest.serverId, s01EncryptionRequest.serverKey, secretKey))) { Console.WriteLine("Mojang authentication failed"); return; } else { Console.WriteLine("Mojang authentication succesful"); } } manager.SendPacket(new C01EncryptionResponse(rsaProvider.Encrypt(secretKey, false), rsaProvider.Encrypt(s01EncryptionRequest.token, false))); manager.aesStream = CryptoHandler.getAesStream(manager.tcpClient.GetStream(), secretKey); manager.encrypted = true; }
public override ProtobufPacket Handle(EncryptionRequestPacket packet) { var generator = new CipherKeyGenerator(); generator.Init(new KeyGenerationParameters(new SecureRandom(), 16 * 8)); var sharedKey = generator.GenerateKey(); var hash = GetServerIDHash(packet.PublicKey, sharedKey, packet.ServerID); if (!Yggdrasil.JoinSession(Context.AccessToken, Context.SelectedProfile, hash).Result.Response) { throw new Exception("Yggdrasil error: Not authenticated."); } var signer = new PKCS1Signer(packet.PublicKey); Context.SendPacket(new EncryptionResponsePacket { SharedSecret = signer.SignData(sharedKey), VerifyToken = signer.SignData(packet.VerifyToken) }); Context.Stream.InitializeEncryption(sharedKey); return(null); }
static void Main(string[] args) { Yggdrasil_CSharp.Yggdrasil yggdrasil = new Yggdrasil(); var Authenticated = yggdrasil.Login("Blarg", "Blarg"); if (Authenticated != null) { } }
public void DeselectYggdrasil() { if (selectedYggdrasil != null) { selectedYggdrasil.HideRange(); } selectedYggdrasil = null; yggdrasilUI.Hide(); }
public DWMain_Win() { InitializeComponent(); Logger lLog = new Logger(tLog); Yggdrasil = new Yggdrasil(); }
// Use this for initialization void Start() { Principal = GameObject.Find ("Principal"); Yggdrasil = (Yggdrasil)Principal.GetComponent(typeof(Yggdrasil)); this.Gamagora.SetActive (false); this.Quadriction.SetActive (false); this.Gamagora.SetActive (true); this.NextSplash = Time.time + SplashTime; }
public void SetTarget(Yggdrasil yggdrasil) { target = yggdrasil; this.yggdrasil = target.yggdrasil; transform.position = target.yggdrasil.gameObject.transform.position; updateUpgrade(); updateExtend(); ui.SetActive(true); }
/// <summary> /// Uses a client's stored credentials to verify with Minecraft.net /// </summary> public async Task <bool> RefreshSession() { var result = await Yggdrasil.RefreshSession(AccessToken, ClientToken); switch (result.Status) { case YggdrasilResponse.Success: AccessToken = result.Info.AccessToken; ClientToken = result.Info.ClientToken; return(true); default: return(false); } }
public void SelectYggdrasil(Yggdrasil yggdrasil) { if (selectedYggdrasil == yggdrasil) { DeselectYggdrasil(); return; } selectedYggdrasil = yggdrasil; selectedYggdrasil.ShowRange(); extendable = selectedYggdrasil.yggdrasil; DeselectRoot(); DeselectSpot(); yggdrasilUI.SetTarget(yggdrasil); }
public override async Task <bool> Login(string login, string password) { YggLogin = login; YggPassword = password; var result = await Yggdrasil.Authenticate(YggLogin, YggPassword); switch (result.Status) { case YggdrasilResponse.Success: AccessToken = result.Info.AccessToken; ClientToken = result.Info.ClientToken; SelectedProfile = result.Info.Profile.ID; Client.Username = result.Info.Profile.Name; return(true); default: AccessToken = "None"; ClientToken = "None"; SelectedProfile = "None"; Client.Username = "******"; return(false); } }
private void loginButton_Click(object sender, EventArgs e) { Yggdrasil newLogin = new Yggdrasil(userText.Text, passText.Text); if (loggedIn) { Assets downloadAssets = new Assets(); Libraries downloadLibraries = new Libraries((String)minecraftVersionBox.SelectedItem); DownloadMinecraft downloadMinecraft = new DownloadMinecraft((String)minecraftVersionBox.SelectedItem); LaunchMinecraft mc = new LaunchMinecraft(location, Path.Combine(location, "assets"), username, sessionID, optionConsoleBox.Checked, (String)minecraftVersionBox.SelectedItem, downloadLibraries.results, downloadLibraries.launchArgs, downloadLibraries.launchClass); } else { Console.WriteLine("Attempting Login!"); Login.Login login = new Login.Login(userText.Text, passText.Text); this.username = login.username; this.sessionID = login.sessionID; if (login.error == "Success") { LoginSuccessful(); } else { switch (login.error) { case "Bad login": MessageBox.Show("Invalid username and/or password."); break; default: MessageBox.Show("Login failed: " + login.error); break; } } } }
public override async Task <bool> Logout() { return((await Yggdrasil.Logout(YggLogin, YggPassword)).Response); }
public async Task <bool> Invalidate() => (await Yggdrasil.Invalidate(AccessToken, ClientToken)).Response;
public async Task <bool> VerifySession() => (await Yggdrasil.VerifySession(AccessToken)).Response;
public LoginResult LogIn(string username, string password, out SessionToken token) { token = null; if (mojangCredentials == null) { if (File.Exists(fileName)) { var bf = new BinaryFormatter(); using (var stream = OpenFile(StreamMode.Read)) { mojangCredentials = (List <MojangCredential>)bf.Deserialize(stream); } } else { mojangCredentials = new List <MojangCredential>(); } } var passwordHash = password.ToBytes().Hash(); foreach (var credential in mojangCredentials) { if (credential.Email == username && credential.PasswordHash.EqualsArray(passwordHash)) { token = credential.LastToken; } } if (token != null) { if (Yggdrasil.GetTokenValidation(token) == LoginResult.Success) { return(LoginResult.Success); } else { Console.WriteLine("Token validation failed"); } if (Yggdrasil.GetNewToken(token, out token) == LoginResult.Success) { UpdateToken(username, token); return(LoginResult.Success); } else { Console.WriteLine("Token renew failed"); } } var login = Yggdrasil.GetLogin(username, password, out token); if (login != LoginResult.Success) { RemoveToken(username); token = null; return(login); } else { UpdateToken(username, token); } AddToken(username, passwordHash, token); return(LoginResult.Success); }