aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--netlib/__init__.py1
-rw-r--r--netlib/certffi.py9
-rw-r--r--netlib/certutils.py15
-rw-r--r--netlib/http.py3
-rw-r--r--netlib/http_auth.py3
-rw-r--r--netlib/http_status.py1
-rw-r--r--netlib/http_uastrings.py2
-rw-r--r--netlib/odict.py1
-rw-r--r--netlib/socks.py17
-rw-r--r--netlib/tcp.py3
-rw-r--r--netlib/test.py3
-rw-r--r--netlib/utils.py2
-rw-r--r--netlib/version.py2
-rw-r--r--netlib/wsgi.py3
-rw-r--r--test/test_tcp.py3
-rwxr-xr-xtools/getcertnames15
16 files changed, 50 insertions, 33 deletions
diff --git a/netlib/__init__.py b/netlib/__init__.py
index e69de29b..9b4faa33 100644
--- a/netlib/__init__.py
+++ b/netlib/__init__.py
@@ -0,0 +1 @@
+from __future__ import (absolute_import, print_function, division)
diff --git a/netlib/certffi.py b/netlib/certffi.py
index c5d7c95e..81dc72e8 100644
--- a/netlib/certffi.py
+++ b/netlib/certffi.py
@@ -1,7 +1,9 @@
+from __future__ import (absolute_import, print_function, division)
import cffi
import OpenSSL
+
xffi = cffi.FFI()
-xffi.cdef ("""
+xffi.cdef("""
struct rsa_meth_st {
int flags;
...;
@@ -18,6 +20,7 @@ xffi.verify(
extra_compile_args=['-w']
)
+
def handle(privkey):
new = xffi.new("struct rsa_st*")
newbuf = xffi.buffer(new)
@@ -26,11 +29,13 @@ def handle(privkey):
newbuf[:] = oldbuf[:]
return new
+
def set_flags(privkey, val):
hdl = handle(privkey)
- hdl.meth.flags = val
+ hdl.meth.flags = val
return privkey
+
def get_flags(privkey):
hdl = handle(privkey)
return hdl.meth.flags
diff --git a/netlib/certutils.py b/netlib/certutils.py
index 308d6cf8..18179917 100644
--- a/netlib/certutils.py
+++ b/netlib/certutils.py
@@ -1,11 +1,10 @@
+from __future__ import (absolute_import, print_function, division)
import os, ssl, time, datetime
import itertools
from pyasn1.type import univ, constraint, char, namedtype, tag
from pyasn1.codec.der.decoder import decode
from pyasn1.error import PyAsn1Error
import OpenSSL
-import tcp
-import UserDict
DEFAULT_EXP = 62208000 # =24 * 60 * 60 * 720
# Generated with "openssl dhparam". It's too slow to generate this on startup.
@@ -255,7 +254,7 @@ class CertStore:
return c[0], (c[1] or self.privkey)
def gen_pkey(self, cert):
- import certffi
+ from . import certffi
certffi.set_flags(self.privkey, 1)
return self.privkey
@@ -360,12 +359,4 @@ class SSLCert:
continue
for i in dec[0]:
altnames.append(i[0].asOctets())
- return altnames
-
-
-
-def get_remote_cert(host, port, sni):
- c = tcp.TCPClient((host, port))
- c.connect()
- c.convert_to_ssl(sni=sni)
- return c.cert
+ return altnames \ No newline at end of file
diff --git a/netlib/http.py b/netlib/http.py
index 774bac6c..a49f0588 100644
--- a/netlib/http.py
+++ b/netlib/http.py
@@ -1,6 +1,7 @@
+from __future__ import (absolute_import, print_function, division)
import string, urlparse, binascii
import sys
-import odict, utils
+from . import odict, utils
class HttpError(Exception):
diff --git a/netlib/http_auth.py b/netlib/http_auth.py
index 937b66f0..49f5925f 100644
--- a/netlib/http_auth.py
+++ b/netlib/http_auth.py
@@ -1,6 +1,7 @@
+from __future__ import (absolute_import, print_function, division)
from passlib.apache import HtpasswdFile
-import http
from argparse import Action, ArgumentTypeError
+from . import http
class NullProxyAuth():
diff --git a/netlib/http_status.py b/netlib/http_status.py
index 9f3f7e15..7dba2d56 100644
--- a/netlib/http_status.py
+++ b/netlib/http_status.py
@@ -1,3 +1,4 @@
+from __future__ import (absolute_import, print_function, division)
CONTINUE = 100
SWITCHING = 101
diff --git a/netlib/http_uastrings.py b/netlib/http_uastrings.py
index 826c31a5..d0d145da 100644
--- a/netlib/http_uastrings.py
+++ b/netlib/http_uastrings.py
@@ -1,3 +1,5 @@
+from __future__ import (absolute_import, print_function, division)
+
"""
A small collection of useful user-agent header strings. These should be
kept reasonably current to reflect common usage.
diff --git a/netlib/odict.py b/netlib/odict.py
index ea95a586..a0e1f694 100644
--- a/netlib/odict.py
+++ b/netlib/odict.py
@@ -1,3 +1,4 @@
+from __future__ import (absolute_import, print_function, division)
import re, copy
diff --git a/netlib/socks.py b/netlib/socks.py
index 97df3478..1da5b6cc 100644
--- a/netlib/socks.py
+++ b/netlib/socks.py
@@ -1,7 +1,8 @@
+from __future__ import (absolute_import, print_function, division)
import socket
import struct
-from array import array
-from . import tcp, utils
+import array
+from . import tcp
class SocksError(Exception):
@@ -10,24 +11,24 @@ class SocksError(Exception):
self.code = code
-class VERSION:
+class VERSION(object):
SOCKS4 = 0x04
SOCKS5 = 0x05
-class CMD:
+class CMD(object):
CONNECT = 0x01
BIND = 0x02
UDP_ASSOCIATE = 0x03
-class ATYP:
+class ATYP(object):
IPV4_ADDRESS = 0x01
DOMAINNAME = 0x03
IPV6_ADDRESS = 0x04
-class REP:
+class REP(object):
SUCCEEDED = 0x00
GENERAL_SOCKS_SERVER_FAILURE = 0x01
CONNECTION_NOT_ALLOWED_BY_RULESET = 0x02
@@ -39,7 +40,7 @@ class REP:
ADDRESS_TYPE_NOT_SUPPORTED = 0x08
-class METHOD:
+class METHOD(object):
NO_AUTHENTICATION_REQUIRED = 0x00
GSSAPI = 0x01
USERNAME_PASSWORD = 0x02
@@ -56,7 +57,7 @@ class ClientGreeting(object):
@classmethod
def from_file(cls, f):
ver, nmethods = struct.unpack("!BB", f.read(2))
- methods = array("B")
+ methods = array.array("B")
methods.fromstring(f.read(nmethods))
return cls(ver, methods)
diff --git a/netlib/tcp.py b/netlib/tcp.py
index 9c92ce38..f49346a1 100644
--- a/netlib/tcp.py
+++ b/netlib/tcp.py
@@ -1,6 +1,7 @@
+from __future__ import (absolute_import, print_function, division)
import select, socket, threading, sys, time, traceback
from OpenSSL import SSL
-import certutils
+from . import certutils
EINTR = 4
diff --git a/netlib/test.py b/netlib/test.py
index bb0012ad..31a848a6 100644
--- a/netlib/test.py
+++ b/netlib/test.py
@@ -1,6 +1,7 @@
+from __future__ import (absolute_import, print_function, division)
import threading, Queue, cStringIO
-import tcp, certutils
import OpenSSL
+from . import tcp, certutils
class ServerThread(threading.Thread):
def __init__(self, server):
diff --git a/netlib/utils.py b/netlib/utils.py
index 69ba456a..79077ac6 100644
--- a/netlib/utils.py
+++ b/netlib/utils.py
@@ -1,4 +1,4 @@
-import socket
+from __future__ import (absolute_import, print_function, division)
def isascii(s):
diff --git a/netlib/version.py b/netlib/version.py
index 25565d40..913f753a 100644
--- a/netlib/version.py
+++ b/netlib/version.py
@@ -1,3 +1,5 @@
+from __future__ import (absolute_import, print_function, division)
+
IVERSION = (0, 11)
VERSION = ".".join(str(i) for i in IVERSION)
MINORVERSION = ".".join(str(i) for i in IVERSION[:2])
diff --git a/netlib/wsgi.py b/netlib/wsgi.py
index b576bdff..492803ab 100644
--- a/netlib/wsgi.py
+++ b/netlib/wsgi.py
@@ -1,5 +1,6 @@
+from __future__ import (absolute_import, print_function, division)
import cStringIO, urllib, time, traceback
-import odict, tcp
+from . import odict, tcp
class ClientConn:
diff --git a/test/test_tcp.py b/test/test_tcp.py
index 911beccc..bf681811 100644
--- a/test/test_tcp.py
+++ b/test/test_tcp.py
@@ -129,9 +129,6 @@ class TestServerSSL(test.ServerTestBase):
c.wfile.flush()
assert c.rfile.readline() == testval
- def test_get_remote_cert(self):
- assert certutils.get_remote_cert("127.0.0.1", self.port, None).digest("sha1")
-
def test_get_current_cipher(self):
c = tcp.TCPClient(("127.0.0.1", self.port))
c.connect()
diff --git a/tools/getcertnames b/tools/getcertnames
index f39fc635..d22f4980 100755
--- a/tools/getcertnames
+++ b/tools/getcertnames
@@ -1,14 +1,25 @@
#!/usr/bin/env python
import sys
sys.path.insert(0, "../../")
-from netlib import certutils
+from netlib import tcp
+
+
+def get_remote_cert(host, port, sni):
+ c = tcp.TCPClient((host, port))
+ c.connect()
+ c.convert_to_ssl(sni=sni)
+ return c.cert
if len(sys.argv) > 2:
port = int(sys.argv[2])
else:
port = 443
+if len(sys.argv) > 3:
+ sni = sys.argv[3]
+else:
+ sni = None
-cert = certutils.get_remote_cert(sys.argv[1], port, None)
+cert = get_remote_cert(sys.argv[1], port, sni)
print "CN:", cert.cn
if cert.altnames:
print "SANs:",