@@ -1291,11 +1291,11 @@ private Message ReceiveMessage(Socket socket)
12911291 if ( _serverMac != null && _serverEtm )
12921292 {
12931293 var clientHash = _serverMac . ComputeHash ( data , 0 , data . Length - serverMacLength ) ;
1294- var serverHash = data . Take ( data . Length - serverMacLength , serverMacLength ) ;
1295-
1296- // TODO Add IsEqualTo overload that takes left+right index and number of bytes to compare.
1297- // TODO That way we can eliminate the extra allocation of the Take above.
1298- if ( ! serverHash . IsEqualTo ( clientHash ) )
1294+ #if NETSTANDARD2_1_OR_GREATER || NETCOREAPP2_1_OR_GREATER
1295+ if ( ! CryptographicOperations . FixedTimeEquals ( clientHash , new ReadOnlySpan < byte > ( data , data . Length - serverMacLength , serverMacLength ) ) )
1296+ #else
1297+ if ( ! Security . Chaos . NaCl . CryptoBytes . ConstantTimeEquals ( clientHash , 0 , data , data . Length - serverMacLength , serverMacLength ) )
1298+ #endif
12991299 {
13001300 throw new SshConnectionException ( "MAC error" , DisconnectReason . MacError ) ;
13011301 }
@@ -1319,11 +1319,11 @@ private Message ReceiveMessage(Socket socket)
13191319 if ( _serverMac != null && ! _serverEtm )
13201320 {
13211321 var clientHash = _serverMac . ComputeHash ( data , 0 , data . Length - serverMacLength ) ;
1322- var serverHash = data . Take ( data . Length - serverMacLength , serverMacLength ) ;
1323-
1324- // TODO Add IsEqualTo overload that takes left+right index and number of bytes to compare.
1325- // TODO That way we can eliminate the extra allocation of the Take above.
1326- if ( ! serverHash . IsEqualTo ( clientHash ) )
1322+ #if NETSTANDARD2_1_OR_GREATER || NETCOREAPP2_1_OR_GREATER
1323+ if ( ! CryptographicOperations . FixedTimeEquals ( clientHash , new ReadOnlySpan < byte > ( data , data . Length - serverMacLength , serverMacLength ) ) )
1324+ #else
1325+ if ( ! Security . Chaos . NaCl . CryptoBytes . ConstantTimeEquals ( clientHash , 0 , data , data . Length - serverMacLength , serverMacLength ) )
1326+ #endif
13271327 {
13281328 throw new SshConnectionException ( "MAC error" , DisconnectReason . MacError ) ;
13291329 }
0 commit comments