diff --git a/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.cpp b/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.cpp index fe136b8..412d50f 100644 --- a/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.cpp +++ b/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.cpp @@ -358,6 +358,12 @@ bool CSteamNetworkingSockets::BHasAnyListenSockets() const return false; } +time_t CSteamNetworkingSockets::GetTimeSecure() +{ + // Trusting local user's clock! + return time(nullptr); +} + bool CSteamNetworkingSockets::GetIdentity( SteamNetworkingIdentity *pIdentity ) { SteamDatagramTransportLock scopeLock; diff --git a/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.h b/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.h index d055dcc..417710e 100644 --- a/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.h +++ b/src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.h @@ -4,6 +4,7 @@ #define CSTEAMNETWORKINGSOCKETS_H #pragma once +#include #include #include @@ -53,6 +54,10 @@ public: virtual void CacheIdentity() = 0; #endif + // Get current time of day, ideally from a source that + // doesn't depend on the user setting their local clock properly + virtual time_t GetTimeSecure(); + const SteamNetworkingIdentity &InternalGetIdentity() { if ( m_identity.IsInvalid() ) diff --git a/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp b/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp index c592844..5d989ca 100644 --- a/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp +++ b/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp @@ -7,10 +7,6 @@ #include "steamnetworkingsockets_lowlevel.h" #include "csteamnetworkingsockets.h" #include "crypto.h" -#ifndef STEAMNETWORKINGSOCKETS_OPENSOURCE - #include - #include "csteamnetworkingsockets_steam.h" -#endif // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" @@ -124,7 +120,6 @@ CSteamNetworkingMessage *CSteamNetworkingMessage::New( CSteamNetworkConnectionBa pMsg->m_usecTimeReceived = usecNow; pMsg->m_nMessageNumber = nMsgNum; pMsg->m_pfnFreeData = CSteamNetworkingMessage::DefaultFreeData; - return pMsg; } @@ -863,18 +858,7 @@ bool CSteamNetworkConnectionBase::BRecvCryptoHandshake( const CMsgSteamDatagramC return false; } - long rtNow = time( nullptr ); - #ifndef STEAMNETWORKINGSOCKETS_OPENSOURCE - auto *pSteamNetworkingSocketsSteamBase = assert_cast( m_pSteamNetworkingSocketsInterface ); - if ( pSteamNetworkingSocketsSteamBase->m_pSteamUtils ) - { - rtNow = pSteamNetworkingSocketsSteamBase->m_pSteamUtils->GetServerRealTime(); - } - else - { - AssertMsg( false, "No ISteamUtils? Using local clock to check if cert expired!" ); - } - #endif + long rtNow = m_pSteamNetworkingSocketsInterface->GetTimeSecure(); // Make sure hasn't expired. All signed certs without an expiry should be considered invalid! // For unsigned certs, there's no point in checking the expiry, since anybody who wanted