diff options
| author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-04-13 23:32:30 -0400 |
|---|---|---|
| committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-04-13 23:32:30 -0400 |
| commit | df220ad9d87115efa01571e29aee78e29de79191 (patch) | |
| tree | d9975249b15c55d7e2e0038dcec739e9696ad083 /OpenSSL/SSL.py | |
| parent | 10a9d3b0035bf6c1f6a0da4f8c1e31260f4b91ab (diff) | |
| parent | 218a0146a82b1e392ef7bbde6fd63f58f2d35ad7 (diff) | |
| download | pyopenssl-df220ad9d87115efa01571e29aee78e29de79191.tar.gz | |
Merge pull request #218 from exarkun/npn_feature_detect
NPN feature detect
Diffstat (limited to 'OpenSSL/SSL.py')
| -rw-r--r-- | OpenSSL/SSL.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/OpenSSL/SSL.py b/OpenSSL/SSL.py index cfe705a..9296444 100644 --- a/OpenSSL/SSL.py +++ b/OpenSSL/SSL.py @@ -398,6 +398,21 @@ def SSLeay_version(type): return _ffi.string(_lib.SSLeay_version(type)) +def _requires_npn(func): + """ + Wraps any function that requires NPN support in OpenSSL, ensuring that + NotImplementedError is raised if NPN is not present. + """ + @wraps(func) + def wrapper(*args, **kwargs): + if not _lib.Cryptography_HAS_NEXTPROTONEG: + raise NotImplementedError("NPN not available.") + + return func(*args, **kwargs) + + return wrapper + + def _requires_alpn(func): """ @@ -992,6 +1007,8 @@ class Context(object): _lib.SSL_CTX_set_tlsext_servername_callback( self._context, self._tlsext_servername_callback) + + @_requires_npn def set_npn_advertise_callback(self, callback): """ Specify a callback function that will be called when offering `Next @@ -1009,6 +1026,7 @@ class Context(object): self._context, self._npn_advertise_callback, _ffi.NULL) + @_requires_npn def set_npn_select_callback(self, callback): """ Specify a callback function that will be called when a server offers @@ -1867,6 +1885,8 @@ class Connection(object): version =_ffi.string(_lib.SSL_CIPHER_get_version(cipher)) return version.decode("utf-8") + + @_requires_npn def get_next_proto_negotiated(self): """ Get the protocol that was negotiated by NPN. |
