Cómo diferenciar la FIEL de un Certificado de Sello Digital


He consultado en infinidad de páginas en internet y foros y nadie ha encontrado una manera definitiva de diferenciarlos existen algunos acercamientos que al parecer funcionan pero ninguno al 100%.

Veamos como se han intentado diferenciar, si abrimos los archivos .cer de una Firma Electrónica Avanzada (FIEL) y el de un Certificado de Sello Digital (CSD) :

1. Uso de datos

  
  

Como se observa, se tienen diferentes usos entre la FIEL y el CSD pero ninguno que pudiera ayudar a diferenciar si es una FIEL o un CSD

2. Uso Mejorado de Claves

  

La FIEL cuenta con un apartado de "Uso mejorado de claves" a diferencia del CSD; esta puede ser una alternativa ya que si han intentado usar la aplicación del SAT para facturar no puedes autentificarte si usas un CSD

3. Sujeto

  

En algún foro leí (no recuerdo cual) y hacía mención que en todo CSD la variable "OU" estaba asignada y en la FIEL esta no aparecía (créditos a quien corresponda); de los que he verificado esto siempre se ha cumplido

Con la librería publicada se puede usar cualquier de las 3 opciones

string _fielFile = Path.Combine(
                TMDCfdiConfig.FIELDirectory,  /* Directorio donde se encuentran los archivos */
                TMDCfdiConfig.CerFile); /* Archivo .cer de una FIEL o de un CSD de acuerdo a sus necesidades */

            TMDCertificate _certificado = new TMDCertificate(new FileInfo(_fielFile));

            //Uso de la Clave
            TMDCertKeyUsage _keyUsage = _certificado.GetKeyUssage();

            if (_keyUsage.DigitalSignature)
                MessageBox.Show("Digital Signature");
            if (_keyUsage.DataEncipherment)
                MessageBox.Show("Cifrado de datos");

            //Uso mejorado de claves
            TMDCertEnhancedKeyUsaged _enhancedKeyUsage = _certificado.GetEnhancedKeyUsage();
            if (_enhancedKeyUsage != null)
            {
                if (_enhancedKeyUsage.ClientAuth)
                    MessageBox.Show("Se puede autentificar el cliente con este certificado");
            }
            else MessageBox.Show("Al parecer es un CSD");

            //Sujeto             TMDCertSubjectData _subjectData = _certificado.GetSubjectData();
            if (_subjectData.OU != null)
                MessageBox.Show("Al parecer es un CSD");
            else
                MessageBox.Show("Al parecer es una FIEL");



EL SOFTWARE SE PROPORCIONA "TAL CUAL" Y EL AUTOR RECHAZA TODAS LAS 
GARANTÍAS CON RESPECTO A ESTE SOFTWARE, INCLUIDAS TODAS LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN. EN NINGÚN CASO EL AUTOR SERÁ RESPONSABLE POR CUALQUIER DAÑO ESPECIAL, DIRECTO, INDIRECTO O CONSECUENTE, O CUALQUIER DAÑO QUE RESULTE DE LA PÉRDIDA DE USO, DATOS O BENEFICIOS, YA SEA EN UNA ACCIÓN DE CONTRATO, NEGLIGENCIA U OTRA ACCIÓN EXTRACONTRACTUALQUE SURJA DE O EN CONEXIÓN CON EL USO O RENDIMIENTO DE ESTE SOFTWARE.

/* ----------------------------------------- */ 

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


Comentarios

Entradas populares de este blog

Tipo de cambio FIX con WebService de Banxico

Complemento - Leyendas Fiscales

Colecciones en C# - Implementación IList e IBindingList