您的位置:首页 > 其它

UKEY通信各个应用的流程介绍--初始化设备

2015-03-24 13:18 375 查看
初始化设备通俗的说是设备连接好后,打开相关应用,然后把此应用删除,在重新创建应用,并通过在应用中创建文件检查是否初始化成功。

在这里先详细介绍下UKEY代码中的层次结构

                                                                                     


此部分的最初进入程序流程的部分应用程序就是我们所说的应用流程的实现步骤,由应用接口向其提供接口函数。例如在设备认证环节中,应用程序就是获取随机数,加密随机数,然后传入认证密钥,进行设备认证整个流程的实现;而应用接口就是提供这些函数,也就是说获取随机数是如何实现的,加密随机数的实现等;而对设备驱动的理解,不要想象成windows下的纯驱动R0层开发,这是个误区,此处的驱动就是USB相关驱动,利用微软提供的API接口寻找设备,连接设备,具体的实现是微软通过R0层实现的,不用我们参与R0层的编写,也就是前面介绍的枚举设备,连接设备等函数功能

接下来介绍的是UKEY的设备应用结构



应用中的容器密钥结构如下图



下面就是设备初始化流程

1:枚举设备,连接设备

2:打开进行初始化的应用ULONG  DEVAPI  SKF_OpenApplication(DEVHANDLE  hDev,  LPSTR  szAppName, HAPPLICATION *phApplication)

功能描述  打开指定的应用。
参数  hDev  [IN]  连接设备时返回的设备句柄。
  szAppName  [IN]  应用名称。
  phApplication  [OUT]  应用的句柄。

打开成功后,说明此应用存在,则删除应用,然后重新创建新的应用

3:删除应用ULONG DEVAPI SKF_DeleteApplication(DEVHANDLE hDev, LPSTR szAppName)

功能描述  删除指定的应用。
参数  hDev  [IN]  连接设备时返回的设备句柄。
  szAppName  [IN]  应用名称。(因为设备中含有多个应用,通过应用名称区分)

4:创建应用ULONG  DEVAPI  SKF_CreateApplication(DEVHANDLE  hDev,  LPSTR  szAppName, 
LPSTR  szAdminPin,  DWORD  dwAdminPinRetryCount,LPSTR  szUserPin,  DWORD 
dwUserPinRetryCount,DWORD dwCreateFileRights, HAPPLICATION *phApplication)
功能描述  创建一个应用。 
参数  hDev  [IN]  连接设备时返回的设备句柄。
  szAppName  [IN]  应用名称。
  szAdminPin  [IN]  管理员 PIN。
  dwAdminPinRetryCount  [IN]  管理员 PIN 最大重试次数。
  szUserPin  [IN]  用户 PIN。
  dwUserPinRetryCount  [IN]  用户 PIN 最大重试次数。
  dwCreateFileRights  [IN]  在该应用下创建文件和容器的权限,参见 6.4.12 权限类型。为各种权限的或值。
  phApplication  [OUT]  应用的句柄。

5:在创建的应用中创建文件ULONG  DEVAPI  SKF_CreateFile  (HAPPLICATION  hApplication,  LPSTR  szFileName, 
ULONG ulFileSize, ULONG ulReadRights,ULONG ulWriteRights)
功能描述  创建文件时要指定文件的名称,大小,以及文件的读写权限。
参数  hApplication  [IN]  应用句柄。
  szFileName  [IN]  文件名称,长度不得大于 32 个字节。
  ulFileSize  [IN]  文件大小。
  ulReadRights  [IN]  文件读权限。可为各种权限的或值。
  ulWriteRights  [IN]  文件写权限。可为各种权限的或值。

创建文件成功则设备初始化成功,强调注意应用句柄的含义。应用句柄中应该包括应用ID,设备句柄最基础的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UKEY设备初始化