From ea64b2af64a29d4f640714e60a136cf4e00d6d61 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Thu, 16 Apr 2020 17:31:58 +0200 Subject: [PATCH] interface.get_certificate: use public asyncio APIs --- electrum/interface.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/electrum/interface.py b/electrum/interface.py index 26677aefe..f17a34017 100644 --- a/electrum/interface.py +++ b/electrum/interface.py @@ -463,13 +463,12 @@ class Interface(Logger): async def get_certificate(self): sslc = ssl.SSLContext() - try: - async with _RSClient(session_factory=RPCSession, - host=self.host, port=self.port, - ssl=sslc, proxy=self.proxy) as session: - return session.transport._asyncio_transport._ssl_protocol._sslpipe._sslobj.getpeercert(True) - except ValueError: - return None + async with _RSClient(session_factory=RPCSession, + host=self.host, port=self.port, + ssl=sslc, proxy=self.proxy) as session: + asyncio_transport = session.transport._asyncio_transport # type: asyncio.BaseTransport + ssl_object = asyncio_transport.get_extra_info("ssl_object") # type: ssl.SSLObject + return ssl_object.getpeercert(binary_form=True) async def get_block_header(self, height, assert_mode): self.logger.info(f'requesting block header {height} in mode {assert_mode}')