@@ -339,7 +339,7 @@ private async Task<PayloadData> SwitchAuthenticationAsync(ConnectionSettings cs,
339339#else
340340
341341 var rsaPublicKey = await GetRsaPublicKeyForCachingSha2PasswordAsync ( switchRequest . Name , cs , ioBehavior , cancellationToken ) ;
342- return await SendEncryptedPasswordAsync ( rsaPublicKey , cs , ioBehavior , switchRequest , cancellationToken ) ;
342+ return await SendEncryptedPasswordAsync ( rsaPublicKey , RSAEncryptionPadding . Pkcs1 , cs , ioBehavior , switchRequest , cancellationToken ) ;
343343#endif
344344 }
345345 else
@@ -354,7 +354,7 @@ private async Task<PayloadData> SwitchAuthenticationAsync(ConnectionSettings cs,
354354 throw new MySqlException ( "Authentication method '{0}' requires a secure connection (prior to .NET 4.6)." . FormatInvariant ( switchRequest . Name ) ) ;
355355#else
356356 var publicKey = await GetRsaPublicKeyForSha256PasswordAsync ( switchRequest . Name , cs , ioBehavior , cancellationToken ) ;
357- return await SendEncryptedPasswordAsync ( publicKey , cs , ioBehavior , switchRequest , cancellationToken ) ;
357+ return await SendEncryptedPasswordAsync ( publicKey , RSAEncryptionPadding . OaepSHA1 , cs , ioBehavior , switchRequest , cancellationToken ) ;
358358#endif
359359 }
360360 else
@@ -385,6 +385,7 @@ private async Task<PayloadData> SendClearPasswordAsync(ConnectionSettings cs, IO
385385#if ! NET45
386386 private async Task < PayloadData > SendEncryptedPasswordAsync (
387387 string rsaPublicKey ,
388+ RSAEncryptionPadding rsaEncryptionPadding ,
388389 ConnectionSettings cs ,
389390 IOBehavior ioBehavior ,
390391 AuthenticationMethodSwitchRequestPayload switchRequest ,
@@ -413,7 +414,7 @@ private async Task<PayloadData> SendEncryptedPasswordAsync(
413414 passwordBytes [ i ] ^= AuthPluginData [ i % AuthPluginData . Length ] ;
414415
415416 // encrypt with RSA public key
416- var encryptedPassword = rsa . Encrypt ( passwordBytes , RSAEncryptionPadding . Pkcs1 ) ;
417+ var encryptedPassword = rsa . Encrypt ( passwordBytes , rsaEncryptionPadding ) ;
417418 var payload = new PayloadData ( new ArraySegment < byte > ( encryptedPassword ) ) ;
418419 await SendReplyAsync ( payload , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
419420 return await ReceiveReplyAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
0 commit comments