aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/http/authentication.py
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2015-07-15 22:32:14 +0200
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2015-07-22 15:30:51 +0200
commitbab6cbff1e5444aea72a188d57812130c375e0f0 (patch)
tree5b33c11cf076a099a039fa8e8494acf5b1eff07e /netlib/http/authentication.py
parentf50deb7b763d093a22a4d331e16465a2fb0329cf (diff)
downloadmitmproxy-bab6cbff1e5444aea72a188d57812130c375e0f0.tar.gz
mitmproxy-bab6cbff1e5444aea72a188d57812130c375e0f0.tar.bz2
mitmproxy-bab6cbff1e5444aea72a188d57812130c375e0f0.zip
extract authentication methods from protocol
Diffstat (limited to 'netlib/http/authentication.py')
-rw-r--r--netlib/http/authentication.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/netlib/http/authentication.py b/netlib/http/authentication.py
index 26e3c2c4..9a227010 100644
--- a/netlib/http/authentication.py
+++ b/netlib/http/authentication.py
@@ -1,8 +1,28 @@
from __future__ import (absolute_import, print_function, division)
from argparse import Action, ArgumentTypeError
+import binascii
from .. import http
+def parse_http_basic_auth(s):
+ words = s.split()
+ if len(words) != 2:
+ return None
+ scheme = words[0]
+ try:
+ user = binascii.a2b_base64(words[1])
+ except binascii.Error:
+ return None
+ parts = user.split(':')
+ if len(parts) != 2:
+ return None
+ return scheme, parts[0], parts[1]
+
+
+def assemble_http_basic_auth(scheme, username, password):
+ v = binascii.b2a_base64(username + ":" + password)
+ return scheme + " " + v
+
class NullProxyAuth(object):
@@ -47,7 +67,7 @@ class BasicProxyAuth(NullProxyAuth):
auth_value = headers.get(self.AUTH_HEADER, [])
if not auth_value:
return False
- parts = http.http1.parse_http_basic_auth(auth_value[0])
+ parts = parse_http_basic_auth(auth_value[0])
if not parts:
return False
scheme, username, password = parts