NFe.Settings.Empresas.ResetCertificado C# (CSharp) Method

ResetCertificado() public static method

Reseta o certificado da empresa e recria o mesmo
public static ResetCertificado ( int index ) : X509Certificate2
index int identificador da empresa
return System.Security.Cryptography.X509Certificates.X509Certificate2
        public static X509Certificate2 ResetCertificado(int index)
        {
            Empresa empresa = Empresas.Configuracoes[index];
            if (empresa.UsaCertificado)
            {
                empresa.X509Certificado.Reset();

                Thread.Sleep(0);

                empresa.X509Certificado = null;
                GC.Collect();
                GC.WaitForPendingFinalizers();

                //Ajustar o certificado digital de String para o tipo X509Certificate2
                X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
                store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
                X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
                X509Certificate2Collection collection1 = null;
                if (!string.IsNullOrEmpty(empresa.CertificadoDigitalThumbPrint))
                    collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindByThumbprint, empresa.CertificadoDigitalThumbPrint, false);
                else
                    collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindBySubjectDistinguishedName, empresa.Certificado, false);

                for (int i = 0; i < collection1.Count; i++)
                {
                    //Verificar a validade do certificado
                    if (DateTime.Compare(DateTime.Now, collection1[i].NotAfter) == -1)
                    {
                        empresa.X509Certificado = collection1[i];
                        break;
                    }
                }

                //Se não encontrou nenhum certificado com validade correta, vou pegar o primeiro certificado, porem vai travar na hora de tentar enviar a nota fiscal, por conta da validade. Wandrey 06/04/2011
                if (empresa.X509Certificado == null && collection1.Count > 0)
                    empresa.X509Certificado = collection1[0];
            }
            return empresa.X509Certificado;

        }
        #endregion