高通平台(8917/8937/8953...) secure boot 软件配置

2023-11-01

以下以8917平台为例,其他平台类似,找到对应配置文件即可

1.新建临时目录

mkdir tmp
cd tmp

2.复制openssl文件到临时目录

cp ../LA.UM.*/LINUX/android/vendor/qcom/proprietary/common/scripts/gensecimage/qpsa/alt_resources/default/openssl/opensslroot.cfg ./
cp ../LA.UM.*/LINUX/android/vendor/qcom/proprietary/common/scripts/gensecimage/qpsa/alt_resources/default/openssl/v3.ext ./

3.生成证书文件等

openssl genrsa -out oem_rootca.key -3 2048
openssl req -new -key oem_rootca.key -x509 -out oem_rootca.crt -subj /C="US"/ST="CA"/L="SANDIEGO"/O="OEM"/OU="General OEM rootca"/CN="OEM ROOT CA" -days 7300 -set_serial 1 -config opensslroot.cfg
openssl genrsa -out oem_attestca.key -3 2048
openssl req -new -key oem_attestca.key -out oem_attestca.csr -subj /C="US"/ST="CA"/L="SANDIEGO"/O="OEM"/OU="General OEM attestation CA"/CN="OEM attestation CA" -days 7300 -config opensslroot.cfg
openssl x509 -req -in oem_attestca.csr -CA oem_rootca.crt -CAkey oem_rootca.key  -out oem_attestca.crt -set_serial 5 -days 7300 -extfile v3.ext
openssl x509 -in oem_rootca.crt -inform PEM -out oem_rootca.cer -outform DER
openssl x509 -in oem_attestca.crt -inform PEM -out oem_attestca.cer -outform DER

4.重命名证书文件并生成对应哈希值

mv oem_rootca.key qpsa_rootca.key
mv oem_attestca.key qpsa_attestca.key
mv oem_rootca.cer qpsa_rootca.cer
mv oem_attestca.cer qpsa_attestca.cer
openssl dgst -sha256 qpsa_rootca.cer

这里生成的SHA256(qpsa_rootca.cer)值需要保存,如下修改配置文件
MSM8917.LA.3.2.1/common/sectools/config/8917/8917_fuseblower_USER.xml

         <entry ignore="false">
             <description>contains the OEM public key hash as set by OEM</description>
             <name>root_cert_hash</name>
-            <value>0000000000000000000000000000000000000000000000000000000000000000</value>
+            <value>df6d19a0095ffd6c76cfa79d5b2fb55a0ef93313f8cf345ecab8cba99cde7951</value>
         </entry>
         <entry ignore="true">
             <description>SHA256 signed root cert to generate root hash</description>
@@ -38,7 +38,7 @@
         <entry ignore="false">
             <description>PK Hash is in Fuse for SEC_BOOT1 : Apps</description>
             <name>SEC_BOOT1_PK_Hash_in_Fuse</name>
-            <value>false</value>
+            <value>true</value>
         </entry>
         <entry ignore="false">
             <description>If PK Hash in Fuse is 0, then this index selects which of 16 keys in ROM to use</description>
@@ -53,7 +53,7 @@
         <entry ignore="false">
             <description>PK Hash is in Fuse for SEC_BOOT2 : MBA</description>
             <name>SEC_BOOT2_PK_Hash_in_Fuse</name>
-            <value>false</value>
+            <value>true</value>
         </entry>
         <entry ignore="false">
             <description>If PK Hash in Fuse is 0, then this index selects which of 16 keys in ROM to use</description>
@@ -68,7 +68,7 @@
         <entry ignore="false">
             <description>PK Hash is in Fuse for SEC_BOOT3 : MPSS</description>
             <name>SEC_BOOT3_PK_Hash_in_Fuse</name>
-            <value>false</value>
+            <value>true</value>
         </entry>

5.将生成证书文件copy到对应目录

cp qpsa_rootca.key qpsa_attestca.key qpsa_rootca.cer qpsa_attestca.cer ../MSM8917.LA.3.2.1/common/sectools/resources/data_prov_assets/Signing/Local/qti_presigned_certs-key2048_exp65537/

qti_presigned_certs-key2048_exp65537 这个文件取决于项目配置
MSM8917.LA.3.2.1\common\sectools\config\8917\8917_secimage.xml

    <!--找到此tag-->
    <general_properties>
    
        ......
        
        <!--  *************** 以下值表示key2048_exp65537 *************** -->
        <key_size>2048</key_size>
        <exponent>65537</exponent>
        <!--  *************** 以上值表示key2048_exp65537 *************** -->
    
        ......
        
    </general_properties>

6.生成sec.dat文件并进行validate

cd ../MSM8917.LA.3.2.1/common/sectools/

# 生成sec.dat文件,生成路径: fuseblower_output/v2/sec.dat
python sectools.py fuseblower -e config/8917/8917_fuseblower_OEM.xml -q config/8917/8917_fuseblower_QTI.xml -u config/8917/8917_fuseblower_USER.xml  -g verbose -vvv 

# 校验sec.dat和xml配置是否匹配,成功提示 Validate Successful!
python sectools.py fuseblower --oem_config_path=config/8917/8917_fuseblower_OEM.xml --qti_config_path=config/8917/8917_fuseblower_QTI.xml --user_config_path=config/8917/8917_fuseblower_USER.xml --secdat=fuseblower_output/v2/sec.dat  --validate

7.工具弄好好,对image进行签名

理论上,8917_secimage.xml文件中有的image都需要进行签名

cd MSM8917.LA.3.2.1/common/sectools/

# 8917_secimage.xml中配置的image整体签名,签名后文件保存到 ./sec_output 目录下
python sectools.py secimage -m ../../../MSM8917.LA.3.2.1 -c ./config/8917/8917_secimage.xml -o ./sec_output -sa 

# 对单个文件进行签名操作
# python sectools.py secimage -i ../../../BOOT.BF.3.3.2/boot_images/build/ms/bin/JAASANAZ/sbl1.mbn -c ./config/8917/8917_secimage.xml -o ./sec_output -sa 

8.重新生成NON-HLOS.bin,将image放到download_image

将wcnss.mbn,mba.mbn,qdsp6sw.mbn(签名后叫modem.mbn)重新放回源目录下,到common/build下面执行python update_common_info.py,更新modem分区

cp sec_output/8917/appsbl/emmc_appsboot.mbn $IMAGES_DIR/
cp sec_output/8917/prog_emmc_firehose_ddr/prog_emmc_firehose_8917_ddr.mbn $IMAGES_DIR/
cp sec_output/8917/rpm/rpm.mbn $IMAGES_DIR/
cp sec_output/8917/sbl1/sbl1.mbn $IMAGES_DIR/
cp sec_output/8917/devcfg/devcfg.mbn $IMAGES_DIR/
cp sec_output/8917/keymaster/km4.mbn $IMAGES_DIR/
cp sec_output/8917/qsee/tz.mbn $IMAGES_DIR/
cp sec_output/8917/smplap32/smplap32.mbn $IMAGES_DIR/
cp sec_output/8917/smplap64/smplap64.mbn $IMAGES_DIR/
cp sec_output/8917/cmnlib/cmnlib_30.mbn $IMAGES_DIR/
cp sec_output/8917/cmnlib64/cmnlib64_30.mbn $IMAGES_DIR/

cp sec_output/8917/cmnlib/cmnlib_30.mbn $TZ_DIR/
cp sec_output/8917/cmnlib64/cmnlib64_30.mbn $TZ_DIR/
cp sec_output/8917/cppf/cppf.mbn $TZ_DIR/ 
cp sec_output/8917/dhsecapp/dhsecapp.mbn $TZ_DIR/
cp sec_output/8917/fingerprint/fingerprint.mbn $TZ_DIR/
cp sec_output/8917/fingerprint64/fingerprint64.mbn $TZ_DIR/
cp sec_output/8917/isdbtmm/isdbtmm.mbn $TZ_DIR/ 
cp sec_output/8917/widevine/widevine.mbn $TZ_DIR/ 
cp sec_output/8917/mdtp/mdtp.mbn $TZ_DIR/ 
cp sec_output/8917/qmpsecap/qmpsecap.mbn $TZ_DIR/ 
cp sec_output/8917/mba/mba.mbn $MPSS_DIR/
cp sec_output/8917/modem/modem.mbn $MPSS_DIR/qdsp6sw.mbn
cp sec_output/8917/venus/venus.mbn $VIDEO_DIR
cp sec_output/8917/wcnss/wcnss.mbn ../../../CNSS.PR.4.0.3/wcnss_proc/build/ms/bin/8937/reloc
cp sec_output/8917/adsp/adsp.mbn ../../../ADSP.VT.3.0/adsp_proc/obj/8937/signed/

cp common_output/v2/sec.dat $IMAGES_DIR/

cd ../../..

# 重新生成下NON-HLOS.bin
cd ./MSM8917.LA.3.2.1/common/build
python build.py --nonhlos

cp bin/asic/NON-HLOS.bin $IMAGES_DIR/

9.刷机

只有导入sec.dat文件才是真正的secure boot版本,有两种方式:
1、刷机时配置下刷机包中rawprogram_unsparse.xml文件

<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="sec.dat" label="sec" num_partition_sectors="32" physical_partition_number="0" size_in_KB="16.0" sparse="false" start_byte_hex="0x10188000" start_sector="527424" />

filename=“sec.dat” 这里写上sec.dat即可。默认是空的值,表示不写入。

2、使用fastboot工具将步骤6生成的sec.dat刷到sec分区

adb root
adb reboot bootloader
fastboot flash sec sec.dat
fastboot reboot

10.验证

进入fastboot模式,查看即可
在这里插入图片描述
如果已启动secure boot,可以看到提示 secure: yes。
切记机器中刷入了sec.dat后,就无法刷其他非相同签名的 secure 版本了。

11.启动secure boot后刷机

启动secure boot后,还是使用QFIL工具刷机,但是需要修改一处代码,跳过烧录时对secure boot检查。建议(必须)一开始就同步修改。
BOOT.BF.3.3/boot_images/core/storage/tools/deviceprogrammer_ddr/src/firehose/deviceprogrammer_initialize.c

-    if (FALSE == isValidationMode() && TRUE == isAuthenticationEnabled())
-       {
-      strlcat(err_log, "Secure boot detected. VIP not enabled:fail ", sizeof(err_log));
-    }
+    // if (FALSE == isValidationMode() && TRUE == isAuthenticationEnabled())
+       // {
+      // strlcat(err_log, "Secure boot detected. VIP not enabled:fail ", sizeof(err_log));
+    // }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高通平台(8917/8937/8953...) secure boot 软件配置 的相关文章

  • 检测到设备正在振动?

    我使用下面的代码来振动设备 public void vibrator try Vibrator vibrator Vibrator getSystemService Context VIBRATOR SERVICE vibrator vib
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 在 Google Analytics 中跟踪应用程序版本

    我正在使用谷歌分析模块 https marketplace appcelerator com apps 5081 2014113336 https marketplace appcelerator com apps 5081 2014113
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • 在我的Android中,当其他应用程序想要录制音频时如何停止录音?

    在我的应用程序中 服务通过 AudioRecord 持续录制音频 当我的应用程序运行时 其他与音频记录相关的应用程序 例如 Google 搜索 无法工作 如何知道何时有其他应用想要录制音频 以便我可以停止录制以释放资源 答案是MediaRe
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • Android - 将 ImageView 保存到具有全分辨率图像的文件

    我将图像放入 ImageView 中 并实现了多点触控来调整 ImageView 中的图像大小和移动图像 现在我需要将调整大小的图像保存到图像文件中 我已经尝试过 getDrawingCache 但该图像具有 ImageView 的大小 我
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • html5 图片 遮罩层,6种炫酷的鼠标滑过图片显示遮罩层特效

    这是一款使用jQuery和CSS3制作的炫酷的鼠标滑过图片显示遮罩层特效 该图片制作层特效共6种不同的效果 使用一些简单的jQuery代码和CSS3过渡效果来完成 简单实用 可以为网站图片添加非常不错的效果 制作方法 HTML结构 该图片遮
  • 亿图脑图MindMaster(Pro)

    下载地址 https www edrawsoft cn download 微信扫码登录 无限结点
  • QT交叉编译arm

    QT环境以及交叉编译环境的搭建 提示 这个操作比较常规 我就说一下自己遇到的一些问题然后一些注意事项 文章目录 QT环境以及交叉编译环境的搭建 前言 一 QT使用方面 先得知道QT是怎么回事 QT是什么和我认为的优势 干货来了 qmake
  • 虚拟地址 到底如何映射到 物理地址 的?

    一 背景 1 讲故事 我发现有很多的 NET程序员 写了很多年的代码都没弄清楚什么是 虚拟地址 更不用谈什么是 物理地址 以及Windows是如何实现地址映射的了 这一篇我们就来聊一聊这两者之间的联系 二 地址映射研究 1 找虚拟地址 怎么
  • html调用内网海康威视摄像头

    html调用内网海康威视摄像头 我的需求很简单就是在html的主页上用iframe加载出摄像头 海康威视的摄像头无法直接调用 必须安装海康提供的web插件包 使用插件的demo是可以调用的 但是单独搞出来又无法使用 所以直接在原来的demo
  • opencv ffmpeg推流

    基于opencv采集推流 1 opencv采集rtsp解码 可以基于usb 摄像机 调用系统驱动 和rtsp 调用ffmpeg 接口 转yuv加解码 摄像机 2 ffmpeg缩放转换像素格式 3 ffmpeg编码H264 4 ffmpeg推
  • 使用JS实现对页面的繁体简体翻译转换

    使用JS实现对页面的繁体简体翻译转换 效果图 一 HTML代码 二 Js代码 总结 效果图 废话少说直接上代码 一 HTML代码
  • wsl无法连接到win上的docker

    https docs docker com desktop windows wsl
  • QT 写一个属于自己的消息弹窗MessageBox

    前言 在接触公司的一个桌面应用项目后 发现里面很多窗体都是自己写的而不是使用QT自带的 例如消息弹窗 今天这篇博客就记录下来如何自己写一个消息弹窗 内容可能有点多 但都是本人自己一步一步操作后 测试可行后才记录下博客这里来的 希望对看到这篇
  • kaldi中SHELL调用C++程序过程源码分析

    引入 kaldi真正的核心源码 都是C 写成的 这个结论可以从如下两点得以确认 1 在kaldi的源码kaldi src目录下 能看到很多扩展名为 cc的源程序 这是linux下C 源码 2 在源码中 比如kaldi src featbin
  • 和导师的第二次探讨

    Jason提问 导师 最近读文献的方面我碰到两个问题 一 就是感觉读的太杂了 人工智能方向太大 文章五花八门 二 内容刚接触感觉晦涩难懂 特别是英文文献 而且用翻译软件意思有时候翻译成中文就感觉也不对 我应该如何解决呢 导师回答 对于问题一
  • sourceInsight官网介绍及插入定制语言支持

    sourceInsight官网介绍及插入定制语言支持 版本说明 版本 作者 日期 备注 0 1 ZY 2019 6 4 初稿 目录 文章目录 sourceInsight官网介绍及插入定制语言支持 版本说明 目录 一 sourceinsigh
  • 已经有了ERP,为什么还要上MES?

    当前 制造企业面临着巨大的竞争和成本压力 利润越来越少 交货时间要求越来越短 人力成本越来越高 产品越来越复杂 大多数企业已经在使用ERP系统了 他们会想 我已经上了ERP了 为什么还需要MES系统 许多工厂车间只有很有限的IT系统 比如自
  • Vector简介说明

    转自 Vector简介说明 下文笔者讲述Vector简介说明 如下所示 Vector简介 Vector集合和ArrayList集合功能相似 底层都是通过数组来实现集合的 Vector和ArrayList最大的区别是Vector的很多方法都是
  • 开发Android硬件访问服务

    在http blog csdn net getnextwindow article details 47731597中 为Android系统添加了HAL模块 开发好一个硬件抽象层以后 我们通常还需要在应用程序框架中实现一个硬件访问服务 硬件
  • 数据结构实验--带环、相交链表问题

    一 问题描述 基于课程上机关于单链表的作业 要求进一步实现以下需求 1 构造链表后 将元素值为 m 和 n 从键盘输入 如有多个相同元素值 仅考虑首个出现的元素 的节点建立连接 注意判断节点出现的先后关系 将后面出现的节点 假设为 n 的链
  • 【数据结构】栈和队列

    栈和队列 一 栈 1 栈的简单介绍 2 栈的相关函数接口实现 1 初始化 2 销毁 3 压栈 4 弹栈 5 判空 6 取栈顶元素 7 栈的大小 二 队列 1 队列的简单介绍 2 队列的相关函数接口实现 1 初始化 2 销毁 3 插入 4 删
  • 台湾海峡隧道工程线路初定3个方案(图)

    台湾海峡隧道工程线路初定3个方案 图 http www sina com cn 2007年04月22日01 50 新京报 3方案示意图 本报讯 昨日 第一届海峡两岸通道 桥隧 工程学术研讨会新闻发布会在福州举行 与会专家称 台湾海峡隧道工程
  • PLC驱动伺服电机、步进电机共阳极接法-20230701

    由于工作需要 需要测试一台小型伺服电机是否好坏 记录一下接线方法 设备如下 信捷XDM 60T10 C PLC 安诺机器人 57AIM30一体化伺服电机 官网找了下技术手册 可以看到这是一款24V供电的小型伺服驱动器 供电可以用手头的这款P
  • 高通平台(8917/8937/8953...) secure boot 软件配置

    以下以8917平台为例 其他平台类似 找到对应配置文件即可 1 新建临时目录 mkdir tmp cd tmp 2 复制openssl文件到临时目录 cp LA UM LINUX android vendor qcom proprietar