Skip to content

Commit 6a5ff23

Browse files
committed
Use different padding for each auth method.
1 parent 3cfd21c commit 6a5ff23

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/MySqlConnector/Serialization/MySqlSession.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)