Asymmetric-key encryption algorithm