diff options
author | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-07-15 22:32:14 +0200 |
---|---|---|
committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-07-22 15:30:51 +0200 |
commit | bab6cbff1e5444aea72a188d57812130c375e0f0 (patch) | |
tree | 5b33c11cf076a099a039fa8e8494acf5b1eff07e /netlib/http/authentication.py | |
parent | f50deb7b763d093a22a4d331e16465a2fb0329cf (diff) | |
download | mitmproxy-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.py | 22 |
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 |