drbild / sslpsk

Adds TLS-PSK support to the Python ssl package
Apache License 2.0
24 stars 32 forks source link

Can this be used for DTLS-PSK? #6

Open mariusmotea opened 6 years ago

mariusmotea commented 6 years ago

Hi,

i want to know if is possible to use you library for Philips Hue Entertainment that has the following requirements:

UDP port 2100 is used for DTLS handshaking and streaming. Only DTLS mode version 1.2 with Pre-Shared Key (PSK) Key exchange method with TLS_PSK_WITH_AES_128_GCM_SHA256 set as Cipher Suite is supported.

Thanks, Marius.

drbild commented 6 years ago

It doesn't support DTLS currently. I haven't looked at PyDTLS, so I'm not sure how easy it would be to add support for PyDTLS as well.

d8ahazard commented 4 years ago

Just wanted to say, I'm still trying to pursue this course of action. Unfortunately, I get the following error when I try to use sslpsk in conjunction with pyDTLS:

Process finished with exit code -1073741819 (0xC0000005)

def do_handshake(self):
    print("Handshaking with ", self.bridge_ip)
    ssl_sock = False
    psk = binascii.unhexlify(self.bridge_key)
    print("PSK", psk)
    try:
        do_patch()  # dtls library doing its thing
        print("Patched")
        host = self.bridge_ip
        port = 2100
        print("Wrapping socket")
        tcp_socket = socket(AF_INET, SOCK_DGRAM)
        tcp_socket.connect((host, port))
        ssl_sock = sslpsk.wrap_socket(tcp_socket,
                                      ssl_version=258,
                                      ciphers='PSK-AES128-GCM-SHA256',
                                      psk=psk, hint=self.user)
        print("Socket wrapped")

        msg = "ping"
        ssl_sock.sendall(msg.encode())
        msg = ssl_sock.recv(4).decode()
        print('Client received: %s' % msg)
    except Exception as e:
        print("Socket exception: ", e)
    return ssl_sock

I feel like there's something simple here I need to do to fix this, but can't figure out what...

Similar discussion here:

https://www.reddit.com/r/learnpython/comments/7s03fa/question_about_sockets_dtls_handshaking/

drbild commented 4 years ago

Marking this as won't fix, since I have no plans to figure out DTLS support. I'm happy to take PR though, if someone else wants to take this on.