ZeusAutomacao/DFe.NET

Erro Criptografia CTe e MDFe (Tipo Emissão Contingencia) Net 6.0

Closed this issue · 11 comments

Estou implementando tanto CTe como MDFe e ao tentar emitir notas em contingencia (homologação , nao cheguei a testar em produção ainda) apresentou os seguinte erro:

Emissão normal está funcionando normalmente..

O certificado usado é A1Arquivo.

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

DLL_1
DLL_2

Se alguem puder me ajudar e se ja teve algum problema do tipo...

Pode passar mais detalhes do seu código ?

Quais especificos? ai ja vejo aqui e mando..

Criação da configuração antes de enviar o mdf-e ou o método que esteja usando

Segue o da MDFe
MDFe_Configuracao
MDFe_Envio

O erro acontece na MDFeRecepcao.

em MDFe.Classes.Extencoes.ExtMDFe.CreateSignaturePkcs1(X509Certificate2 certificado, Byte[] Value)
em MDFe.Classes.Extencoes.ExtMDFe.QrCode(MDFe mdfe, X509Certificate2 certificadoDigital, Encoding encoding)
em MDFe.Servicos.RecepcaoMDFe.ServicoMDFeRecepcao.MDFeRecepcao(Int64 lote, MDFe mdfe)
em Module.PRSCloud.Core.Features.EmitirMDFeCommandHandler.d__9.MoveNext() em C:\Users\tiago\source\repos\PRS-Cloud-Back\Module.PRSCloud.Core\Features\MDFe\EmitirMDFe\EmitirMDFeCommandHandler.cs:linha 571
em WebApi.Behaviors.RequestValidationHandler2.<Handle>d__2.MoveNext() em C:\Users\tiago\source\repos\PRS-Cloud-Back\WebApi\Behaviors\RequestValidationHandler.cs:linha 29 em MediatR.Pipeline.RequestExceptionProcessorBehavior2.d__2.MoveNext()
em MediatR.Pipeline.RequestExceptionProcessorBehavior2.<Handle>d__2.MoveNext() em MediatR.Pipeline.RequestExceptionActionProcessorBehavior2.d__2.MoveNext()
em MediatR.Pipeline.RequestExceptionActionProcessorBehavior2.<Handle>d__2.MoveNext() em MediatR.Pipeline.RequestPostProcessorBehavior2.d__2.MoveNext()
em MediatR.Pipeline.RequestPreProcessorBehavior2.<Handle>d__2.MoveNext() em Module.PRSCloud.Controllers.MDFeController.<Cadastrar>d__3.MoveNext() em C:\Users\tiago\source\repos\PRS-Cloud-Back\Module.PRSCloud\Controllers\MDFe\MDFeController.cs:linha 46 em Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.<Execute>d__0.MoveNext() em System.Threading.Tasks.ValueTask1.get_Result()
em System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult()
em Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<g__Awaited|12_0>d.MoveNext()
em Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<g__Awaited|10_0>d.MoveNext()
em Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
em Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
em Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<g__Awaited|13_0>d.MoveNext()
em Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<g__Awaited|20_0>d.MoveNext()
em Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<g__Awaited|17_0>d.MoveNext()
em Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<g__Awaited|17_0>d.MoveNext()
em Microsoft.AspNetCore.Routing.EndpointMiddleware.<g__AwaitRequestTask|6_0>d.MoveNext()
em Application.Middleware.ExceptionMiddleware.d__2.MoveNext() em C:\Users\tiago\source\repos\PRS-Cloud-Back\WebApi\Middleware\ExceptionMiddleware.cs:linha 22

Para o CTe

CTe_Configuracao
CTe_Envio

Erro que dá na requisição:
{
"status": 500,
"message": "Unable to cast object of type 'System.Security.Cryptography.RSACng' to type 'System.Security.Cryptography.RSACryptoServiceProvider'."

para o CTe tipo emissão
[XmlEnum("5")]
teFSDA = 5,
e MDFe
[XmlEnum("2")]
Contingencia

Consegui ajustar..
alteracaoDLL
Com essa alteração na primeira instrução, deu certo a emissao.. Algum responsavel poderia atualizar o Master e lançar uma atualização no nuget?
Tanto para MDFe , como CTe por favor..

Bom dia @robertorp , poderia dar uma olhada nessa questão hoje ?

@tiagovbp aceitamos seu pull request, para colaborar com a mudança. Faça um fork do projeto, atualiza o codigo fonte com as novas mudanças usando git e depois no github faça um pull request do seu projeto para esse aqui. Ai a gente já analisa.

Boa tarde @danilobreda , um amigo meu fez as mudanças tanto para CTe e MDFe, ele também fez uma outra no CTe. Ele está fazendo o pull request no momento..

@tiagovbp @lucasnc aceitei o pullrequest, parece que a solução se encaixa bem, qualquer coisa caso quebre alguém utilizando versões anteriores do .net (ex: 4.5.2) vou precisar colocar #if para na parte do algoritmo alterado de cryptography, mas acredito que por enquanto esta tudo certo.
Vou fechar a issue qualquer coisa só comentar aqui mesmo ou abrir uma nova issue.
Desculpe-nos pela demora com esse problema :/