Advertisement
Guest User

Request

a guest
Jan 11th, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. bool cConnection::HandleServerLoginEncryptionKeyRequest(void)
  2. {
  3. // Read the packet from the server:
  4. HANDLE_SERVER_PACKET_READ(ReadVarUTF8String, AString, ServerID);
  5. HANDLE_SERVER_PACKET_READ(ReadBEShort, short, PublicKeyLength);
  6. AString PublicKey;
  7. if (!m_ServerBuffer.ReadString(PublicKey, PublicKeyLength))
  8. {
  9. return false;
  10. }
  11. HANDLE_SERVER_PACKET_READ(ReadBEShort, short, NonceLength);
  12. AString Nonce;
  13. if (!m_ServerBuffer.ReadString(Nonce, NonceLength))
  14. {
  15. return false;
  16. }
  17. Log("Got PACKET_ENCRYPTION_KEY_REQUEST from the SERVER:");
  18. Log(" ServerID = %s", ServerID.c_str());
  19. DataLog(PublicKey.data(), PublicKey.size(), " Public key (%u bytes)", (unsigned)PublicKey.size());
  20.  
  21. m_ServerBuffer.CommitRead();
  22.  
  23. // Save the public key
  24. AString NewPublicKey = m_Server.GetPublicKeyDER();
  25. m_ServerPublicKey = PublicKey;
  26.  
  27. // Send packet to client with our own public key
  28. cByteBuffer Packet(1024);
  29. Packet.WriteVarInt(0x01);
  30. Packet.WriteVarUTF8String(ServerID);
  31. Packet.WriteBEShort(NewPublicKey.size());
  32. Packet.WriteBuf(NewPublicKey.data(), NewPublicKey.size());
  33. Packet.WriteBEShort(NonceLength);
  34. Packet.WriteBuf(Nonce.data(), NonceLength);
  35. AString Pkt;
  36. Packet.ReadAll(Pkt);
  37. cByteBuffer ToClient(1024);
  38. ToClient.WriteVarUTF8String(Pkt);
  39. CLIENTSEND(ToClient);
  40.  
  41. return true;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement