From 9ab6b61b69f0f20b8506604d467ae580b19bfd46 Mon Sep 17 00:00:00 2001 From: huadongqin Date: Tue, 11 Jan 2022 03:53:24 +0000 Subject: [PATCH 1/6] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20token=5Fsetptoc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interfaces/innerkits/token_setptoc/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 interfaces/innerkits/token_setptoc/.keep diff --git a/interfaces/innerkits/token_setptoc/.keep b/interfaces/innerkits/token_setptoc/.keep new file mode 100644 index 000000000..e69de29bb -- Gitee From c82fae378dfd147fcf645e86b0cad370e32d8c19 Mon Sep 17 00:00:00 2001 From: huadongqin Date: Tue, 11 Jan 2022 03:53:44 +0000 Subject: [PATCH 2/6] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20interfaces/in?= =?UTF-8?q?nerkits/token=5Fsetptoc=20=E4=B8=BA=20interfaces/innerkits/toke?= =?UTF-8?q?n=5Fsetproc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interfaces/innerkits/{token_setptoc => token_setproc}/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename interfaces/innerkits/{token_setptoc => token_setproc}/.keep (100%) diff --git a/interfaces/innerkits/token_setptoc/.keep b/interfaces/innerkits/token_setproc/.keep similarity index 100% rename from interfaces/innerkits/token_setptoc/.keep rename to interfaces/innerkits/token_setproc/.keep -- Gitee From 8183ec17c6b145871b0a98198bf40de804b119f6 Mon Sep 17 00:00:00 2001 From: huadongqin Date: Tue, 11 Jan 2022 03:54:23 +0000 Subject: [PATCH 3/6] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20include?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interfaces/innerkits/token_setproc/include/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 interfaces/innerkits/token_setproc/include/.keep diff --git a/interfaces/innerkits/token_setproc/include/.keep b/interfaces/innerkits/token_setproc/include/.keep new file mode 100644 index 000000000..e69de29bb -- Gitee From fc4078eef88de8ac5f772ecce3f3a70124eee91b Mon Sep 17 00:00:00 2001 From: huadongqin Date: Tue, 11 Jan 2022 03:54:36 +0000 Subject: [PATCH 4/6] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20src?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interfaces/innerkits/token_setproc/src/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 interfaces/innerkits/token_setproc/src/.keep diff --git a/interfaces/innerkits/token_setproc/src/.keep b/interfaces/innerkits/token_setproc/src/.keep new file mode 100644 index 000000000..e69de29bb -- Gitee From 5b29722ddb4ee2ce4730f5a298565c778ad1bbbc Mon Sep 17 00:00:00 2001 From: huadongqin Date: Tue, 11 Jan 2022 03:56:28 +0000 Subject: [PATCH 5/6] add accesstoken_setproc.h --- .../token_setproc/include/accesstoken_setproc.h | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 interfaces/innerkits/token_setproc/include/accesstoken_setproc.h diff --git a/interfaces/innerkits/token_setproc/include/accesstoken_setproc.h b/interfaces/innerkits/token_setproc/include/accesstoken_setproc.h new file mode 100644 index 000000000..de36455d6 --- /dev/null +++ b/interfaces/innerkits/token_setproc/include/accesstoken_setproc.h @@ -0,0 +1,10 @@ +#ifndef ACCESSTOKEN_OPERATION_H +#define ACCESSTOKEN_OPERATION_H +#include + +uint64_t GetSelfTokenID(); +int SetSelfTokenID(uint64_t tokenID); +uint64_t GetFirstCallerTokenID(); +int SetFirstCallerTokenID(uint64_t tokenID); + +#endif \ No newline at end of file -- Gitee From cc15cd6256d0c4a82549c220549ae10c42a51401 Mon Sep 17 00:00:00 2001 From: huadongqin Date: Tue, 11 Jan 2022 03:57:08 +0000 Subject: [PATCH 6/6] add accesstoken_setproc.c --- .../token_setproc/src/accesstoken_setproc.c | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 interfaces/innerkits/token_setproc/src/accesstoken_setproc.c diff --git a/interfaces/innerkits/token_setproc/src/accesstoken_setproc.c b/interfaces/innerkits/token_setproc/src/accesstoken_setproc.c new file mode 100644 index 000000000..900471ae2 --- /dev/null +++ b/interfaces/innerkits/token_setproc/src/accesstoken_setproc.c @@ -0,0 +1,100 @@ +#include +#include +#include +#include +#include + +#include "accesstoken_operation.h" + +#define ACCESS_TOKEN_ID_IOCTL_BASE 'A' + +enum { + GET_TOKEN_ID = 1, + SET_TOKEN_ID, + GET_FTOKEN_ID, + SET_FTOKEN_ID, + ACCESS_TOKENID_MAX_NR, +}; + +#define ACCESS_TOKENID_GET_TOKENID \ + _IOR(ACCESS_TOKEN_ID_IOCTL_BASE,GET_TOKEN_ID,unsigned long long) +#define ACCESS_TOKENID_SET_TOKENID \ + _IOW(ACCESS_TOKEN_ID_IOCTL_BASE,SET_TOKEN_ID,unsigned long long) +#define ACCESS_TOKENID_GET_FTOKENID\ + _IOR(ACCESS_TOKEN_ID_IOCTL_BASE,GET_FTOKEN_ID,unsigned long long) +#define ACCESS_TOKENID_SET_FTOKENID \ + _IOW(ACCESS_TOKEN_ID_IOCTL_BASE,SET_FTOKEN_ID,unsigned long long) + +#define ACCESS_TOKEN_OK 0 +#define ACCESS_TOKEN_ERROR -1 + +#define INVAL_TOKEN_ID 0x0 +#define TOKEN_ID_LOWMASK 0xffffffff + +#define TOKENID_DEVNODE "/dev/access_token_id" + +uint64_t GetSelfTokenID() +{ + uint64_t token = INVAL_TOKEN_ID; + int fd = open(TOKENID_DEVNODE,O_RDWR); + if (fd < 0) { + return INVAL_TOKEN_ID; + } + int ret =ioctl(fd,ACCESS_TOKENID_GET_TOKENID,&token); + if (ret) { + close(fd); + return INVAL_TOKEN_ID; + } + + close(fd); + return token; +} + +int SetSelfTokenID(uint64_t tokenID) +{ + int fd = open(TOKENID_DEVNODE,O_RDWR); + if (fd < 0) { + return ACCESS_TOKEN_ERROR; + } + int ret = ioctl(fd,ACCESS_TOKENID_SET_TOKENID,&tokenID); + if (ret) { + close(fd); + return ACCESS_TOKEN_ERROR; + } + + close(fd); + return ACCESS_TOKEN_OK; +} + +uint64_t GetFirstCallerTokenID() +{ + uint64_t token = INVAL_TOKEN_ID; + int fd = open(TOKENID_DEVNODE,O_RDWR); + if (fd < 0) { + return INVAL_TOKEN_ID; + } + int ret = ioctl(fd,ACCESS_TOKENID_GET_FTOKENID,&token); + if (ret) { + close(fd); + return INVAL_TOKEN_ID; + } + + close(fd); + return token; +} + +int SetFirstCallerTokenID(uint64_t tokenID) +{ + int fd = open(TOKENID_DEVNODE,O_RDWR); + if (fd < 0) { + return ACCESS_TOKEN_ERROR; + } + int ret = ioctl(fd,ACCESS_TOKENID_SET_FTOKENID,&tokenID); + if (ret) { + close(fd); + return ACCESS_TOKEN_ERROR; + } + + close(fd); + return ACCESS_TOKEN_OK; +} \ No newline at end of file -- Gitee