summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/User.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-05-23 23:31:58 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-05-23 23:31:58 +0200
commit6551964ad66de7bc7ccb636c54351be2a260612b (patch)
tree4b8adea356562f7e4365cd24b64f7cac1559da2e /dev/kernel/src/User.cc
parente2bd3c7b6fcd6147fcbf699be087a475608ffdf7 (diff)
feat(kernel/libSystem): Lots of improvements, see below.
what: - Reworked NetworkDevice. - Reworked RTL8139 driver. - Don't assert fCleanup on NetworkDevice destructor. - Add new Ref types in libSystem. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/User.cc')
-rw-r--r--dev/kernel/src/User.cc129
1 files changed, 0 insertions, 129 deletions
diff --git a/dev/kernel/src/User.cc b/dev/kernel/src/User.cc
deleted file mode 100644
index 1859be12..00000000
--- a/dev/kernel/src/User.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * ========================================================
- *
- * NeKernel
- * Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
- *
- * File: User.cc
- * Purpose: User class, used to provide authentication and security.
- *
- * ========================================================
- */
-
-#include <KernelKit/FileMgr.h>
-#include <KernelKit/HeapMgr.h>
-#include <KernelKit/KPC.h>
-#include <KernelKit/User.h>
-#include <NeKit/KernelPanic.h>
-
-#define kStdUserType (0xEE)
-#define kSuperUserType (0xEF)
-
-/// @file User.cc
-/// @brief Multi-user support.
-
-namespace Kernel {
-namespace Detail {
- ////////////////////////////////////////////////////////////
- /// \brief Constructs a password by hashing the password.
- /// \param password password to hash.
- /// \return the hashed password
- ////////////////////////////////////////////////////////////
- STATIC UInt64 user_fnv_generator(const Char* password, User* user) {
- if (!password || !user) return 1;
- if (*password == 0) return 1;
-
- kout << "user_fnv_generator: Hashing user password...\r";
-
- const UInt64 FNV_OFFSET_BASIS = 0xcbf29ce484222325ULL;
- const UInt64 FNV_PRIME = 0x100000001b3ULL;
-
- UInt64 hash = FNV_OFFSET_BASIS;
-
- while (*password) {
- hash ^= (Utf8Char) (*password++);
- hash *= FNV_PRIME;
- }
-
- kout << "user_fnv_generator: Hashed user password.\r";
-
- return 0;
- }
-} // namespace Detail
-
-////////////////////////////////////////////////////////////
-/// @brief User ring constructor.
-////////////////////////////////////////////////////////////
-User::User(const Int32& sel, const Char* user_name) : mUserRing((UserRingKind) sel) {
- MUST_PASS(sel >= 0);
- rt_copy_memory((VoidPtr) user_name, this->mUserName, rt_string_len(user_name));
-}
-
-////////////////////////////////////////////////////////////
-/// @brief User ring constructor.
-////////////////////////////////////////////////////////////
-User::User(const UserRingKind& ring_kind, const Char* user_name) : mUserRing(ring_kind) {
- rt_copy_memory((VoidPtr) user_name, this->mUserName, rt_string_len(user_name));
-}
-
-////////////////////////////////////////////////////////////
-/// @brief User destructor class.
-////////////////////////////////////////////////////////////
-User::~User() = default;
-
-Bool User::Save(const UserPublicKey password) noexcept {
- if (!password || *password == 0) return No;
-
- this->mUserFNV = Detail::user_fnv_generator(password, this);
-
- kout << "User::Save: Saved password successfully...\r";
-
- return Yes;
-}
-
-Bool User::Login(const UserPublicKey password) noexcept {
- if (!password || !*password) return No;
-
- // now check if the password matches.
- if (this->mUserFNV == Detail::user_fnv_generator(password, this)) {
- kout << "User::Login: Password matches.\r";
- return Yes;
- }
-
- kout << "User::Login: Password doesn't match.\r";
- return No;
-}
-
-Bool User::operator==(const User& lhs) {
- return lhs.mUserRing == this->mUserRing;
-}
-
-Bool User::operator!=(const User& lhs) {
- return lhs.mUserRing != this->mUserRing;
-}
-
-////////////////////////////////////////////////////////////
-/// @brief Returns the user's name.
-////////////////////////////////////////////////////////////
-
-Char* User::Name() noexcept {
- return this->mUserName;
-}
-
-////////////////////////////////////////////////////////////
-/// @brief Returns the user's ring.
-/// @return The king of ring the user is attached to.
-////////////////////////////////////////////////////////////
-
-const UserRingKind& User::Ring() noexcept {
- return this->mUserRing;
-}
-
-Bool User::IsStdUser() noexcept {
- return this->Ring() == UserRingKind::kRingStdUser;
-}
-
-Bool User::IsSuperUser() noexcept {
- return this->Ring() == UserRingKind::kRingSuperUser;
-}
-} // namespace Kernel