diff --git a/Tasking/Security.cpp b/Tasking/Security.cpp index 22c280b..4f5a1c6 100644 --- a/Tasking/Security.cpp +++ b/Tasking/Security.cpp @@ -1,18 +1,44 @@ #include + +#include +#include #include namespace Tasking { + struct TokenData + { + Token token; + enum TokenTrustLevel TrustLevel; + uint64_t OwnerID; + bool Process; + }; + + Vector Tokens; + Token Security::CreateToken() { - fixme("CreateToken->0"); - return 0; + uint64_t ret = Random::rand64(); + Tokens.push_back({ret, UnknownTrustLevel, 0, false}); + debug("Created token %#lx", ret); + return ret; } bool Security::TrustToken(Token token, TokenTrustLevel TrustLevel) { - fixme("TrustToken->false"); + enum TokenTrustLevel Level = static_cast(TrustLevel); + + foreach (auto var in Tokens) + { + if (var.token == token) + { + var.TrustLevel = Level; + debug("Trusted token %#lx", token); + return true; + } + } + debug("Failed to trust token %#lx", token); return false; } @@ -35,5 +61,8 @@ namespace Tasking Security::~Security() { + trace("Destroying Tasking Security"); + for (uint64_t i = 0; i < Tokens.size(); i++) + Tokens.remove(i); } }