User key pair generation

Each user generates a private key (which is never disclosed to any other party), computes the public key and shares it.