Exemple #1
0
        public bool CheckPassword(string pass)
        {
            var cryptoHelper = new AuthCryptoHelper(Crypto.Conf);
            var inputPass    = cryptoHelper.CalculateUserPasswordHash(pass, Crypto.Salt);

            return(StructuralComparisons.StructuralEqualityComparer.Equals(inputPass, Crypto.Key));
        }
        /// <summary>
        /// Set the password on a file. This will overwrite an existing password.
        /// </summary>
        /// <param name="file"></param>
        /// <param name="pass"></param>
        /// <returns></returns>
        public async Task SetFilePasswordAsync(StoredFile file, string pass)
        {
            if (pass == null) // No password
            {
                file.Crypto = null;
            }
            var cryptoConf   = PasswordCryptoConfiguration.CreateDefault();
            var cryptoHelper = new AuthCryptoHelper(cryptoConf);
            var pwSalt       = cryptoHelper.GenerateSalt();

            file.Crypto = new ItemCrypto
            {
                Conf = cryptoConf,
                Salt = pwSalt,
                Key  = cryptoHelper.CalculateUserPasswordHash(pass, pwSalt)
            };
            await UpdateStoredFileInDatabaseAsync(file);
        }