Our SSL library CyaSSL can use non blocking sockets for for SSL, TLS, and DTLS. If you're new to non blocking programming I suggest starting with TLS because tcp sockets are generally easier to use than udp which DTLS is run on. Our examples can be run in non blocking mode with the -N argument, e.g.,
SSL/TLS/DTLS connections don't directly use the public/private key pairs for encrypting messages. Instead, the public/private key pairs are used to create a master secret during the handshake process that is then run through a PRF to create the encryption keys. If you wan to directly use the public/private key pairs for encryption you may need to build that functionality yourself. Though it's much harder than it sounds to create a secure system and we always suggest using TLS version 1.2. There are a million ways to create a less secure system than that and very few to make a better one.
A third party is typically used in TLS as a Certificate Authority (CA), the CA signs certificates which allows for trusted certificates that you've never seen before as long as you trust the CA.
Key generation / certificate generation and signing can be done on a mobile device though you're going to get more security by having a dedicated specialized service doing that for you.
I hope these suggestions help you along,