'BouncyCastle AsymmetricKeyParameter inaccessible due to its protection level

I have the following class

public class BouncyCastle
{
private AsymmetricKeyParameter asymmetricKeyParameter;
public bool CleanKey(string fullKey, string jwtToken)
{
    try
    {
    var rs256Token = fullKey.Replace("-----BEGIN PUBLIC KEY-----", "");
    rs256Token = rs256Token.Replace("-----END PUBLIC KEY-----", "");
    rs256Token = rs256Token.Replace("\n", "");

    Validate(jwtToken, rs256Token);
    return true;
    }
    catch (Exception e)
    {
    return false;
    }
}

public void Validate(string token, string key)
{
    var keyBytes = Convert.FromBase64String(key); // your key here

    this.asymmetricKeyParameter = PublicKeyFactory.CreateKey(keyBytes);
    RsaKeyParameters rsaKeyParameters = (RsaKeyParameters)asymmetricKeyParameter;
    RSAParameters rsaParameters = new RSAParameters
    {
    Modulus = rsaKeyParameters.Modulus.ToByteArrayUnsigned(),
    Exponent = rsaKeyParameters.Exponent.ToByteArrayUnsigned()
    };
    using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
    {
    rsa.ImportParameters(rsaParameters);
    var validationParameters = new TokenValidationParameters()
    {
        RequireExpirationTime = false,
        RequireSignedTokens = true,
        ValidateAudience = false,
        ValidateIssuer = false,
        IssuerSigningKey = new RsaSecurityKey(rsa)
    };
    var handler = new JwtSecurityTokenHandler();
    var result = handler.ValidateToken(token, validationParameters, out var validatedToken);
    }
}
}

When I compile it locally in visual studio it compile. When I try to build it in an Azure pipeline I get the error

 error CS0122: 'AsymmetricKeyParameter' is inaccessible due to its protection level 

There seems very little of any documentation to go with it. Can anyone help?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source