#pragma warning restore CS3016 // Arrays as attribute arguments is not CLS-compliant
        public void JwtSigning(JwtSigningTestParams testParams)
        {
            var providerForSigning   = CryptoProviderFactory.Default.CreateForSigning(testParams.PrivateKey, testParams.Algorithm);
            var providerForVerifying = CryptoProviderFactory.Default.CreateForVerifying(testParams.PublicKey, testParams.Algorithm);
            var signatureBytes       = providerForSigning.Sign(Encoding.UTF8.GetBytes(testParams.EncodedData));
            var encodedSignature     = Base64UrlEncoder.Encode(signatureBytes);

            Assert.True(testParams.EncodedSignature.Equals(encodedSignature, StringComparison.Ordinal), "encodedSignature != testParams.EncodedSignature");
            Assert.True(providerForVerifying.Verify(Encoding.UTF8.GetBytes(testParams.EncodedData), Base64UrlEncoder.DecodeBytes(testParams.EncodedSignature)), "Verify Failed");
        }
        public void JwtSigning(JwtSigningTestParams testParams)
        {
            var providerForSigning   = CryptoProviderFactory.Default.CreateForSigning(testParams.PrivateKey, testParams.Algorithm);
            var providerForVerifying = CryptoProviderFactory.Default.CreateForVerifying(testParams.PublicKey, testParams.Algorithm);
            var signatureBytes       = providerForSigning.Sign(Encoding.UTF8.GetBytes(testParams.EncodedData));
            var encodedSignature     = Base64UrlEncoder.Encode(signatureBytes);

            // Signatures aren't necessarily deterministic across different algorithms
            if (testParams.DeterministicSignatures)
            {
                Assert.True(testParams.EncodedSignature.Equals(encodedSignature), "encodedSignature != testParams.EncodedSignature");
            }
            Assert.True(providerForVerifying.Verify(Encoding.UTF8.GetBytes(testParams.EncodedData), Base64UrlEncoder.DecodeBytes(testParams.EncodedSignature)), "Verify Failed");
        }