Beispiel #1
0
        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            var result = base.CreateProperty(member, memberSerialization);

            if (member.GetEncryptedFieldAttribute(out var attribute))
            {
                if (attribute.Provider == null)
                {
                    if (CryptoProviders == null || CryptoProviders.Count == 0)
                    {
                        throw new ArgumentException("A CryptoProvider must be configured.");
                    }

                    //assign the default provider if none is supplied
                    attribute.Provider = CryptoProviders.First().Key;
                }

                var propertyInfo = member as PropertyInfo;
                result.PropertyName = EncryptedFieldPrefix + result.PropertyName;

                result.Converter       = new EncryptableFieldConverter(propertyInfo, CryptoProviders, attribute.Provider);
                result.MemberConverter = new EncryptableFieldConverter(propertyInfo, CryptoProviders, attribute.Provider);
            }

            return(result);
        }
Beispiel #2
0
        public static byte[] GetFileHash(string filename, CryptoProviders cryptoProvider)
        {
            byte[] hash = null;

            using (FileStream stream = File.OpenRead(filename))
            {
                switch (cryptoProvider)
                {
                case CryptoProviders.MD5:
                    MD5 md5 = MD5.Create();
                    hash = md5.ComputeHash(stream);
                    break;

                case CryptoProviders.SHA1:
                    SHA1 sha1 = SHA1.Create();
                    hash = sha1.ComputeHash(stream);
                    break;

                case CryptoProviders.SHA256:
                    SHA256 sha256 = SHA256.Create();
                    hash = sha256.ComputeHash(stream);
                    break;
                }
            }

            return(hash);
        }