refactor: replace throne tracker with ksud token

Co-authored-by: Ylarod <me@ylarod.cn>
This commit is contained in:
ShirkNeko
2025-10-24 11:52:07 +08:00
parent 6a1e1d788b
commit aa2cbbf9cd
15 changed files with 159 additions and 2063 deletions

View File

@@ -4,27 +4,56 @@
#include <linux/cred.h>
#include <linux/types.h>
#define KSU_INVALID_PID -1
#define KSU_INVALID_UID -1
extern uid_t ksu_manager_uid; // DO NOT DIRECT USE
// Daemon (ksud) - identified by PID + token
extern pid_t ksu_daemon_pid;
extern char ksu_daemon_token[65];
extern bool ksu_is_any_manager(uid_t uid);
extern void ksu_add_manager(uid_t uid, int signature_index);
extern void ksu_remove_manager(uid_t uid);
extern int ksu_get_manager_signature_index(uid_t uid);
static inline bool ksu_is_daemon_pid_valid(void)
{
return ksu_daemon_pid != KSU_INVALID_PID;
}
static inline bool ksu_is_manager_uid_valid()
static inline bool is_daemon(void)
{
return unlikely(ksu_daemon_pid == current->pid);
}
static inline pid_t ksu_get_daemon_pid(void)
{
return ksu_daemon_pid;
}
static inline void ksu_set_daemon_pid(pid_t pid)
{
ksu_daemon_pid = pid;
}
static inline void ksu_invalidate_daemon_pid(void)
{
ksu_daemon_pid = KSU_INVALID_PID;
}
void ksu_generate_daemon_token(void);
const char* ksu_get_daemon_token(void);
bool ksu_verify_daemon_token(const char *token);
// Manager (app) - identified by UID
extern uid_t ksu_manager_uid;
static inline bool ksu_is_manager_uid_valid(void)
{
return ksu_manager_uid != KSU_INVALID_UID;
}
static inline bool is_manager()
static inline bool is_manager(void)
{
return unlikely(ksu_is_any_manager(current_uid().val) ||
(ksu_manager_uid != KSU_INVALID_UID && ksu_manager_uid == current_uid().val));
return unlikely(ksu_manager_uid == current_uid().val);
}
static inline uid_t ksu_get_manager_uid()
static inline uid_t ksu_get_manager_uid(void)
{
return ksu_manager_uid;
}
@@ -34,7 +63,7 @@ static inline void ksu_set_manager_uid(uid_t uid)
ksu_manager_uid = uid;
}
static inline void ksu_invalidate_manager_uid()
static inline void ksu_invalidate_manager_uid(void)
{
ksu_manager_uid = KSU_INVALID_UID;
}