icfans

在09A.W09.32以后的版本上如何加入Java证书?

0
阅读(443)

[DESCRIPTION]

在09A.W09.32 版本上如何加入Java 证书?

(适用09A之后的版本,之前的版本加入CA都是VM 实现的)。

[SOLUTION]

目前只有Rolltech的证书预置交给MTK在做,如果是Jblendia的VM需要预置证书,请向VM vendor半导体社区咨询。

一、方法1:

下面是非multi bin 工程加法,客户工程很少用multi bin,所以一般用这种方法:

In mcu\costom\common\custpack_java_certs.h

/* Number of system default java root ca certs */

#define NUMBER_OF_JAVA_ROOT_CA_CERTS (3) 这里修改为 (4)

(上面这一处很重要,很多客户因为忘改这个导致证书没有添加成功)

將DER format转出來的Binary file, 依下面的方式加上去,这个使用工具hex.exe 去生成,具体的使用方法说明:

1)将hex 放在一个目录下,例如path:

d:\tool 目录下。

2)将 cer 文件放在一个目录下,例如path:

d:\cer

然后在cmd 窗口中先输入 cd d:\tool, 然后回车,在输入d: 回车。

目前路径已是d:\tool, 然后输入 hex d:\cer\xxx.cer 回车。

就会生成xxx.cer.hex file,之后将其中的内容copy 出来,按照如下方法实现 。

In mcu\custom\common\custpack_java_certs.c

__align(4) static const unsigned char java_trusted_cmcc_ca[] =

{

0x30, 0x82, 0x06, 0x3f, 0x30, 0x82, 0x04, 0x27, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,

0x80, 0x1a, 0xe4, 0x24, 0x58, 0xf7, 0xd6, 0x0a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,

...

};

const custpack_java_root_ca_header_struct custpack_java_root_ca =

{

NUMBER_OF_JAVA_ROOT_CA_CERTS,

{

{java_3rd_dmn_ca, sizeof(java_3rd_dmn_ca), CERT_FORMAT_X509, CERT_DOMAIN_3RD_PARTY},

{java_ms_ca, sizeof(java_ms_ca), CERT_FORMAT_X509, CERT_DOMAIN_MANUFACTURE},

{java_trusted_ca, sizeof(java_trusted_ca), CERT_FORMAT_X509, CERT_DOMAIN_OPERATOR}

{ java_trusted_cmcc_ca, sizeof( java_trusted_cmcc_ca), xxx_DOMAIN_xxx}

}

};

二、方法2下面是multi bin 的使用方法icfans

若是请参考下列steps (reference from multiple BIN document):

1. Please make sure the certificate data is encoded in “DER” format.

2. The NUMBER_OF_JAVA_ROOT_CA_CERTS defines the total number of root ca certificates to be

preinstalled.

3. The maximum number of preinstalled CA certificates is defined by a constant

“CUSTPACK_CFG_MAX_JAVA_CERTS_NUM” in file mcu\custom\common\custpack_java_certs.h

4. Please specify the domain before the certificate BIN. If you don’t specify the domain, the system

will use the default domain. Value 0 is manufacture domain. Value 1 is operator domain (trusted domain).

Value 2 is the third party domain.

5. This domain setting is for Java authorization model. If you want to configure the permission of

sensitive API of that domain, please contact with Java vendor (Rolltech)

CustPack.INI

[JAVA Certificate]

; File number need to match the number of files listed below

CERT_FILE_NUM=2

; Domain : 0 for manufacture (Default), 1 for operator, 2 for 3rd party

CERT_FILE1_DOMAIN = 1

CERT_FILE1 =.\custpack\java_ca\1.cer

/* The domain for file2 is not specified. Default domain is used*/

CERT_FILE2 =.\custpack\java_ca\2.cer

【验证】

添加java证书后,如何确定java证书添加成功?

证书添加成功后,是保存在 resource_java_root_ca结构体内。故添加完后验证只需要查看resource_java_root_ca这

个静态变量是否改变即可IC

1. modis上验证,开机时在java 任一流程内打断点,然后查看resource_java_root_ca的值。

如:使用modis 在文件jam_msg_handler.c 中的函数jam_install_mids_req_handler()内打断点。然后安装一个应用

, 并在VS 的watch内查看resource_java_root_ca 数组的值,该值保存的是手机中内置的java证书信息,请check它的分量num_certs是否等于贵司内置的java证书的数目,谢谢!

2. Target上验证,请在任一个java流程内使用trace打印出resource_java_root_ca的分量num_certs,看是否等于增

加证书之后的值。

如:在文件jam_msg_handler.c中 函数 jam_install_mids_req_handler()中增加如下trace;

Kal_prompt_trace(MOD_JAM,”The java CA number in the phone is: %d” resource_java_root_ca->num_certs );

然后安装一个midlet,安装结束后查看log中打印出来的这条信息即可