public void CreateHash_ResultShouldNotBeEqualToInputText(string inputText) { var hashedText = Sha256Generator.ComputeString(inputText); Assert.That(hashedText, Is.Not.EqualTo(inputText)); Assert.That(hashedText.Length, Is.EqualTo(64)); }
private async Task <ActionResult <UserResponse> > UpdateUserAsync(int id, UserRequest userUpdate) { var db_user = await _context.Users.AsNoTracking().Where(u => u.Id == id).FirstOrDefaultAsync(); if (db_user is null) { return(NotFound()); } var db_password = await _context.Passwords.AsNoTracking().Where(p => p.UserId == db_user.Id).OrderBy(p => p.TimeStamp).LastAsync(); if (db_password.Password != Sha256Generator.ComputeString(userUpdate.Password)) { var new_password = new PasswordDbModel() { Password = Sha256Generator.ComputeString(userUpdate.Password), TimeStamp = DateTime.Now, UserId = id }; await _context.Passwords.AddAsync(new_password); } var updatedUser = _mapper.Map <UserDbModel>(userUpdate); updatedUser.Id = id; _context.Users.Update(updatedUser); await _context.SaveChangesAsync(); return(_mapper.Map <UserResponse>(updatedUser)); }
/// <summary> /// Verifies the hashes of all the payloads in the metadata. /// </summary> /// <returns>The <see cref="Result"/> of the operation. /// <see cref="Result.Success"/> if all the hashes are valid.</returns> public Result VerifyPayloads() { using (var buffer = new RentedArray <byte>(0x10000)) { byte[] array = buffer.Array; var hashBuffer = new Buffer32(); var sha = new Sha256Generator(); // Verify hashes match for all payloads. for (int i = 0; i < Package2Header.PayloadCount; i++) { if (_header.Meta.PayloadSizes[i] == 0) { continue; } int offset = _header.Meta.GetPayloadFileOffset(i); int size = (int)_header.Meta.PayloadSizes[i]; var payloadSubStorage = new SubStorage(_storage, offset, size); offset = 0; sha.Initialize(); while (size > 0) { int toRead = Math.Min(array.Length, size); Span <byte> span = array.AsSpan(0, toRead); Result rc = payloadSubStorage.Read(offset, span); if (rc.IsFailure()) { return(rc); } sha.Update(span); offset += toRead; size -= toRead; } sha.GetHash(hashBuffer); if (!CryptoUtil.IsSameBytes(hashBuffer, _header.Meta.PayloadHashes[i], 0x20)) { return(ResultLibHac.InvalidPackage2PayloadCorrupted.Log()); } } } return(Result.Success); }
private async Task <ActionResult <UserResponse> > CreateNewUserAsync(UserRequest user) { if (await _context.Users.Where(u => u.Email.ToLower() == user.Email.ToLower()).SingleOrDefaultAsync() is not null) { return(Conflict("Email address already in use")); } var db_user = _mapper.Map <UserDbModel>(user); var db_password = new PasswordDbModel() { Password = Sha256Generator.ComputeString(user.Password), TimeStamp = DateTime.Now, User = db_user }; await _context.Users.AddAsync(db_user); await _context.Passwords.AddAsync(db_password); await _context.SaveChangesAsync(); return(_mapper.Map <UserResponse>(db_user)); }