From db9f2d6d734aa8f527b06e4a196a485640a207ff Mon Sep 17 00:00:00 2001 From: Laurent Bachelier Date: Tue, 23 Jul 2013 13:38:26 +0200 Subject: [PATCH] Tools to easily get the CERTHASH --- tools/certhash.py | 5 +++++ weboob/tools/browser/browser.py | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100755 tools/certhash.py diff --git a/tools/certhash.py b/tools/certhash.py new file mode 100755 index 00000000..b56542b5 --- /dev/null +++ b/tools/certhash.py @@ -0,0 +1,5 @@ +#!/usr/bin/env python +import sys +from weboob.tools.browser import StandardBrowser + +print StandardBrowser()._certhash(sys.argv[1]) diff --git a/weboob/tools/browser/browser.py b/weboob/tools/browser/browser.py index ddaa7dc9..07f3cbc6 100644 --- a/weboob/tools/browser/browser.py +++ b/weboob/tools/browser/browser.py @@ -123,6 +123,7 @@ class NoHistory(object): class BrokenPageError(Exception): pass + class FormFieldConversionWarning(UserWarning): """ A value has been set to a form's field and has been implicitly converted. @@ -438,8 +439,7 @@ class StandardBrowser(mechanize.Browser): return def lowsslcheck(self, domain, hsh): - certs = ssl.get_server_certificate((domain, 443)) - certhash = hashlib.sha256(certs).hexdigest() + certhash = self._certhash(domain) if self.logger: self.logger.debug('Found %s as certificate hash' % certhash) if isinstance(hsh, basestring): @@ -447,6 +447,10 @@ class StandardBrowser(mechanize.Browser): if certhash not in hsh: raise ssl.SSLError() + def _certhash(self, domain, port=443): + certs = ssl.get_server_certificate((domain, port)) + return hashlib.sha256(certs).hexdigest() + def __setitem__(self, key, value): if isinstance(value, unicode): value = value.encode(self.ENCODING or 'utf-8')