none
Passar PIN certificado na função RRS feed

  • Pergunta

  • Estou assinando um xml, e agora preciso passar o PIN pelo código, verifiquei por este link, e ele tem as instruções, adicionei esta função no meu código:

    public static RSACryptoServiceProvider LerDispositivo(RSACryptoServiceProvider key, string PIN)
        {
            CspParameters csp = new CspParameters(key.CspKeyContainerInfo.ProviderType, key.CspKeyContainerInfo.ProviderName);
            SecureString ss = new SecureString();
            foreach (char a in PIN) 
            {
                ss.AppendChar(a);
            }
            csp.ProviderName = key.CspKeyContainerInfo.ProviderName;
            csp.ProviderType = key.CspKeyContainerInfo.ProviderType;
            csp.KeyNumber = key.CspKeyContainerInfo.KeyNumber == KeyNumber.Exchange ? 1 : 2;
            csp.KeyContainerName = key.CspKeyContainerInfo.KeyContainerName;
            csp.KeyPassword = ss;
            csp.Flags = CspProviderFlags.NoPrompt | CspProviderFlags.UseDefaultKeyContainer;
    
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
            return rsa;
        }

    E na função para assinar incluir estas linhas:

    RSACryptoServiceProvider Key = new RSACryptoServiceProvider();
                            Key = (System.Security.Cryptography.RSACryptoServiceProvider)x509Cert.PrivateKey;
                            signedXml.SigningKey = x509Cert.PrivateKey;
                            signedXml.SigningKey = LerDispositivo(Key, "0000");

    Ele compila, porém ao chegar nesta linha:

    Key = (System.Security.Cryptography.RSACryptoServiceProvider)x509Cert.PrivateKey;

    Ele retorna o erro:

    InvalidCastException: Unable to cast object of type 'System.Security.Cryptography.RSACng' to type 'System.Security.Cryptography.RSACryptoServiceProvider'.

    É a primeira vez que trabalho com certificados, verifiquei e pode ser porque utilizo ASP.NET CORE, porém não sei como corrigir este problema. Alguém tem alguma ideia do porque isso ocorre?


    sexta-feira, 30 de novembro de 2018 10:32