SHARE
TWEET

Untitled

a guest Jun 26th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public static X509Certificate2Collection SelecionarCertificado(string serial)
  2.     {
  3.         X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
  4.         var Key = new RSACryptoServiceProvider();
  5.         store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
  6.         X509Certificate2Collection collection = store.Certificates;
  7.         X509Certificate2Collection fcollection = collection.Find(X509FindType.FindBySerialNumber, serial, true);
  8.  
  9.         return fcollection;
  10.     }
  11.  
  12.     public static RSACryptoServiceProvider LerDispositivo(RSACryptoServiceProvider key, string PIN)
  13.     {
  14.         CspParameters csp = new CspParameters(key.CspKeyContainerInfo.ProviderType, key.CspKeyContainerInfo.ProviderName);
  15.         SecureString ss = new SecureString();
  16.         foreach (char a in PIN)
  17.         {
  18.             ss.AppendChar(a);
  19.         }
  20.         csp.ProviderName = key.CspKeyContainerInfo.ProviderName;
  21.         csp.ProviderType = key.CspKeyContainerInfo.ProviderType;
  22.         csp.KeyNumber = key.CspKeyContainerInfo.KeyNumber == KeyNumber.Exchange ? 1 : 2;
  23.         csp.KeyContainerName = key.CspKeyContainerInfo.KeyContainerName;
  24.         csp.KeyPassword = ss;
  25.         csp.Flags = CspProviderFlags.NoPrompt | CspProviderFlags.UseDefaultKeyContainer;
  26.  
  27.         RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
  28.         return rsa;
  29.     }
  30.      
  31. X509Certificate2Collection collection = Certificados.SelecionarCertificado(serial);
  32.  
  33.         if (collection.Count == 1)
  34.         {
  35.             X509Certificate2 x509Cert = collection[0];
  36.  
  37.             StreamReader SR = null;
  38.  
  39.             try
  40.             {
  41.                 SR = System.IO.File.OpenText(arquivo);
  42.                 string xmlString = SR.ReadToEnd();
  43.                 SR.Close();
  44.                 SR = null;
  45.  
  46.                 XmlDocument doc = new XmlDocument();
  47.  
  48.                 doc.PreserveWhitespace = false;
  49.  
  50.                 doc.LoadXml(xmlString);
  51.  
  52.                 if (doc.GetElementsByTagName(tagAssinatura).Count == 0)
  53.                 {
  54.                     resultado.Result = false;
  55.                     resultado.Mensagem = $"A tag de assinatura {tagAssinatura.Trim()} não existe no XML. (Código do Erro: 5)";
  56.  
  57.                     Console.WriteLine(resultado.Mensagem);
  58.  
  59.                     return resultado;
  60.                     //throw new Exception($"A tag de assinatura {tagAssinatura.Trim()} não existe no XML. (Código do Erro: 5)");
  61.                 }
  62.                 else if (doc.GetElementsByTagName(tagAtributoId).Count == 0)
  63.                 {
  64.                     resultado.Result = false;
  65.                     resultado.Mensagem = $"A tag de assinatura {tagAtributoId.Trim()} não existe no XML. (Código do Erro: 4)";
  66.  
  67.                     Console.WriteLine(resultado.Mensagem);
  68.  
  69.                     return resultado;
  70.                     //throw new Exception($"A tag de assinatura {tagAtributoId.Trim()} não existe no XML. (Código do Erro: 4)");
  71.                 }
  72.                 else
  73.                 {
  74.                     XmlDocument XMLDoc;
  75.  
  76.                     XmlNodeList lists = doc.GetElementsByTagName(tagAssinatura);
  77.                     foreach (XmlNode nodes in lists)
  78.                     {
  79.                         foreach (XmlNode childNodes in nodes.ChildNodes)
  80.                         {
  81.                             if (!childNodes.Name.Equals(tagAtributoId))
  82.                                 continue;
  83.  
  84.                             if (childNodes.NextSibling != null && childNodes.NextSibling.Name.Equals("Signature"))
  85.                                 continue;
  86.  
  87.                             Reference reference = new Reference("");
  88.                             reference.Uri = "";
  89.  
  90.                             XmlElement childElemen = (XmlElement)childNodes;
  91.                             if (childElemen.GetAttributeNode("Id") != null)
  92.                             {
  93.                                 reference.Uri = "#" + "RPS" + numeroRPS.ToString().PadLeft(15, '0');
  94.                             }
  95.                             else if (childElemen.GetAttributeNode("id") != null)
  96.                             {
  97.                                 reference.Uri = "#" + childElemen.GetAttributeNode("id").Value;
  98.                             }
  99.  
  100.                             SignedXml signedXml = new SignedXml(doc);
  101.  
  102.  
  103.                             KeyInfo keyInfo = new KeyInfo();
  104.  
  105.                             signedXml.KeyInfo = keyInfo;
  106.                             //signedXml.SigningKey = x509Cert.PrivateKey;
  107.                             RSACryptoServiceProvider Key = new RSACryptoServiceProvider();
  108.                             Key = (System.Security.Cryptography.RSACryptoServiceProvider)x509Cert.PrivateKey;
  109.                             signedXml.SigningKey = x509Cert.PrivateKey;
  110.                             signedXml.SigningKey = Certificados.LerDispositivo(Key, PIN);
  111.                             signedXml.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA1Url;
  112.                             reference.DigestMethod = SignedXml.XmlDsigSHA1Url;
  113.  
  114.  
  115.                             XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
  116.                             reference.AddTransform(env);
  117.                             XmlDsigC14NTransform c14 = new XmlDsigC14NTransform();
  118.                             reference.AddTransform(c14);
  119.  
  120.                             signedXml.AddReference(reference);
  121.  
  122.                             keyInfo.AddClause(new KeyInfoX509Data(x509Cert));
  123.  
  124.                             signedXml.KeyInfo = keyInfo;
  125.                             signedXml.ComputeSignature();
  126.  
  127.                             XmlElement xmlDigitalSignature = signedXml.GetXml();
  128.  
  129.                             nodes.AppendChild(doc.ImportNode(xmlDigitalSignature, true));
  130.  
  131.                         }
  132.                     }
  133.  
  134.                     XMLDoc = new XmlDocument();
  135.                     XMLDoc.PreserveWhitespace = false;
  136.                     XMLDoc = doc;
  137.                     string conteudoXMLAssinado = XMLDoc.OuterXml;
  138.                     using (StreamWriter sw = System.IO.File.CreateText(arquivo))
  139.                     {
  140.                         sw.Write(conteudoXMLAssinado);
  141.                         sw.Flush();
  142.                         sw.Close();
  143.                     }
  144.  
  145.                     resultado.Result = true;
  146.                     resultado.Mensagem = $"Procecesso de assinatura efetuado com sucesso!!!";
  147.  
  148.                     Console.WriteLine(resultado.Mensagem);
  149.  
  150.                     return resultado;
  151.                 }
  152.      
  153. var assinarL = await client.AssinarXmlAsync(empresa.Caminho + "\NFSe-LOTE" + model.IdLote.ToString().PadLeft(15, '0') + ".xml", "EnviarLoteRpsSincronoEnvio", "LoteRps", empresa.Serial, model.IdLote.ToString(), empresa.Pin);
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top