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代码中的层次结构
此部分的最初进入程序流程的部分应用程序就是我们所说的应用流程的实现步骤,由应用接口向其提供接口函数。例如在设备认证环节中,应用程序就是获取随机数,加密随机数,然后传入认证密钥,进行设备认证整个流程的实现;而应用接口就是提供这些函数,也就是说获取随机数是如何实现的,加密随机数的实现等;而对设备驱动的理解,不要想象成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通信各个应用的流程介绍--初始化设备
- UKEY通信各个应用的流程介绍--枚举设备
- UKEY通信各个应用的流程介绍--枚举设备
- UKEY通信各个应用的流程介绍--设备认证
- UKEY通信各个应用的流程介绍--设备认证
- UKEY通信各个应用的流程介绍--数据加解密
- UKEY通信各个应用的流程介绍--数据加解密
- UKEY通信各个应用的流程介绍--导入RSA加密密钥对
- UKEY通信各个应用的流程介绍--导入RSA加密密钥对
- UKEY通信各个应用的流程介绍--签名与验签
- UKEY通信各个应用的流程介绍--签名与验签
- UKEY通信各个应用的流程介绍--生成RSA签名密钥对
- UKEY通信各个应用的流程介绍--生成RSA签名密钥对
- 信息安全技术应用赛项设备介绍---神州数码
- P2P简单应用之通信协议介绍
- 例说linux内核与应用数据通信(三):读写内核设备驱动文件
- C++应用通信服务器:MYCP功能介绍
- 【Android开发经验】移动设备的“声波通信/验证”的实现——SinVoice开源项目介绍(三)
- 介绍Linux系统如何初始化和启动系统服务的(Linux的开机流程)
- linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random)