· 5 years ago · Oct 25, 2020, 10:58 PM
1public void handleEncryptionRequest(SPacketEncryptionRequest packetIn)
2 {
3 final SecretKey secretkey = CryptManager.createNewSharedKey();
4 String s = packetIn.getServerId();
5 PublicKey publickey = packetIn.getPublicKey();
6 String s1 = (new BigInteger(CryptManager.getServerIdHash(s, publickey, secretkey))).toString(16);
7
8 if (this.mc.getCurrentServerData() != null && this.mc.getCurrentServerData().isOnLAN())
9 {
10 try
11 {
12 this.getSessionService().joinServer(this.mc.getSession().getProfile(), this.mc.getSession().getToken(), s1);
13 }
14 catch (AuthenticationException var10)
15 {
16 LOGGER.warn("Couldn't connect to auth servers but will continue to join LAN");
17 }
18 }
19 else
20 {
21 try
22 {
23 this.getSessionService().joinServer(this.mc.getSession().getProfile(), this.mc.getSession().getToken(), s1);
24 }
25 catch (AuthenticationUnavailableException var7)
26 {
27 this.networkManager.closeChannel(new TextComponentTranslation("disconnect.loginFailedInfo", new Object[] {new TextComponentTranslation("disconnect.loginFailedInfo.serversUnavailable", new Object[0])}));
28 return;
29 }
30 catch (InvalidCredentialsException var8)
31 {
32 this.networkManager.closeChannel(new TextComponentTranslation("disconnect.loginFailedInfo", new Object[] {new TextComponentTranslation("disconnect.loginFailedInfo.invalidSession", new Object[0])}));
33 return;
34 }
35 catch (AuthenticationException authenticationexception)
36 {
37 this.networkManager.closeChannel(new TextComponentTranslation("disconnect.loginFailedInfo", new Object[] {authenticationexception.getMessage()}));
38 return;
39 }
40 }
41
42 this.networkManager.sendPacket(new CPacketEncryptionResponse(secretkey, publickey, packetIn.getVerifyToken()), new GenericFutureListener < Future <? super Void >> ()
43 {
44 public void operationComplete(Future <? super Void > p_operationComplete_1_) throws Exception
45 {
46 NetHandlerLoginClient.this.networkManager.enableEncryption(secretkey);
47 }
48 });
49 }