一种与智能密钥设备通讯的方法及装置的制造方法_4

文档序号:9911517阅读:来源:国知局
则,返回步骤202。
[0187] 具体地,移动终端调用设备连接句柄的控制传输函数通过控制传输端点获取 USBKEY的设备识别标识,判断设备识别标识是否是预设识别标识,如果是,则继续;否则,返 回步骤202。
[0188] 其中,预设识别标识为支持FIDO协议的USBKEY的预设识别标识,具体包括:第一预 设识别标识和第二预设识别标识,第一预设识别标识可以具体为OxfldO;第二预设识别标 识可以具体为:〇χ〇1。设备识别标识具体包括第一标识和第二标识。
[0189] 相应地,更加具体地,移动终端调用设备连接句柄的控制传输函数通过控制传输 端点获取USBKEY的第一标识和第二标识,判断第一标识是否和第一预设识别标识匹配且第 二标识是否是和第二预设识别标识匹配,如果是,则继续;否则,返回步骤202。
[0190] 其中,控制传输函数为controlTransfeH);第一标识和第二标识可以分别为 USBKEY 的报告描述符中的 HIDJJsagePage 和 HIDJJsage。
[0191] 本实施例中,监控流程,还可以如图5所示,移动终端具体执行:
[0192] 步骤301:开启监控流程,初始化USB管理对象、广播接收对象、权限许可对象和广 播过滤对象;
[0193] 具体地,移动终端调用初始化函数初始化USB管理对象、权限许可对象、广播接收 对象和广播过滤对象。其中,初始化函数包括第一初始化函数、第二初始化函数、第三初始 化函数和第四初始化函数。
[0194] 其中,移动终端调用第一初始化函数初始化USB管理对象具体为:
[0195] mUsbManager= (UsbManager)getSystemService(Context ·USB_SERVICE);其中, mUsbManager为USB管理对象;
[0196] 移动终端调用第二初始化函数初始化权限许可对象具体为:
[0197] mPermissionIntent = PendingIntent.getBroadcast(this,0,new Intent (ACTI0N_USB_PERMISSI0N) ,0);其中,:mPermissionIntent为权限许可对象;进一步地说 明,权限许可对象是一个待处理的事件对象;
[0198] ACTI0N_USB_PERMISSI0N 为设备权限消息,ACTI0N_USB_PERMISSI0N 可以具体为" com·andro i d·examp1e·USB_PERMISSΙ0Ν"。
[0199] 移动终端调用第三初始化函数初始化广播接收对象具体为:private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver();其中,mUsbReceiver为广 播接收对象;
[0200] 移动终端调用第四初始化函数初始化广播过滤对象具体为:IntentFilter filter = new IntentFilterO ;其中,filter为广播过滤对象。
[0201 ] 步骤302:向广播过滤对象中添加关心消息;
[0202] 具体地,移动终端调用添加消息函数向过滤对象中添加关心消息,其中,关心消息 包括设备插入消息、设备拔出消息和设备权限消息。
[0203] 其中,移动终端调用添加消息函数向过滤对象中添加关心消息具体为:
[0204] filter.addAction(ACTION_USB_PERMISSION);
[0205] filter.addAct i on(UsbManager. ACTI0N_USB_DEVICE_ATTACHED);
[0206] filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);其中,
[0207] ACTION_USB_PERMISSION 为设备权限消息;
[0208] UsbManager · ACTION_USB_DEVICE_ATTACHED 为设备插入消息;
[0209] UsbManager · ACTION_USB_DEVICE_DETACHED 为设备拔出消息。
[0210] 步骤303:根据USB管理对象和广播过滤对象注册广播接收器;
[0211]具体地,移动终端使用USB管理对象和广播过滤对象调用注册广播函数注册广播 接收器;
[0212] 注册广播函数为registerReceiver(mUsbReceiver,f ilter);
[0213] 步骤304:根据广播接收对象等待获取消息通知对象,当获取到消息通知对象后, 根据消息通知对象获取与USBKEY对应的设备对象;
[0214] 具体地,移动终端调用广播接收对象的接收消息通知函数等待获取消息通讯对 象,当获取到消息通知对象后,调用消息通知对象的第一打包函数获取与USBKEY对应的设 备对象;
[0215] 其中,移动终端调用广播接收对象的接收消息通知函数等待获取消息通讯对象, 接收消息通知函数具体为:
[0216] public void onReceive(Context context, Intent intent),其中,intent为消 息通讯对象;
[0217] 移动终端调用消息通知对象的第一打包函数获取与USBKEY对应的设备对象,具体 为:UsbDevice device=(UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_ DEVICE);其中,device为设备对象。
[0218] 其中,设备对象中具体包括:USBKEY的厂商标识信息,其中,USBKEY的厂商标识信 息可以具体为USBKEY的PID(Product ID,产品识别码)和VID(Vendor ID,供应商身份)。
[0219] 步骤305:判断设备对象是否和预设厂商标识对应,如果是,则执行步骤306;否则, 返回步骤304;
[0220] 具体地,移动终端获取设备对象中的厂商标识信息,判断获取到的设备对象中的 厂商标识信息是否和预设厂商标识对应,如果是,则执行步骤306;否则,返回步骤304。
[0221] 步骤306:根据消息通知对象获取设备对象的设备权限标识,根据消息通知对象获 取消息通知,根据关心消息判断消息通知的类型,当消息通知的类型为设备权限消息时,执 行步骤307;当消息通知的类型为设备插入消息时,执行步骤308;当消息通知的类型为设备 拔出消息时,执行步骤314;
[0222] 具体地,移动终端调用消息通知对象的第二打包函数获取USBKEY的设备权限,调 用消息通知对象的获取消息函数获取消息通知,根据关心消息判断消息通知的类型,当消 息通知的类型为设备权限消息时,执行步骤307;当消息通知的类型为设备插入消息时,执 行步骤308;当消息通知的类型为设备拔出消息时,执行步骤314;
[0223] 其中,移动终端调用消息通知对象的第二打包函数获取USBKEY的设备权限标识, 具体为:
[0224] Boolean
[0225] bHasPermission = intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_ GRA NTED,false);其中,bHasPermission为设备权限标识;
[0226] 移动终端调用消息通知对象的获取消息函数获取消息通知,具体为:
[0227] String action = intent.getAction〇 ;其中,action为消息通知。
[0228] 步骤307:根据设备权限标识判断设备对象是否具有设备权限,如果是,则执行步 骤309;否则,执行步骤317;
[0229] 具体地,移动终端判断设备权限标识是否为TRUE,如果是,则判定设备对象具有设 备权限;否则,判定设备对象不具有设备权限。
[0230]步骤308:根据设备权限标识判断设备对象是否具有设备权限,如果是,则执行步 骤309;否则,执行步骤313;
[0231 ]具体地,移动终端判断设备权限标识是否为TRUE,如果是,则判定设备对象具有设 备权限;否则,判定设备对象不具有设备权限。
[0232] 步骤309:获取与设备对象对应的设备连接句柄和设备接口对象;
[0233] 具体地,移动终端使用设备对象调用USB管理对象的打开设备函数获取与设备对 象对应的设备连接句柄;调用设备对象的获取接口函数获取与设备对象对应的设备接口对 象。
[0234] 其中,移动终端使用设备对象调用USB管理对象的打开设备函数获取与设备对象 对应的设备连接句柄,具体为:
[0235] UsbDeviceConnection hconnection=m_UsbManager.openDevice(device)
[0236] 调用设备对象的获取接口函数获取与设备对象对应的设备接口对象,具体为: Usblnterface m_usblnterface=m_device.getlnterface(O);
[0237] 步骤310:根据设备连接句柄初始化设备接口对象;
[0238] 具体地,移动终端调用设备连接句柄的声明接口函数初始化设备接口对象;
[0239] 具体为:m_connection. claimlnterface(m_usblnterface,true);
[0240] 步骤311:根据设备接口对象获取与设备对象对应的设备通讯端点;
[0241] 具体地,移动终端调用设备接口对象的获取端点函数得到与设备对象对应的设备 通讯端点。具体为:(int i =' _i. <'m_usW_titerfaee.getEiidpo:itttCouiil();.
[0243] 步骤312:生成设备通讯句柄,将设备通讯句柄和设备对象、设备连接句柄和设备 通讯端点分别建立对应关系并保存,执行步骤317;
[0244] 步骤313:为设备对象申请设备权限,执行步骤317;
[0245] 具体地,移动终端使用设备对象和权限许可对象调用USB管理对象的申请权限函 数为设备对象申请设备权限。
[0246] 具体为:m_UsbManager .requestPermission(device,mPermissionIntent);
[0247] 更加详细地,移动终端使用设备对象和权限许可对象调用USB管理对象的申请权 限函数为设备对象申请设备权限,在移动终端的显示界面提示用户是否为USBKEY授权,当 USBKEY获取到用户授权后,与USBKEY对应的设备对象的设备权限标识为TRUE。
[0248] 步骤314:判断是否存在与设备对象对应的设备通讯句柄,如果是,则执行步骤 315;否则,执行步骤316;
[0249] 步骤315:销毁设备对象,及与其分别对应的设备通讯句柄、设备连接句柄和设备 通讯端点,执行步骤317;
[0250]步骤316:销毁设备对象,执行步骤317;
[0251] 步骤317:判断是否退出监控流程,如果是,则退出监控流程;否则,返回步骤304;
[0252] 另外,移动终端执行步骤304之后还可以直接执行步骤306;相应地,步骤310和步 骤311之间还可以包括:移动终端根据设备连接句柄通过控制传输端点获取USBKEY的设备 识别标识,判断设备识别标识是否是预设识别标识,如果是,则继续;否则,返回步骤304。
[0253] 具体地,移动终端调用设备连接句柄的控制传输函数通过控制传输端点获取 USBKEY的设备识别标识,判断设备识别标识是否是预设识别标识,如果是,则继续;否则,返 回步骤304。
[0254]其中,预设识别标识为支持FIDO协议的USBKEY的预设识别标识,具体包括:第一预 设识别标识和第二预设识别标识,第一预设识别标识可以具体为OxfldO;第二预设识别标 识可以具体为0x01。设备识别标识具体包括第一标识和第二标识。
[0255] 相应地,更加具体地,移动终端调用设备连接句柄的控制传输函数通过控制传输 端点获取USBKEY的第一标识和第二标识,判断第一标识是否和第一预设识别标识匹配且第 二标识是否是和第二预设识别标识匹配,如果是,则继续;否则,返回步骤304。
[0256] 其中,控制传输函数为controlTransfeH);第一标识和第二标识可以分别为 USBKEY 的报告描述符中的 HIDJJsagePage 和 HIDJJsage。
[0257] 实施例2
[0258] 本实施例提供了一种与智能密钥设备通讯的装置,如图6所示,包括:初始化模块 01、监控模块02、第一获取模块03、第一判断模块04、申请权限模块05、第二判断模块06
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1