android p上sign script有一些调整和修改,img_key_deploy.py脚本产生cert1,cert2_key,sign_flow.py脚本执行签名。
可以将sign tool抽出到Android环境外执行(把整个sign-image_v2文件夹复制出来后修改env.cfg就行)
目前sign-image_v2文件夹目录架构长这样:
跟环境相关部分配置抽出放到env.cfg文件中
执行命令的时候会将${PLATFORM}, ${PROJECT}自动取代掉
如果要把sign tool抽出來
只要把sign-image_v2跟vendor/mediatek/proprietary/custom/mt6771/security/cert_config都复制出来(可以放到任何地方)
像这样
env.cfg的內容改一下,配置的路径是相对于sign_flow.py文件的路径
就可以动了
img_key_deploy.py(就是先前的SecureGen.py)的cert1_key_path/cert2_key_path都可以給public key
sign_flow.py则是比如说lk,原本在cert2_key_dir里面会有lk_privk2.pem
如果看到cert2_key_dir里面有lk_privk2.pem则会优先使用lk_privk2.pem,
如果只有lk_pubk2.pem(走HSM flow)
以mt6771平台上project k71tv1_64_bsp为例:
1.Gen cert1 and cert2_key Command:
python img_key_deploy.py mt6771 k71v1_64_bsp cert1_key_path=root_prvk.pem cert2_key_path=img_prvk.pem root_key_padding=pss
2.Sign image Command:
python sign_flow.py -env_cfg env.cfg mt6771 k71tv1_64_bsp
ps:cert1_key_path,cert2_key_path是以img_key_deploy的相对地址写入的路径
board_avb_enable = os.environ.get('BOARD_AVB_ENABLE')
关于脚本中设置AVB是否打开,如果是kernel4.9,需要设置AVB enable
这里是os获取build environment提供的值,如果没有build,直接执行签名tool sign_flow.py是不会有这个值的
需要带这个参数,和sign_flow.py命令一起执行才行。
BOARD_AVB_ENABLE=yes python sign_flow.py ...