aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-05-03 17:03:57 +0200
committerShauren <shauren.trinity@gmail.com>2022-05-03 17:03:57 +0200
commitbc87f7b337154e683369a3790ee8fd1a7d4cba98 (patch)
treef956c8c358f39fc30b74f790b66fcc1c01581546 /src/server/game/Server
parentc68f52568f3dff0f5e7cb572ad91e79b23694645 (diff)
Core/Crypto: Switch away from most deprecated openssl functions and removed upper version limit
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index f999709a061..e9004a8f5da 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -234,13 +234,13 @@ OHYtKG3GK3GEcFDwZU2LPHq21EroUAdtRfbrJ4KW2yc8igtXKxTBYw==
-----END RSA PRIVATE KEY-----
)";
-std::unique_ptr<Trinity::Crypto::RSA> ConnectToRSA;
+std::unique_ptr<Trinity::Crypto::RsaSignature> ConnectToRSA;
}
bool WorldPackets::Auth::ConnectTo::InitializeEncryption()
{
- std::unique_ptr<Trinity::Crypto::RSA> rsa = std::make_unique<Trinity::Crypto::RSA>();
- if (!rsa->LoadFromString(RSAPrivateKey, Trinity::Crypto::RSA::PrivateKey{}))
+ std::unique_ptr<Trinity::Crypto::RsaSignature> rsa = std::make_unique<Trinity::Crypto::RsaSignature>();
+ if (!rsa->LoadKeyFromString(RSAPrivateKey))
return false;
ConnectToRSA = std::move(rsa);
@@ -270,16 +270,15 @@ WorldPacket const* WorldPackets::Auth::ConnectTo::Write()
break;
}
- uint32 type = Payload.Where.Type;
- Trinity::Crypto::SHA256 hash;
- hash.UpdateData(whereBuffer.contents(), whereBuffer.size());
- hash.UpdateData(reinterpret_cast<uint8 const*>(&type), 4);
- hash.UpdateData(reinterpret_cast<uint8 const*>(&Payload.Port), 2);
- hash.Finalize();
+ ByteBuffer signBuffer;
+ signBuffer.append(whereBuffer);
+ signBuffer << uint32(Payload.Where.Type);
+ signBuffer << uint16(Payload.Port);
+ Trinity::Crypto::RsaSignature::SHA256 digestGenerator;
+ std::vector<uint8> signature;
+ ConnectToRSA->Sign(signBuffer.contents(), signBuffer.size(), digestGenerator, signature);
- ConnectToRSA->Sign(hash.GetDigest(), Payload.Signature.data(), Trinity::Crypto::RSA::SHA256{});
-
- _worldPacket.append(Payload.Signature.data(), Payload.Signature.size());
+ _worldPacket.append(signature.data(), signature.size());
_worldPacket.append(whereBuffer);
_worldPacket << uint16(Payload.Port);
_worldPacket << uint32(Serial);
@@ -307,15 +306,16 @@ uint8 constexpr EnableEncryptionSeed[16] = { 0x90, 0x9C, 0xD0, 0x50, 0x5A, 0x2C,
WorldPacket const* WorldPackets::Auth::EnterEncryptedMode::Write()
{
- Trinity::Crypto::HMAC_SHA256 hash(EncryptionKey, 16);
- hash.UpdateData(reinterpret_cast<uint8 const*>(&Enabled), 1);
- hash.UpdateData(EnableEncryptionSeed, 16);
- hash.Finalize();
+ std::array<uint8, 17> msg{};
+ msg[0] = Enabled ? 1 : 0;
+ std::copy_n(std::begin(EnableEncryptionSeed), std::size(EnableEncryptionSeed), &msg[1]);
- _worldPacket.resize(_worldPacket.size() + ConnectToRSA->GetOutputSize());
+ Trinity::Crypto::RsaSignature::HMAC_SHA256 digestGenerator(EncryptionKey, 16);
+ std::vector<uint8> signature;
- ConnectToRSA->Sign(hash.GetDigest(), _worldPacket.contents(), Trinity::Crypto::RSA::SHA256{});
+ ConnectToRSA->Sign(msg, digestGenerator, signature);
+ _worldPacket.append(signature.data(), signature.size());
_worldPacket.WriteBit(Enabled);
_worldPacket.FlushBits();