Public-key cryptographic system