Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
e1cc1452
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
e1cc1452
编写于
6月 23, 2022
作者:
O
openharmony_ci
提交者:
Gitee
6月 23, 2022
浏览文件
操作
浏览文件
下载
差异文件
!4818 【轻量级 PR】:【OpenHarmony开源贡献者计划2022】修改错误
Merge pull request !4818 from franck_lee/N/A
上级
e57cc68f
65e0399c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
16 deletion
+16
-16
zh-cn/device-dev/driver/driver-peripherals-user-auth-des.md
zh-cn/device-dev/driver/driver-peripherals-user-auth-des.md
+16
-16
未找到文件。
zh-cn/device-dev/driver/driver-peripherals-user-auth-des.md
浏览文件 @
e1cc1452
...
...
@@ -21,7 +21,7 @@
-
认证凭据模板
认证凭据模板在用户设置认证凭据时由认证服务产生并存储。
在认证时,读取模板信息并用和当次认证过程中产生的认证数据做对比,完成身份认证。每个模板有一个ID,用于索引模板信息文件
。
认证凭据模板在用户设置认证凭据时由认证服务产生并存储。
每个模板有一个ID,用于索引模板信息文件。在认证时,读取模板信息并用和当次认证过程中产生的认证数据做对比,完成身份认证
。
-
执行器
...
...
@@ -29,7 +29,7 @@
-
执行器角色
-
全功能执行器:执行器可独立处理
一次
凭据注册和身份认证请求,即可提供用户认证数据采集、处理、储存及比对能力。
-
全功能执行器:执行器可独立处理凭据注册和身份认证请求,即可提供用户认证数据采集、处理、储存及比对能力。
-
采集器:执行器提供用户认证时的数据采集能力,需要和认证器配合完成用户认证。
...
...
@@ -144,7 +144,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
1.
基于HDF驱动框架,按照驱动Driver Entry程序,完成User_auth驱动开发,主要由Bind、Init、Release、Dispatch函数接口实现,详细代码参见
[
user_auth_interface_driver.cpp
](
https://gitee.com/openharmony/drivers_peripheral/blob/master/user_auth/hdi_service/service/user_auth_interface_driver.cpp
)
文件。
```
c++
// 通过自定义的HdfUserAuthInterfaceHost对象包含
i
oService对象和真正的HDI Service实现IRemoteObject对象
// 通过自定义的HdfUserAuthInterfaceHost对象包含
I
oService对象和真正的HDI Service实现IRemoteObject对象
struct
HdfUserAuthInterfaceHost
{
struct
IDeviceIoService
ioService
;
OHOS
::
sptr
<
OHOS
::
IRemoteObject
>
stub
;
...
...
@@ -187,7 +187,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
auto
*
hdfUserAuthInterfaceHost
=
new
(
std
::
nothrow
)
HdfUserAuthInterfaceHost
;
if
(
hdfUserAuthInterfaceHost
==
nullptr
)
{
HDF_LOGE
(
"%{public}s: failed to create
create
HdfUserAuthInterfaceHost object"
,
__func__
);
HDF_LOGE
(
"%{public}s: failed to create HdfUserAuthInterfaceHost object"
,
__func__
);
return
HDF_FAILURE
;
}
...
...
@@ -197,7 +197,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
auto
serviceImpl
=
IUserAuthInterface
::
Get
(
true
);
if
(
serviceImpl
==
nullptr
)
{
HDF_LOGE
(
"%{public}s: failed to
get of
implement service"
,
__func__
);
HDF_LOGE
(
"%{public}s: failed to implement service"
,
__func__
);
return
HDF_FAILURE
;
}
...
...
@@ -271,7 +271,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
int32_t
ret
=
OpenEditSession
(
userId
,
&
challengeU64
);
challenge
.
resize
(
sizeof
(
uint64_t
));
if
(
memcpy_s
(
&
challenge
[
0
],
challenge
.
size
(),
&
challengeU64
,
sizeof
(
uint64_t
))
!=
EOK
)
{
IAM_LOGE
(
"
challengeU64 copy failed
"
);
IAM_LOGE
(
"
failed to copy challengeU64
"
);
return
RESULT_BAD_COPY
;
}
GlobalUnLock
();
...
...
@@ -310,18 +310,18 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
CoAuthSchedule
scheduleInfo
;
int32_t
ret
=
CheckEnrollPermission
(
checkParam
,
&
scheduleInfo
.
scheduleId
);
if
(
ret
!=
RESULT_SUCCESS
)
{
IAM_LOGE
(
"
check permission failed
"
);
IAM_LOGE
(
"
Failed to check permission
"
);
GlobalUnLock
();
return
ret
;
}
ret
=
GetCoAuthSchedule
(
&
scheduleInfo
);
if
(
ret
!=
RESULT_SUCCESS
)
{
IAM_LOGE
(
"
get schedule info failed
"
);
IAM_LOGE
(
"
Failed to get schedule info
"
);
GlobalUnLock
();
return
ret
;
}
if
(
!
CopyScheduleInfo
(
&
scheduleInfo
,
&
info
))
{
IAM_LOGE
(
"
copy schedule info failed
"
);
IAM_LOGE
(
"
Failed to copy schedule info
"
);
ret
=
RESULT_BAD_COPY
;
}
GlobalUnLock
();
...
...
@@ -356,7 +356,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
bool
isUpdate
;
int32_t
ret
=
GetIsUpdate
(
&
isUpdate
);
if
(
ret
!=
RESULT_SUCCESS
)
{
IAM_LOGE
(
"
get isUpdate failed
"
);
IAM_LOGE
(
"
Failed to get isUpdate
"
);
return
ret
;
}
if
(
isUpdate
)
{
...
...
@@ -397,7 +397,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
{
IAM_LOGI
(
"start"
);
if
(
param
.
challenge
.
size
()
!=
sizeof
(
uint64_t
))
{
IAM_LOGE
(
"
challenge copy failed
"
);
IAM_LOGE
(
"
Failed to copy challenge
"
);
return
RESULT_BAD_PARAM
;
}
GlobalLock
();
...
...
@@ -410,13 +410,13 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
solutionIn
.
authTrustLevel
=
param
.
authTrustLevel
;
if
(
memcpy_s
(
&
solutionIn
.
challenge
,
sizeof
(
uint64_t
),
&
param
.
challenge
[
0
],
param
.
challenge
.
size
())
!=
EOK
)
{
IAM_LOGE
(
"
challenge copy failed
"
);
IAM_LOGE
(
"
Failed to copy challenge
"
);
GlobalUnLock
();
return
RESULT_BAD_COPY
;
}
int32_t
ret
=
GenerateSolutionFunc
(
solutionIn
,
&
schedulesGet
,
&
scheduleIdNum
);
if
(
ret
!=
RESULT_SUCCESS
)
{
IAM_LOGE
(
"
generate solution failed
"
);
IAM_LOGE
(
"
Failed to generate solution
"
);
GlobalUnLock
();
return
ret
;
}
...
...
@@ -456,14 +456,14 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
UserAuthTokenHal
authTokenHal
;
info
.
result
=
RequestAuthResultFunc
(
contextId
,
scheduleResultBuffer
,
&
authTokenHal
);
if
(
info
.
result
!=
RESULT_SUCCESS
)
{
IAM_LOGE
(
"
execute func failed
"
);
IAM_LOGE
(
"
Failed to execute func
"
);
DestoryBuffer
(
scheduleResultBuffer
);
GlobalUnLock
();
return
info
.
result
;
}
info
.
token
.
resize
(
sizeof
(
UserAuthTokenHal
));
if
(
memcpy_s
(
&
info
.
token
[
0
],
info
.
token
.
size
(),
&
authTokenHal
,
sizeof
(
authTokenHal
))
!=
EOK
)
{
IAM_LOGE
(
"
copy authToken failed
"
);
IAM_LOGE
(
"
Failed to copy authToken
"
);
DestoryBuffer
(
scheduleResultBuffer
);
GlobalUnLock
();
return
RESULT_BAD_COPY
;
...
...
@@ -481,7 +481,7 @@ User_auth驱动的主要工作是为User_auth服务提供稳定的用户凭据
uint32_t
scheduleIdNum
=
0
;
int32_t
ret
=
CancelContextFunc
(
contextId
,
nullptr
,
&
scheduleIdNum
);
if
(
ret
!=
RESULT_SUCCESS
)
{
IAM_LOGE
(
"
execute func failed
"
);
IAM_LOGE
(
"
Failed to execute func
"
);
GlobalUnLock
();
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录