Finish issue 5259 by adding tests and fixes for the 'login'
and 'cram-md5' auth methods.
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index 0b2a586..baed781 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -541,8 +541,9 @@
def encode_cram_md5(challenge, user, password):
challenge = base64.decodestring(challenge)
- response = user + " " + hmac.HMAC(password, challenge).hexdigest()
- return encode_base64(response)
+ response = user + " " + hmac.HMAC(password.encode('ascii'),
+ challenge).hexdigest()
+ return encode_base64(response.encode('ascii'), eol='')
def encode_plain(user, password):
s = "\0%s\0%s" % (user, password)
@@ -584,10 +585,10 @@
AUTH_PLAIN + " " + encode_plain(user, password))
elif authmethod == AUTH_LOGIN:
(code, resp) = self.docmd("AUTH",
- "%s %s" % (AUTH_LOGIN, encode_base64(user)))
+ "%s %s" % (AUTH_LOGIN, encode_base64(user.encode('ascii'), eol='')))
if code != 334:
raise SMTPAuthenticationError(code, resp)
- (code, resp) = self.docmd(encode_base64(password))
+ (code, resp) = self.docmd(encode_base64(password.encode('ascii'), eol=''))
elif authmethod is None:
raise SMTPException("No suitable authentication method found.")
if code not in (235, 503):