加密狗实现方法
一,在vendor下做个服务vendor_openssl_diag,用于监视diag口信息
添加vendor_openssl 文件到 Z:\qics1003\vendor\qcom\proprietary\diag\
二,用openssl rsa api实现 如下功能,供1步骤中调用。
intEnc_with_public_key(const unsigned char *in,unsigned char *out);
intEnc_with_private_key(const unsigned char *in,unsigned char *out);
intDec_with_public_key(const unsigned char *in,unsigned char *out);
intDec_with_private_key(const unsigned char *in,unsigned char *out);
1,添加rsa_vendor.c到Z:\qics1003\external\openssl\crypto\rsa\
2,修改Z:\qics1003\external\openssl\include\openssl\rsa.h
3,修改Z:\qics1003\external\openssl\crypto\Android.mk,编译rsa_vendor.c
三,在vendor下完成RPC通信,写加密狗鉴权成功信息到modem端
修改Z:\qics1003\vendor\qcom\proprietary\qcril\qcril_fusion\qcril_other.c
四,Modem端完成RPC通信,保存加密狗鉴权成功信息
修改E:\amss10045450\modem_proc\core\api\rapi\services\src\nv_svc.c
五,modem端,在写IMEI号时判断加密狗鉴权信息,成功则写IMEI,否则无权限写。
修改E:\amss10045450\modem_proc\core\services\nv\nvio.c
修改内容用宏VENDOR_DOG_CONFIG 控制,默认为未定义,使用加密狗鉴权的项目打开此宏即可。
六,开机启动vendor_openssl_diag服务
修改Z:\qics1003\system\core\rootdir\init.rc
#zhang vendordog diag init
#service vendor_dog_diag /system/bin/vendor_openssl_diag
#class core
默认被屏蔽掉了,需要使用加密狗鉴权的项目打开即可。