public bool VerifyHash(Hash hash, string signature, string publicKey)
        {
            if (!hash.IsSha256Size)
            {
                throw new ArgumentException("SHA256 hashes are supported exclusivly", nameof(hash));
            }

            var signatureData = Convert.FromBase64String(signature);
            var parameters    = AsymmetricKeyFactory.Deserialize(publicKey);

            using (var rsa = RSA.Create())
            {
                rsa.ImportParameters(parameters);

                return(rsa.VerifyHash(hash.HashData, signatureData, _hashAlgorithm, _padding));
            }
        }
        public string SignHash(Hash hash, string privateKey)
        {
            if (!hash.IsSha256Size)
            {
                throw new ArgumentException("SHA256 hashes are supported exclusively", nameof(hash));
            }

            var parameters = AsymmetricKeyFactory.Deserialize(privateKey);

            using (var rsa = RSA.Create())
            {
                rsa.ImportParameters(parameters);

                var signature = rsa.SignHash(hash.HashData, _hashAlgorithm, _padding);
                return(Convert.ToBase64String(signature));
            }
        }