ssl1_backend.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:flux_line_bot 作者: blesscat 项目源码 文件源码
def connect(self):
        if self.sock:
            self.close()

        s = socket.socket()
        s.connect(self.endpoint)

        hello = s.recv(8, socket.MSG_WAITALL)
        if hello != b"FLUX0003":
            raise NotSupportError()

        self.sock = ssl.SSLSocket(s)

        # Stage 1: Recv randbytes
        self.randbytes = self.recv_bytes(64)

        # Stage 2: Send public key
        strkey = self.client_key.public_key_pem.decode("ascii")
        self.send_text(strkey)

        # Stage 3: Get public key status
        resp = self.recv_text()

        if resp == "sign":
            # Stage 4.a: Sign
            doc = HMAC(self.uuid.bytes, self.randbytes, sha1).digest()
            signature = self.client_key.sign(doc)
            self.send_text(to_hex(signature))

        elif resp == "password":
            # Stage 4.b: Send password
            return

        elif resp.startswith("error "):
            raise raise_error(resp)
        else:
            raise NotSupportError("Auth method %s not support", resp)

        resp = self.recv_text()
        if resp == "ok":
            self._authorized = True
            return
        elif resp.startswith("error "):
            err = resp[6:]
            if err == "AUTH_ERROR":
                raise AuthError()
            else:
                raise UpnpError(err)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号