public bool EsValido(IDigitoVerificadorHorizontal entidad)
        {
            var calculatedHash = this.CalcularDigitoVerificadorParaEntidad(entidad);
            var currentHash    = entidad.DVH ?? new byte[0];

            return(calculatedHash.SequenceEqual(currentHash));
        }
        public byte[] CalcularDigitoVerificadorParaEntidad(IDigitoVerificadorHorizontal entidad)
        {
            var seed        = new StringBuilder();
            var tipoEntidad = entidad.GetType();

            foreach (PropertyDescriptor propertyDescriptor in TypeDescriptor.GetProperties(tipoEntidad))
            {
                var fieldMarkedForRc = propertyDescriptor.Attributes
                                       .OfType <DatoSensibleAttribute>()
                                       .FirstOrDefault();

                if (fieldMarkedForRc != null)
                {
                    //TODO: Verificar el orden del armado de la semilla, mientras sea la misma version de la clase no importa
                    var propertyValueSerialized = Convert.ToString(propertyDescriptor.GetValue(entidad) ?? string.Empty);
                    seed.Append(propertyValueSerialized);
                }
            }
            return(_hash.CreateHash(seed.ToString()));
        }
Beispiel #3
0
 private static Type ObtenerTipoDeEntidad(IDigitoVerificadorHorizontal entidadConDigitoVerificador)
 {
     return(System.Data.Entity.Core.Objects.ObjectContext.GetObjectType(entidadConDigitoVerificador.GetType()));
 }