added virtual device, implemented ecdh key agree