Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can this be used for DTLS-PSK? #6

Open
mariusmotea opened this issue Feb 6, 2018 · 3 comments
Open

Can this be used for DTLS-PSK? #6

mariusmotea opened this issue Feb 6, 2018 · 3 comments

Comments

@mariusmotea
Copy link

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
Copy link
Owner

drbild commented Feb 6, 2018

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
Copy link

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
Copy link
Owner

drbild commented Dec 3, 2019

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants