public static bool Verify(Signature s, Keypair kp)
        {
            IAsymmetricEncryptionProvider provider = GetRsaProvider(kp.RsaProvider);

            provider.SetKeyPair(kp.ToPublic());
            return(provider.VerifyData(s.Data, s.SignatureData));
        }
        /// <summary>
        ///     Encrypts <paramref name="data" /> for <paramref name="recipient" />. <paramref name="recipient" /> can be a public
        ///     key.
        /// </summary>
        /// <param name="recipient"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static Message Encrypt(Keypair recipient, byte[] data)
        {
            IAsymmetricEncryptionProvider provider = GetRsaProvider(recipient.RsaProvider);

            provider.SetKeyPair(recipient.ToPublic());
            var aes = new AesSymmetricEncryptionProvider();

            byte[] cipher       = aes.TransformAsync(data).Result;
            byte[] encryptedKey = provider.Encrypt(aes.Key);
            var    m            = new Message {
                Content      = cipher,
                EncryptedKey = encryptedKey,
                Iv           = aes.Iv,
                RecipientId  = recipient.ShortId
            };

            return(m);
        }