BREW对外提供了IRUIM接口用于提供RUIM服务
通过IRUIM接口:
1、可以检测RUIM 卡连接状态
2、获取卡的状态信息
3、更改和检测PIN码状态
4、更改和检测CHV(Card Holder Verification)
5、锁/解锁卡
IRUIM开放的接口:(AEERUIM.h)
基于RUIM设备介绍
在机卡一体系统中,使用ESN作为基站鉴权时CAVE算法(Cellular Authentication and Voice Encryption)的参数。而对于基于RUIM的设备,CAVE算法可以使用手机ESN或者RUIM ID。
RUIM卡的内容主要包含在三个文件中:
EF 6F38(ESN_ME):用于保存移动设备的ESN。移动设备在检测到新的R-UIM卡插入时将它的ESN发送到R-UIM卡的该文件中保存。
EF 6F31(UIM ID):保存R-UIM卡的ID。
EF 6F42(UIMID 指示器):用于指示CAVE算法中使用的是ESN_ME还是UIMID。值为0时表示使用ESN_ME,为1时使用UIMID进行CAVE算法。
虽然在BREW porting时有些鉴权需要使用UIMID,但是对于ESN关联的操作,必须使用ESN_ME。比如通过OEM_GetConfig()获取CFGI_DOWNLOAD时,或者通过OEM_GetConfigEx()获取AEE_DEVICEITEM_HWIDLIST时。
为了防止BREW应用的非法拷贝,BREW在下载应用的时候会对应用进行加密。一些设备特有的属性会用于加密该文件,比如HWID。BREW allows only valid and properly encrypted application devices。当应用被移动到另一个设备中或者这个设备的特性比如HWID在更换R-UIM卡后也改变了,那么这些应用会被标记为非法应用并从设备中自动删除。
BREW依赖于这样一个事实:当设备更换R-UIM卡后,该设备主要的HWID不会改变。而Subscriber ID(SID)在更换R-UIM卡后则允许改变。
在基于R-RUIM卡的设备中进行BREW Porting
在R-UIM based 设备中port BREW时,必须注意:
1、必须要包含OEMRUIM.c文件,所有在OEMRUIM.c文件中定义的函数必须支持。
2、必须支持所有address book函数。IAddrBook接口必须支持获取R-UIM卡中的addrbook。可以使用AEECLSID_ADDRBOOK_RUIM 。
3、在BREW 通过AEE_Init()初始化之后,当SID改变时,必须把这个新值通过IDOWNLOAD_SetSubscriberID()通知BREW。有可能在AEE_Init()初始化之后,R-UIM仍然没有完成初始化,那么这个设置SID的过程就需要等到R-UIM完全初始化之后。在SID改变后通知BREW非常重要,因为该信息还有其他的用途。一下代码必须在SID改变后调用以通知BREW:
4、通过OEM_GetConfig()获得的BREW 设置参数必须来自ME或者R-UIM。大多数参数来自ME,只有一下几个需要从R-UIM卡中获取:
CFGI_SUBSCRIBERID_LEN
CFGI_CARDIDp>
CFGI_CARDID_LEN
CFGI_GSM1X_IDENTITY_PARMS
CFGI_GSM1X_PRL
CFGI_GSM1X_RTRE_CONFIG
CFGI_GSM1X_SID_NID_PARAMS
CFGI_MOBILEINFO获取的AEEMobileInfo中的nCurrNAM、szMobileID
CFGI_DOWNLOAD获取的AEEDownloadInfo中的bAKey
5、确保DIF_SID_ENCODE没有设置。即当通过OEM_GetConfig()获取CFGI_DOWNLOAD时,必须确保
AEEDownloadInfo机构中的wFlags没有设置为DIF_SID_ENCODE
6、确保通过OEM_GetConfig()获取CFGI_MOBILE_INFO时返回的ME ESN是正确的,通过OEM_GetConfigEx()获取AEE_DEVICEITEM_HWID时得到的HWID也是合法的
1、AEEMobileInfo结构中哦那个的dwESN必须是正确的ME ESN,并能唯一的标识该设备,如果没有分配ME ESN,则使用pESN
2、HWID必须保持固定,即使更换了R-UIM卡,HWID也不能改变。
3、HWID经常被开发者用于测试设备,所以必须允许开发者能获取设备的HWID
7、默认情况下,BREW允许运行没有签名的应用,即使在下载该应用的R-UIM卡更换后。
而经过签名的应用只能在其下载的设备中运行。如果要使所有的应用都只能在下载该应用的设备中运行,可以
在使用OEM_GetConfig()获取CFGI_DOWNLOAD时,设置AEEDownloadInfo结构的wFlags等于DIF_SID_VALIDATE_ALL。
设置该标识会导致R-UIM卡更换后,所有用该R-UIM下载的应用都不可用。
8、默认情况下,BREW只允许应用下载者删除其自己下载的应用。如果想要删除其他下载者(R-UIM)下载的应用,可以在OEM_GetConfig()获取的CFGI_DOWNLOAD的AEEDownloadInfo结构中设置wFlags等于DIF_RUIM_DEL_OVERRIDE
9、允许使用IAddrBook接口访问R-UIM卡中的电话本。BREW应用可以使用AEECLSID_ADDRBOOK_RUIM创建IAddrBook接口实例来访问R-UIM卡中的电话本。
10、提供访问移动台HWID的接口,这对于开发者创建基于HWID的测试签名很重要。
11、如果移动台的ESN无法分配给每台设备,必须保证通过AEEMobileInfo获取的dwESN成员在网络中是唯一的,强烈推荐使用pESN。
验证实现
可以使用以下方法验证是否成功porting BREW到基于R-UIM卡的设备上:
test1
1、下载签名和未签名的应用到R-UIM设备中。
2、更换设备的R-UIM卡。
应用应该保存完整并且没有被删除
如果设置了IDF_RUIM_DEL_OVERRIDE,则你可以删除应用,如果没有设置,则不能删除应用。
如果设置了IDF_SID_VALIDATE_ALL,你可以运行所有的应有,不管是签名的还是未签名的。如果没有设置,则只能运行未签名的应用。
nbsp;
test2
1、下载应用到R-UIM卡设备中。
2、更换R-UIM卡并重启设备
3、插入以前的R-UIM卡
此时,你可以运行和删除下载的BREW应用。
对于所有的中国联通手机,确保DIF_SID_VALIDATE_ALL和DIF_RUIM_DEL_OVERRIDE标识已设置。