指纹功能适配文档

2023-10-27

指纹功能适配文档

本文档主要介绍第三方设备厂商如何将指纹功能集成到系统中,另外也简单描述了系统上的用户认证流程。
指纹功能的集成需要实现系统定义的指纹接口规范,然后将实现的接口程序安装到系统中,并提供规范中定义的配置文件,就可在重启后使用系统的指纹功能了。
在介绍适配步骤之前,先介绍下系统的认证流程。

认证流程

系统上对用户认证提供了一套统一的接口,这个认证接口负责启用具体的认证方式,如启用密码认证、指纹认证等。
认证的结果通过 DBus Signal 发出, DBus Signal 没有具体的目标,可以认为是广播的方式,即所有监听了这个 Signal 的程序都会收到。
指纹录入后由设置自行储存,推荐放在 /usr/share/deepin-authentication/modes/设备标志/userid/。

流程图如下:

在这里插入图片描述


流程说明如下:

  • 开启用户验证

    这是指用户或者应用发起验证请求,如执行 sudo ls 就会发起验证请求

  • PAM Module

    系统中实现的认证接口的 pam 模块,验证请求调用这个模块来做具体的验证功能。在这个 pam 模块中会调用系统的认证接口,并等待认证信号。模块根据认证信号中的信息来判断认证是否成功。

  • 认证接口

    系统的认证接口会发起具体的认证方式,默认会发起 密码认证指纹认证 ,认证方式都是并行执行的。
    每种认证方式都会将认证的结果告知系统的认证接口,系统接口收到认证成功或认证失败的回应后会立即终止认证流程,并将结果返回。

    所以认证方式中只要又一种方式成功或者失败都会终止认证流程。

指纹认证流程

适配的指纹接口主要在指纹认证流程内被调用,系统的认证接口中包含一个指纹认证代理(FingerprintProxy),由 FingerprintProxy 调用适配的指纹接口。

FingerprintProxy 设计时考虑了多指纹设备的情况,当存在多个指纹设备接口时,需要先设置用哪个作为默认设备(初始时使用发现的第一个设备作为默认设备)。
FingerprintProxy 的接口是以 DBus 的方式提供的,是在 System Bus 中,默认设备相关的接口信息如下:

  • Service:

    com.deepin.daemon.Authenticate

  • Path:

    /com/deepin/daemon/Authenticate/Fingerprint

  • Interface:

    com.deepin.daemon.Authenticate.Fingerprint

  • *SetDefaultDevice(char device)

    • Description

      设置默认的指纹设备,若失败则返回 dbus error

    • Arguments

      • device

        (输入参数)

        设备名称

  • *char DefaultDevice

    这是一个只读属性,知名当前的默认指纹设备

    默认的指纹设备,如果没有手动设置,则为发现的第一个指纹设备

    默认设备可以从控制中心中更改,用户可自由选择。


了解了上面的信息后,下面开始介绍指纹认证的流程。

流程图如下:

在这里插入图片描述

流程说明如下:

  • 开启指纹认证

    由系统认证接口开启

  • 系统指纹代理

    此代理接口对接厂商适配的指纹接口,调用默认设备的接口完成请求的操作。适配的指纹接口通过配置文件告诉 FingerprintProxy 适配接口的相关 DBus 服务信息。

    此次流程中就会调用设备接口中 DBus 上提供的 Verify 方法进行指纹验证,然后等待 VerifyStatus 的信号来返回验证的结果。



指纹功能适配

指纹功能适配主要包括 配置文件接口实现 两部分,适配步骤如下:

  1. 确定指纹接口的 DBus 服务名称

    DBus 服务的名称包括以下内容:

    • Service

      指纹接口的 DBus Service Name ,在 DBus Bus 中应是唯一的。

    • ObjectPath

      指纹接口的 DBus Object ,指明服务所在的 path

    • Interface

      指纹接口的 DBus Interface ,指明服务所在的 interfaceinterface 中应包括指纹接口规范中的所有接口。

  2. 提供接口配置文件

配置文件里需要描述接口的 DBus 信息,配置文件应安装到 /usr/share/deepin-authentication/interfaces/ 目录中。
系统的认证接口在启动时会扫面 /usr/share/deepin-authentication/interfaces/ 目录,加载并检查配置文件中定义的接口。

配置文件的格式如下:

  #+BEGIN_SRC json
  {
    "service": "",
    "path": "",
    "interface": "",
    "type": 1,
  }
  #+END_SRC

各字段含义如下:

  • service

    DBus 接口的 service name

  • path

    DBus 接口的 object path name

  • interface

    DBus 接口的 interface name

  • type

    接口类型, 1 表示指纹接口

  1. 实现接口规范中的接口

    指纹接口规范中定义了适配时应该实现的接口,通过这些接口将指纹功能集成到系统中。 指纹接口规范后文中将会介绍。

  2. 提供 DBus 服务的配置文件

    指纹功能需要访问硬件,所以一般是一个在 System Bus 上的服务。 System Bus 服务需要提供 .service.conf 文件,说明如下:

    • .service 文件

      .service 文件中会指明调用 service name 时应该执行的程序,格式如下:

      #+BEGIN_SRC ini
      [D-BUS Service]
      Name=<service name>
      Exec=<app filepath>
      User=root
      #+END_SRC
      

      字段描述如下:

      • Name

        DBus Service Name

      • Exec

        程序的执行路径

      • User

        表明程序使用什么用户启动,默认为 root

    .service 应该安装到 /usr/share/dbus-1/system-services/ 目录中

  • .conf 文件

    .conf 文件中会名接口的访问权限,内容如下(以 com.deepin.Exampleservice nameinterface name ):

    #+BEGIN_SRC xml
    <?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
    
    <!DOCTYPE busconfig PUBLIC
     "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
     "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
    <busconfig>
    
    
      <!-- Only root can own the service -->
      <policy user="root">
        <allow own="com.deepin.Example"/>
      </policy>
    
      <!-- Allow anyone to invoke methods on the interfaces -->
      <policy context="default">
        <allow send_destination="com.deepin.Example" />
    
        <allow send_destination="com.deepin.Example"
               send_interface="com.deepin.Example"/>
        <allow send_destination="com.deepin.Example"
               send_interface="org.freedesktop.DBus.Properties"/>
        <allow send_destination="com.deepin.Example"
               send_interface="org.freedesktop.DBus.Introspectable"/>
    
      </policy>
    
    </busconfig>
    #+END_SRC
    

    .conf 文件安装到 /usr/share/dbus-1/system.d/ 目录中

  1. 测试

    将指纹接口配置文件、指纹接口程序、 .service.conf 文件安装到对应的目录中,然后重启进行测试。

    测试步骤如下:

    1. 查看控制中心的账户模块中是否有添加指纹的选项

      若没有则表明指纹接口集成失败,请确认各个配置文件是否正确和指纹接口规范有没有完全实现。

    2. 点击添加指纹按钮

      添加一个指纹来测试指纹录入的功能是否正常

    3. 锁屏验证指纹登录

      用于验证指纹解锁是否正常

    4. 删除添加的指纹

      测试指纹模板的管理功能是否正常



指纹接口规范

下面将按照 Methods, Properties, Signals 一一介绍:

Methods
  • *Claim(char id, bool claimed)

    • Description

      独占指纹设备,失败则返回 dbus error 。指纹设备同时只允许做一种操作,不支持并行,所以需要在使用设备之前独占设备,如果成功就意味着设备可用,才能继续下面的操作。

    • Arguments

      • id

        (输入参数)

        用户的唯一 id ,由系统生成

      • claimed

        (输入参数)

        表示是否独占设备, true 表示独占, false 表示释放


  • **Enroll(char id, char finger)

    • Description

      指纹采集接口,调用成功后进入采集流程,失败则返回 dbus error 。采集过程中通过信号 EnrollStatus 返回每次采集的状态。只能在独占设备之后调用它。

    • Arguments

      • id

        (输入参数)

        此次采集的手指所属用户的唯一 id,由系统生成

      • finger

        (输入参数)

        此次采集的手指名


  • StopEnroll()

    • Description

      结束当前采集流程,失败则返回 dbus error, 正常结束或中途取消都需要调用此方法。只能在独占设备后调用它。


  • *Verify(char finger)

    • Description

      指纹验证接口,调用成功后进入验证流程,失败则返回 dbus error 。验证过程中通过信号 VerifyStatus 返回验证的结果。只能在独占设备后调用它。

    • Arguments

      • finger

        (输入参数)

        此次采集的手指名,可为空


  • StopVerify()

    • Description

      结束当前的验证流程,失败则返回 dbus error ,正常结束或中途取消都需要调用此方法。只能在独占设备后调用它。


  • **DeleteFinger(char id, char finger)

    • Description

      删除指定 finger 的模板数据,删除失败则返回 dbus error

      idfinger 一起确定指纹模板的存储位置

    • Arguments

      • id

        (输入参数)

        用户的唯一 id ,由系统生成

      • finger

        (输入参数)

        需要删除的手指名


  • *DeleteAllFingers(char id)

    • Description

      删除所以的模板数据,删除失败则返回 dbus error

    • Arguments

      • id

        (输入参数)

        用户的唯一 id ,由系统生成


  • **ListFingers(char *id) (char fingers)

    • Description

      列出已录入的所有手指名,失败则返回 dbus error

    • Arguments

      • id

        (输入参数)

        用户的唯一 id ,由系统生成

      • fingers

        (输出参数)

        已录入的所有手指名


  • **RenameFinger(char *id, char finger, char newName)

    • Description

      重命名指定 fingernewName,失败则返回 dbus error

    • Arguments

      • id

        (输入参数)

        用户的唯一 id ,由系统生成

      • finger

        (输入参数)

        需要重命名的手指名

      • newName

        (输入参数)

        新名称

Properties
  • *char Name

    (只读)

    设备名称

  • int32 State

    (只读)

    设备状态, 可为以下位的组合:

    #+BEGIN_SRC c
    enum {
        DeviceStateNormal = 1 << 0,            // 设备正常可用
        DeviceStateClaimed = 1 << 1,           // 设备被独占
    };
    #+END_SRC
    

    最低位表示设备是否正常可用,没设置表示设备不可用,设置了表示设备正常可用;更高 1 位表示设备是否被独占了,没设置表示没被独占,即是空闲中,设置了表示被独占。

  • int32 Type

    (只读)

    设备类型,可为以下值:

    #+BEGIN_SRC c
    enum {
        DeviceTypeUnknown = 0,    // 未知类型
        DeviceTypeScanning,       // 扫描式指纹设备
        DeviceTypeTouch,          // 触摸式指纹设备
    };
    #+END_SRC
    
  • int32 Capability

    (只读)

    设备特性,可为以下值:

    #+BEGIN_SRC c
    enum {
    
        DeviceCapAutologin = 1,    // 支持指纹一键自动登录
    
    };
    #+END_SRC
    
Signals
  • **EnrollStatus(char id, int32 code, char msg)

    • Description

      采集流程中的信号,反馈采集的状态,包括采集进度、采集中的错误等信息

    • Arguments

      • id

        用户的唯一 id ,由系统生成

      • code

        状态码

      • msg

        详细的状态描述,录入成功后此字段应是录入的进度

    状态码的详细说明如下:

    • code 0

      Completed 成功完成,之后应该结束录入

      msg 为空

    • code 1

      Failed 失败,之后应该结束录入。

      msg 为空或 JSON 字符串,如果为 JSON ,则有 subcode 字段表示子代码:

      • subcode 1

      unknown-error 未知错误

      • subcode 2

        重复模板

      • subcode 3

        录入中断

      • subcode 4

        data-full 数据满了,不能再录制更多指纹

    • code 2

      StagePassed 阶段通过, 之后继续录入

      msg 为空或 JSON 字符串,如果是 JSON ,则有 progress 字段表示数字进度,取值范围 0~100 的整数:

    • code 3

      Retry 重试,之后继续录入

      msg 为空或 JSON 字符串,如果是 JSON ,则有 subcode 字段表示子代码:

      • subcode 1

        接触时间过短

      • subcode 2

        图形不可用

      • subcode 3

        两次触摸的指纹信息重复率过高

      • subcode 4

        当前指纹已经存在,请换其他的手指

      • subcode 5

        swipe-too-short 滑动太短

      • subcode 6

        finger-not-centered 手指不在中间

      • subcode 7

        remove-and-retry 拿开手指再重新扫描

    • code 4

      Disconnected 与设备失联,之后应该不对设备进行任何操作

      msg 为空


  • **VerifyStatus(char id, int32 code, char msg)

    • Description

      验证流程中的信号,反馈验证的状态

    • Arguments

      • id

        用户的唯一 id ,由系统生成

      • code

        状态码

      • msg

        详细的状态描述

    状态码的详细说明如下:

    • code 0

      Match 匹配, 之后结束认证

      msg 为空

    • code 1

      NoMatch 不匹配,之后结束认证

      msg 为空

    • code 2

      Error 失败,之后结束认证

      msg 为空或 JSON 字符串,如果是 JSON ,则有 subcode 字段表示子代码:

      • subcode 1

        unknown-error 未知错误

      • subcode 2

        unavailable 指纹设备不可用

    • code 3

      Retry 重试,之后继续认证

      msg 为空或 JSON 字符串,如果是 JSON ,则有 subcode 字段表示子代码:

      • subcode 1

        swipe-too-short 滑动太短

      • subcode 2

        finger-not-centered 手指不在中间

      • subcode 3

        remove-and-retry 拿开手指再重新扫描

      • subcode 4

        touch-too-short 手指按压时间过短

      • subcode 5

        quality-bad 图像质量差

    • code 4

      Disconnected 与设备失联,之后不要对设备进行任何操作

      msg 为空


  • *Touch(char id, bool pressed)

    (可暂不实现)

    • Description

      手指是否接触指纹设备,接触和离开时都需要发送信号

    • Arguments

      • id

        用户的唯一 id ,由系统生成

      • pressed

        手指是否接触指纹设备

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指纹功能适配文档 的相关文章

  • Arch linux安装deepin-wine和微信(wechat)

    一 保证有国内的镜像源 xff0c 不然下载很慢 xff0c 没有国内包的镜像源 xff0c 则软件列表会少很多国内的软件 如果没有国内镜像源 xff0c 请修改镜像源 sudo vim etc pacman d mirrorlist s
  • 华为Taishan服务器安装UOS操作系统

    今天2020 12 18 折腾了一遍华为Taishan服务器重装UOS20操作系统 xff0c 没经验 xff0c 一堆问题 xff0c 逐个排查解决的 做个记录 xff0c 以免下次再坑 1 光驱引导 最开始 xff0c 选择光驱引导安装
  • deepin驱动精灵_linux驱动精灵

    omaidb 64 omaidb Lenovo G490 lspci 00 00 0 Host bridge Intel Corporation 3rd Gen Core processor DRAM Controller rev 09 0
  • 一起来学linux:PAM模块

    在Linux 中执行有些程序时 xff0c 这些程序在执行前首先要对启动它的用户进行认证 xff0c 符合一定的要求之后才允许执行 xff0c 例如 login su 等 在Linux 中进行身份或是状态的验证程序是由 PAM 来进行的 x
  • Ubuntu18.04与deepin+nvidia-docker的构建与踩坑+puppeteer在docker中的使用

    写在前面的废话 首先说什么docker xff0c 之前我啥也不知道 xff0c 大概了解 xff0c 就是一个集成环境 xff0c 然后可以带着这个跨越各种平台什么的 就这几天的使用来看 xff0c 差不多是的吧 xff0c 在使用上 x
  • UOS 安装 vscode

    商店安装版同官网冲突 官网下载缓慢 Selecting previously unselected package code An error occurred while applying changes An error occurre
  • deepin-15.11版本 深度系统如何关闭桌面界面 (重启后生效)

    deepin 15 11版本 关掉桌面需要执行 sudo systemctl disable lightdm 开启桌面需要执行 sudo service lightdm start 命令执行后 如果不报错 重启就会生效 额外说一句 deep
  • linux查看可升级列表,UOS在2020年3月9日更新:用apt list --upgradable查看升级的软件包...

    使用UOS操作系统的用户注意了 xff0c 在2020年3月9日UOS推送了更新 xff0c 如果你还没有更新 xff0c 建议更新一下 如果没有收到更新信息 xff0c 多数情况下是你的更新设置限制了 有用户运行apt list upgr
  • Deepin中使用Windows字体

    本方案适用与Windows与Deepin 双系统的用户 xff08 以及所有Win与Linux双系统 xff09 只需要把Windows下 Windows Fonts的文件夹 复制到 Deepin下 usr share fonts 额外项
  • 在Linux Deepin OS 下编译ParaView的步骤

    首先编译OPEN MPI git clone https github com open mpi ompi git cd ompi git submodule update init recursive sudo apt get insta
  • 【Linux】安装x11vnc和xrdp,使用windows远程deepin

    一 环境准备 1 已安装deepin 虚拟机或物理机 xff0c 安装教程自行查询 xff0c 很简单 xff0c 此处用的开源版deepin20 1做测试 目前已更新到20 2 2 启用root账号 xff0c 终端执行 xff1a su
  • Ubuntu下的截图软件Deepin Scrot

    lt style type 61 34 text css 34 gt lt 64 page margin 0 79in p margin bottom 0 08in gt lt style gt Ubuntu12 04 自带的截图软件 sc
  • Deepin 20.1 安装nvidia显卡驱动 爬坑

    前言 之前用的是ubuntu系统 装得也是双系统 然后最近看到了deepin 系统 然后就装了下 在装nvidia显卡时 遇到了重启蓝屏的问题 在反复重装N多次系统同时查阅N多次网友资料时 总结出以下几点 当然如果你想安装的话直接滑下方 不
  • Deepin 手动分区记录

    起初安装Deepin 采用手动分区 总是安装失败 经过以下分区就成功安装了 efi 分区 默认300m boot 分区 默认 512m 交换分区 swap 等于你的内存大小 分区 15G home 分区剩余全部容量 home可以设置也可以不
  • 双系统卸载Linux,重装Deepin

    卸载掉之前的Linux系统 参考资料 https www bilibili com video av209430195 下载diskgenius https www diskgenius cn download php 删除Linux分区
  • deepin操作系统无法打开蓝牙

    自己用的deepin系统无法使用蓝牙传送图片 发现系统里面找不到这个功能 可以使用命令安装蓝牙功能 sudo apt install bluetooth blueman blueman assistant 安装以后 很方便手机传送文件
  • PAM机制

    一 PAM简介 Linux PAM linux可插入认证模块 是一套共享库 使本地系统管理员可以随意选择程序的认证方式 换句话说 不用 重新编写和 重新编译一个包含PAM功能的应用程序 就可以改变它使用的认证机制 这种方式下 就算升级本地认
  • psql: FATAL: 用户 PAM 身份验证失败

    PostgreSQL 9 2 4 我无法再使用过去工作过的用户登录 我假设配置有问题 因此 为了进行测试 我创建了一个测试用户角色 testing 其选项与相关角色相同 作为仍然可以登录的 postgres 用户 CREATE ROLE t
  • PHP/PAM更改用户密码?

    是否有任何使用 PHP 更改 Linux 用户密码的工作包 我尝试过使用 PECL PAM 但在尝试更改密码时出现错误 Edit PHP代码 echo pam chpass username password new pass error
  • 如何在非交互模式下配置 pam-auth-update?

    I wanted to enable PAM module packages in non interactive mode Running pam auth update will prompt a wizard to enable th

随机推荐

  • elementui 更换主题色

    定义CSS变量 由var 函数来获取值 设定值 root background color FF0000 获取值 div background color var background color JS获取变量 const element
  • c语言进行菜单制作

    include stdlib h include
  • Lecture11: (增强)拉格朗日松弛技术

    目录 1 理论背景 2 数学分析 3 LR计算案例 3 1 分解 3 2 算法 4 ALR计算案例 4 1 主要思想 4 2 ADMM 当你的问题中包含复杂约束时 你可能需要该方法 本节目标 阐述拉格朗日松弛 增强拉格朗日松弛和交替方向乘子
  • Ubuntu22.04安装Git及配置

    Git安装配置 apt get install git 安装Git git version 安装成功后显示版本 git version 2 34 1 git config global user name name 配置用户名 git co
  • Scrapy之CsvItemExporter生成的CSV文件乱码解决

    环境信息 Python 3 6 5 Scrapy 2 2 导出文件逻辑 self file open Users chenjunfeng02 Downloads enrolldata csv wb self exporter CsvItem
  • 【电脑蓝屏】—— inaccessible boot device

    文章目录 一 问题描述 二 问题出现场景及原因分析 1 重装系统后出现该蓝屏情况 三 问题解决方法 附件 一 问题描述 蓝屏提示 inaccessible boot device 二 问题出现场景及原因分析 1 重装系统后出现该蓝屏情况 设
  • 【matlab深度学习工具箱】classificationLayer参数详解

    classificationLayer 文章目录 classificationLayer 语法 描述 例子 创建分类图层 创建加权分类图层 输入参数 名称 值参数 Name 图层名称 默认 字符向量 字符串标量 ClassWeights 加
  • 多元回归预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元回归预测 Matlab基于粒子群算法 PSO 优化径向基神经网络 PSO RBF 的数据回归预测 多变量输入模 评价指标包括 MAE RMSE和R2等 代码质量极高
  • 眼底图像血管分割学习笔记

    一 图像处理 训练集的图片格式为tif 其中相应的分割标签格式 为gif 一开始想着这些图片是不是都要先转换成 jpg或者 png 在查阅了一些资料后其实还是不太清楚 然后在看别人的代码时 发现没有处理 所以就先这样弄着 出现的问题 cla
  • Centos7 上的sqlite3安装及升级

    一 wget升级 yum install y wget 二 sqlite3安装 sudo yum install sqlite devel 查看sqlite3的版本 sqlite3 version 三 sqlite3升级 下载源码 wget
  • 试试这两个方法,做视频二次剪辑并不难,新手一天可以收入200

    很多新手看到别人每天做短视频一个月有过万 几万的收益 看到别人能赚钱 觉得自己可能赚不到这么多 赚个7 8千应该没问题 于是开始自己学着也做起了短视频自媒体 每天埋头苦干 但每天的收益却很低 只有几块 几十 有的甚至更少 跟自己想象的完全不
  • 部署Promethuse监控Hadoop节点

    部署Promethuse监控Hadoop节点 目标 安装 将hadoop的jmx信息采集到指定端口 配置prometheus 其他说明 目标 Hadoop本身是对相当数量的指标 metrics 进行实时监控的 但是Hadoop本身并不提供方
  • Java多线程详解及示例

    Java多线程详解 摘要 本文将深入探讨Java多线程编程的重要性和使用方法 介绍多线程概念 讨论多线程的优势 并提供实际示例 此外 还将探讨多线程编程中的常见问题以及如何避免这些问题 通过本文 您将获得对Java多线程编程的全面理解和实践
  • html5 游戏 动画设计,HTML5 Canvas 动画实例

    原标题 HTML5 Canvas 动画实例 在开发在线游戏时 绘制动画是非常重要的 本节介绍一个使用 Canvas API 实现的动画实例 游戏人物的跑步动画 动画的概念及原理 1 动画 动画是通过一幅幅静止的 内容不同的画面 即帧 快速播
  • 【六祎-JS特效】页面JS特效背景

    JS代码
  • Python3中strip()、lstrip()、rstrip()用法详解

    Python中有三个去除头尾字符 空白符的函数 它们依次为 strip 用来去除头尾字符 空白符 包括 n r t 即 换行 回车 制表符 空格 lstrip 用来去除开头字符 空白符 包括 n r t 即 换行 回车 制表符 空格 rst
  • 流式计算简介

    1 数据的时效性 日常工作中 我们一般会先把数据存储在一张表中 然后对这张表的数据进行加工 分析 那这里是先存储在表中 那就会涉及到时效性这个概念 如果我们处理以年 月为单位的级别的数据处理 进行统计分析 个性化推荐 那么数据的的最新日期离
  • Docker容器学习笔记

    目录 一 初始Docker 1 1Docker的概念 1 2Docker的安装 1 3Docker的架构 1 4Docker配置镜像加速器 二 Docker命令 2 1服务相关的命令 2 2镜像相关命令 2 3容器相关命令 三 Docker
  • 小程序实现搜索历史记录,去重搜索字段以及限制展示字段数量

    使用微信小程序实现搜索历史记录 去重搜索字段 限制字段数量以及点击重新搜索功能 对应界面
  • 指纹功能适配文档

    指纹功能适配文档 本文档主要介绍第三方设备厂商如何将指纹功能集成到系统中 另外也简单描述了系统上的用户认证流程 指纹功能的集成需要实现系统定义的指纹接口规范 然后将实现的接口程序安装到系统中 并提供规范中定义的配置文件 就可在重启后使用系统