未验证 提交 b00eac5f 编写于 作者: O openharmony_ci 提交者: Gitee

!5069 安全文档结构修改

Merge pull request !5069 from zengyawen/master
# HarmonyAppProvision配置文件的说明
在应用的开发过程中,应用的部分信息需要在HarmonyAppProvision配置文件(该文件在部分文档中也称为profile文件)中声明。
在应用的开发过程中,应用的权限、签名信息等需要在HarmonyAppProvision配置文件(该文件在部分文档中也称为profile文件)中声明。
## 配置文件的内部结构
HarmonyAppProvision文件包含version-code对象、version-name对象、uuid对象、type对象、issuer对象、validity对象、bundle-info对象、acls对象、permissions对象、debug-info对象等部分组成。
......
......@@ -3,11 +3,13 @@
- 访问控制
- [访问控制开发概述](accesstoken-overview.md)
- [访问控制开发指导](accesstoken-guidelines.md)
- [权限定义列表](permission-list.md)
- 用户认证
- [用户认证开发概述](userauth-overview.md)
- [用户认证开发指导](userauth-guidelines.md)
- 密钥管理
- [HUKS开发概述](huks-overview.md)
- [HUKS开发指导](huks-guidelines.md)
- Hap包签名工具
- Hap包签名工具
- [Hap包签名工具概述](hapsigntool-overview.md)
- [Hap包签名工具指导](hapsigntool-guidelines.md)
......@@ -72,7 +72,7 @@
如上述示例所示,权限"ohos.permission.PERMISSION2"的权限等级为system_basic,高于应用此时应用的APL等级,用户的最佳做法是使用ACL方式。
**在config.json文件声明的基础上**,应用还需要在profile文件中声明不满足申请条件部分的权限。该场景中,用户应该在字段"acls"中做声明如下:
在config.json文件声明的基础上,应用还需要在[profile文件](../quick-start/app-provision-structure.md)中声明不满足申请条件部分的权限。该场景中,用户应该在字段"acls"中做声明如下:
```json
{
"version-name": "1.0.0",
......
......@@ -75,7 +75,7 @@ ATM(AccessTokenManager)是OpenHarmony上基于AccessToken构建的统一的应
| normal等级 | 普通应用。 |
默认情况下,应用的APL等级都为normal等级,如果应用需要将自身的APL等级声明为system_basic及以上的APL等级,需要进行以下步骤:
- 开发应用安装包时,需要修改应用的profile文件,在文件的"apl"字段声明应用的APL等级,并使用profile签名工具生成证书。具体签名流程可以查看页面[Hap包签名工具指导](hapsigntool-guidelines.md)
- 开发应用安装包时,需要修改应用的[profile文件](../quick-start/app-provision-structure.md),在文件的"apl"字段声明应用的APL等级,并使用profile签名工具生成证书。具体签名流程可以查看页面[Hap包签名工具指导](hapsigntool-guidelines.md)
### 权限等级说明
......@@ -127,7 +127,7 @@ ACL方式的工作流程可以参考[ACL方式使用说明](#ACL方式使用说
该类型权限不仅需要在安装包中申请权限,还需要在应用动态运行时,通过发送弹窗的方式请求用户授权。在用户手动允许授权后,应用才会真正获取相应权限,从而成功访问操作目标对象。
比如说,在[权限定义列表](#权限定义列表)中,麦克风和摄像头对应的权限都是属于用户授权权限,列表中给出了详细的权限使用理由。
比如说,在[权限定义列表](permission-list.md)中,麦克风和摄像头对应的权限都是属于用户授权权限,列表中给出了详细的权限使用理由。
应用需要在应用商店的详情页面,向用户展示所申请的user_grant权限列表。
......@@ -173,132 +173,3 @@ ACL方式的工作流程可以参考[ACL方式使用说明](#ACL方式使用说
* 开发应用安装包时,需要修改应用的profile文件,在文件的"acl"字段声明目标的访问控制列表,并使用profile签名工具生成证书。具体签名流程可以查看页面[Hap包签名工具指导](hapsigntool-guidelines.md)
## 权限定义列表
以下给出当前系统定义的权限信息列表。
| 权限名 | 权限级别 | 授权方式 | ACL使能 | 权限说明 |
| -------------------------------------------------------- | ------------ | ------------ | ------- | ------------------------------------------------------------ |
| ohos.permission.USE_BLUETOOTH | normal | system_grant | TRUE | 允许应用查看蓝牙的配置。 |
| ohos.permission.DISCOVER_BLUETOOTH | normal | system_grant | TRUE | 允许应用配置本地蓝牙,查找远端设备且与之配对连接。 |
| ohos.permission.MANAGE_BLUETOOTH | system_basic | system_grant | TRUE | 允许应用配对蓝牙设备,并对设备的电话簿或消息进行访问。 |
| ohos.permission.INTERNET | normal | system_grant | TRUE | 允许使用Internet网络。 |
| ohos.permission.MODIFY_AUDIO_SETTINGS | normal | system_grant | TRUE | 允许应用修改音频设置。 |
| ohos.permission.ACCESS_NOTIFICATION_POLICY | normal | system_grant | FALSE | 在本设备上允许应用访问通知策略。 |
| ohos.permission.GET_TELEPHONY_STATE | system_basic | system_grant | TRUE | 允许应用读取电话信息。 |
| ohos.permission.REQUIRE_FORM | system_basic | system_grant | TRUE | 允许应用获取Ability Form。 |
| ohos.permission.GET_NETWORK_INFO | normal | system_grant | TRUE | 允许应用获取数据网络信息。 |
| ohos.permission.PLACE_CALL | system_basic | system_grant | TRUE | 允许应用直接拨打电话。 |
| ohos.permission.SET_NETWORK_INFO | normal | system_grant | TRUE | 允许应用配置数据网络。 |
| ohos.permission.REMOVE_CACHE_FILES | system_basic | system_grant | TRUE | 允许清理指定应用的缓存。 |
| ohos.permission.REBOOT | system_basic | system_grant | TRUE | 允许应用重启设备。 |
| ohos.permission.RUNNING_LOCK | normal | system_grant | TRUE | 允许应用获取运行锁,保证应用在后台的持续运行。 |
| ohos.permission.ENROLL_BIOMETRIC | system_core | system_grant | FALSE | 允许应用录入或删除生物特征数据。 |
| ohos.permission.ACCESS_BIOMETRIC | normal | system_grant | FALSE | 允许应用使用生物特征识别能力进行身份认证。 |
| ohos.permission.ACCESS_BIOMETRIC_INTERNAL | system_core | system_grant | FALSE | 允许应用申请或释放生物特征识别的资源。 |
| ohos.permission.RESET_BIOMETRIC_LOCKOUT | system_core | system_grant | FALSE | 允许应用重置生物特征识别的认证失败计数。 |
| ohos.permission.SET_TIME | system_basic | system_grant | TRUE | 允许应用修改系统时间。 |
| ohos.permission.SET_TIME_ZONE | system_basic | system_grant | TRUE | 允许应用修改系统时区。 |
| ohos.permission.DOWNLOAD_SESSION_MANAGER | system_core | system_grant | TRUE | 允许应用管理下载任务会话。 |
| ohos.permission.COMMONEVENT_STICKY | normal | system_grant | TRUE | 允许应用发布粘性公共事件。 |
| ohos.permission.SYSTEM_FLOAT_WINDOW | normal | system_grant | TRUE | 允许应用使用悬浮窗的能力。 |
| ohos.permission.POWER_MANAGER | system_core | system_grant | TRUE | 允许应用调用电源管理子系统的接口,休眠或者唤醒设备。 |
| ohos.permission.REFRESH_USER_ACTION | system_basic | system_grant | TRUE | 允许应用在收到用户事件时,重新计算超时时间。 |
| ohos.permission.POWER_OPTIMIZATION | system_basic | system_grant | TRUE | 允许系统应用设置省电模式、获取省电模式的配置信息并接收配置变化的通知。 |
| ohos.permission.REBOOT_RECOVERY | system_basic | system_grant | TRUE | 允许系统应用重启设备并进入恢复模式。 |
| ohos.permission.MANAGE_LOCAL_ACCOUNTS | system_basic | system_grant | TRUE | 允许应用管理本地用户账号。 |
| ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS | system_basic | system_grant | TRUE | 允许多个系统账号之间相互访问。 |
| ohos.permission.VIBRATE | normal | system_grant | TRUE | 允许应用控制马达振动。 |
| ohos.permission.CONNECT_IME_ABILITY | system_core | system_grant | TRUE | 允许绑定输入法Ability(InputMethodAbility)。 |
| ohos.permission.CONNECT_SCREEN_SAVER_ABILITY | system_core | system_grant | TRUE | 允许绑定屏保Ability(ScreenSaverAbility)。 |
| ohos.permission.READ_SCREEN_SAVER | system_basic | system_grant | TRUE | 允许应用查询屏保状态信息。 |
| ohos.permission.WRITE_SCREEN_SAVER | system_basic | system_grant | TRUE | 允许应用修改屏保状态信息。 |
| ohos.permission.SET_WALLPAPER | normal | system_grant | TRUE | 允许应用设置静态壁纸。 |
| ohos.permission.GET_WALLPAPER | system_basic | system_grant | TRUE | 允许应用读取壁纸文件。 |
| ohos.permission.CHANGE_ABILITY_ENABLED_STATE | system_basic | system_grant | TRUE | 允许改变应用或者组件的使能状态。 |
| ohos.permission.ACCESS_MISSIONS | system_basic | system_grant | TRUE | 允许应用访问任务栈信息。 |
| ohos.permission.CLEAN_BACKGROUND_PROCESSES | normal | system_grant | TRUE | 允许应用根据包名清理相关后台进程。 |
| ohos.permission.KEEP_BACKGROUND_RUNNING | normal | system_grant | TRUE | 允许Service Ability在后台持续运行。 |
| ohos.permission.UPDATE_CONFIGURATION | system_basic | system_grant | TRUE | 允许更新系统配置。 |
| ohos.permission.UPDATE_SYSTEM | system_basic | system_grant | TRUE | 允许调用升级接口。 |
| ohos.permission.FACTORY_RESET | system_basic | system_grant | TRUE | 允许调用回复出厂接口。 |
| ohos.permission.GRANT_SENSITIVE_PERMISSIONS | system_core | system_grant | TRUE | 允许应用为其他应用授予敏感权限。 |
| ohos.permission.REVOKE_SENSITIVE_PERMISSIONS | system_core | system_grant | TRUE | 允许应用撤销给其他应用授予的敏感信息。 |
| ohos.permission.GET_SENSITIVE_PERMISSIONS | system_core | system_grant | TRUE | 允许应用读取其他应用的敏感权限的状态。 |
| ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION | system_core | system_grant | TRUE | 允许应用跨用户对其他应用的属性进行设置。 |
| ohos.permission.LISTEN_BUNDLE_CHANGE | system_basic | system_grant | TRUE | 允许应用监听其他应用安装、更新、卸载状态的变化。 |
| ohos.permission.GET_BUNDLE_INFO | normal | system_grant | TRUE | 允许应用查询其他应用的信息。 |
| ohos.permission.ACCELEROMETER | normal | system_grant | TRUE | 允许应用读取加速度传感器的数据。 |
| ohos.permission.GYROSCOPE | normal | system_grant | TRUE | 允许应用读取陀螺仪传感器的数据。 |
| ohos.permission.GET_BUNDLE_INFO_PRIVILEGED | system_basic | system_grant | TRUE | 允许应用查询其他应用的信息。 |
| ohos.permission.INSTALL_BUNDLE | system_core | system_grant | TRUE | 允许应用安装、卸载其他应用。 |
| ohos.permission.MANAGE_SHORTCUTS | system_core | system_grant | TRUE | 允许应用查询其他应用的快捷方式信息、启动其他应用的快捷方式。 |
| ohos.permission.radio.ACCESS_FM_AM | system_core | system_grant | TRUE | 允许应用获取收音机相关服务。 |
| ohos.permission.SET_TELEPHONY_STATE | system_basic | system_grant | TRUE | 允许应用修改telephone的状态。 |
| ohos.permission.START_ABILIIES_FROM_BACKGROUND | system_basic | system_grant | TRUE | 允许应用在后台启动FA。 |
| ohos.permission.BUNDLE_ACTIVE_INFO | system_basic | system_grant | TRUE | 允许系统应用查询其他应用在前台或后台的运行时间。 |
| ohos.permission.START_INVISIBLE_ABILITY | system_core | system_grant | TRUE | 无论Ability是否可见,都允许应用进行调用。 |
| ohos.permission.sec.ACCESS_UDID | system_basic | system_grant | TRUE | 允许系统应用获取UDID |
| ohos.permission.LAUNCH_DATA_PRIVACY_CENTER | system_basic | system_grant | TRUE | 允许应用从其隐私声明页面跳转至"数据与隐私"页面。 |
| ohos.permission.MANAGE_MEDIA_RESOURCES | system_basic | system_grant | TRUE | 允许应用程序获取当前设备正在播放的媒体资源,并对其进行管理。 |
| ohos.permission.PUBLISH_AGENT_REMINDER | normal | system_grant | TRUE | 允许该应用使用后台代理提醒。 |
| ohos.permission.CONTROL_TASK_SYNC_ANIMATOR | system_core | system_grant | TRUE | 允许应用使用同步任务动画。 |
| ohos.permission.INPUT_MONITORING | system_core | system_grant | TRUE | 允许应用监听输入事件,仅系统签名应用可申请此权限。 |
| ohos.permission.MANAGE_MISSIONS | system_core | system_grant | TRUE | 允许用户管理元能力任务栈。 |
| ohos.permission.NOTIFICATION_CONTROLLER | system_core | system_grant | TRUE | 允许应用管理通知和订阅通知。 |
| ohos.permission.CONNECTIVITY_INTERNAL | system_basic | system_grant | TRUE | 允许应用程序获取网络相关的信息或修改网络相关设置。 |
| ohos.permission.SET_ABILITY_CONTROLLER | system_basic | system_grant | TRUE | 允许设置ability组件启动和停止控制权。 |
| ohos.permission.USE_USER_IDM | system_basic | system_grant | FALSE | 允许应用访问系统身份凭据信息。 |
| ohos.permission.MANAGE_USER_IDM | system_basic | system_grant | FALSE | 允许应用使用系统身份凭据管理能力进行口令、人脸、指纹等录入、修改、删除等操作。 |
| ohos.permission.ACCESS_BIOMETRIC | normal | system_grant | TRUE | 允许应用使用生物特征识别能力进行身份认证。 |
| ohos.permission.ACCESS_USER_AUTH_INTERNAL | system_basic | system_grant | FALSE | 允许应用使用系统身份认证能力进行用户身份认证或身份识别。 |
| ohos.permission.ACCESS_PIN_AUTH | system_basic | system_grant | FALSE | 允许应用使用口令输入接口,用于系统应用完成口令输入框绘制场景。 |
| ohos.permission.GET_RUNNING_INFO | system_basic | system_grant | TRUE | 允许应用获取运行态信息。 |
| ohos.permission.CLEAN_APPLICATION_DATA | system_basic | system_grant | TRUE | 允许应用清理应用数据。 |
| ohos.permission.RUNNING_STATE_OBSERVER | system_basic | system_grant | TRUE | 允许应用观察应用状态。 |
| ohos.permission.CAPTURE_SCREEN | system_core | system_grant | TRUE | 允许应用截取屏幕图像。 |
| ohos.permission.GET_WIFI_INFO | normal | system_grant | TRUE | 允许应用获取WLAN信息。 |
| ohos.permission.GET_WIFI_INFO_INTERNAL | system_core | system_grant | TRUE | 允许应用获取WLAN信息。 |
| ohos.permission.SET_WIFI_INFO | normal | system_grant | TRUE | 允许应用配置WLAN设备。 |
| ohos.permission.GET_WIFI_PEERS_MAC | system_core | system_grant | TRUE | 允许应用获取对端WLAN或者蓝牙设备的MAC地址。 |
| ohos.permission.GET_WIFI_LOCAL_MAC | system_basic | system_grant | TRUE | 允许应用获取本机WLAN或者蓝牙设备的MAC地址。 |
| ohos.permission.GET_WIFI_CONFIG | system_basic | system_grant | TRUE | 允许应用获取WLAN配置信息。 |
| ohos.permission.SET_WIFI_CONFIG | system_basic | system_grant | TRUE | 允许应用配置WLAN信息。 |
| ohos.permission.MANAGE_WIFI_CONNECTION | system_core | system_grant | TRUE | 允许应用管理WLAN连接。 |
| ohos.permission.MANAGE_WIFI_HOTSPOT | system_core | system_grant | TRUE | 允许应用开启或者关闭WLAN热点。 |
| ohos.permission.GET_ALL_APP_ACCOUNTS | system_core | system_grant | FALSE | 允许应用获取所有应用账户信息。 |
| ohos.permission.MANAGE_SECURE_SETTINGS | system_basic | system_grant | TRUE | 允许应用修改安全类系统设置。 |
| ohos.permission.READ_DFX_SYSEVENT | system_basic | system_grant | FALSE | 允许获取所有应用账号信息。 |
| ohos.permission.MANAGE_ADMIN | system_core | system_grant | TRUE | 允许应用激活设备管理员应用。 |
| ohos.permission.EDM_MANAGE_DATETIME | normal | system_grant | FALSE | 允许设备管理员应用设置系统时间。 |
| ohos.permission.NFC_TAG | normal | system_grant | FALSE | 允许应用读取Tag卡片。 |
| ohos.permission.NFC_CARD_EMULATION | normal | system_grant | FALSE | 允许应用实现卡模拟功能。 |
| ohos.permission.PERMISSION_USED_STATS | system_core | system_grant | TRUE | 允许系统应用访问权限使用记录。 |
| ohos.permission.NOTIFICATION_AGENT_CONTROLLER | system_core | system_grant | TRUE | 允许应用发送代理通知。 |
| ohos.permission.ANSWER_CALL | system_basic | user_grant | TRUE | 允许应用接听来电。 |
| ohos.permission.READ_CALENDAR | normal | user_grant | TRUE | 允许应用读取日历信息。 |
| ohos.permission.READ_CALL_LOG | system_basic | user_grant | TRUE | 允许应用读取通话记录。 |
| ohos.permission.READ_CELL_MESSAGES | system_basic | user_grant | TRUE | 允许应用读取设备收到的小区广播信息。 |
| ohos.permission.READ_CONTACTS | system_basic | user_grant | TRUE | 允许应用读取联系人数据。 |
| ohos.permission.READ_MESSAGES | system_basic | user_grant | TRUE | 允许应用读取短信息。 |
| ohos.permission.RECEIVE_MMS | system_basic | user_grant | TRUE | 允许应用接收和处理彩信。 |
| ohos.permission.RECEIVE_SMS | system_basic | user_grant | TRUE | 允许应用接收和处理短信。 |
| ohos.permission.RECEIVE_WAP_MESSAGES | system_basic | user_grant | TRUE | 允许应用接收和处理WAP消息。 |
| ohos.permission.MICROPHONE | normal | user_grant | TRUE | 允许应用使用麦克风。 |
| ohos.permission.SEND_MESSAGES | system_basic | user_grant | TRUE | 允许应用发送短信。 |
| ohos.permission.WRITE_CALENDAR | normal | user_grant | TRUE | 允许应用添加、移除或更改日历活动。 |
| ohos.permission.WRITE_CALL_LOG | system_basic | user_grant | TRUE | 允许应用添加、移除或更改通话记录。 |
| ohos.permission.WRITE_CONTACTS | system_basic | user_grant | TRUE | 允许应用添加、移除或更改联系人数据。 |
| ohos.permission.DISTRIBUTED_DATASYNC | normal | user_grant | TRUE | 允许不同设备间的数据交换。 |
| ohos.permission.MANAGE_VOICEMAIL | system_basic | user_grant | TRUE | 允许应用在语音信箱中留言 |
| ohos.permission.LOCATION_IN_BACKGROUND | normal | user_grant | FALSE | 允许应用在后台运行时获取设备位置信息。 |
| ohos.permission.LOCATION | normal | user_grant | TRUE | 允许应用获取设备位置信息。 |
| ohos.permission.MEDIA_LOCATION | normal | user_grant | TRUE | 允许应用访问用户媒体文件中的地理位置信息。 |
| ohos.permission.CAMERA | normal | user_grant | TRUE | 允许应用使用相机拍摄照片和录制视频。 |
| ohos.permission.READ_MEDIA | normal | user_grant | TRUE | 允许应用读取用户外部存储中的媒体文件信息。 |
| ohos.permission.WRITE_MEDIA | normal | user_grant | TRUE | 允许应用读写用户外部存储中的媒体文件信息。 |
| ohos.permission.ACTIVITY_MOTION | normal | user_grant | TRUE | 允许应用读取用户当前的运动状态。 |
| ohos.permission.READ_HEALTH_DATA | normal | user_grant | TRUE | 允许应用读取用户的健康数据。 |
| ohos.permission.GET_DEFAULT_APPLICATION | system_core | system_grant | TRUE | 允许应用查询默认应用。 |
| ohos.permission.SET_DEFAULT_APPLICATION | system_core | system_grant | TRUE | 允许应用设置、重置默认应用。 |
| ohos.permission.MANAGE_DISPOSED_APP_STATUS | system_core | system_grant | TRUE | 允许设置和查询应用的处置状态。 |
# Hap包签名工具指导
## 概述
### 功能简介
为了保证OpenHarmony应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。[developtools_hapsigner仓](https://gitee.com/openharmony/developtools_hapsigner)提供了签名工具的源码,包含密钥对生成、CSR文件生成、证书生成、Profile文件签名、Hap包签名等功能。
### 基本概念
Hap包签名工具支持本地签名需求的开发,为OpenHarmony应用提供完整性保护和来源管控机制,该签名工具基于PKI公钥证书的机制实现,在进行开发前,开发者应了解以下基本概念:
- 非对称密钥对:
非对称密钥算法是数据签名/验签的基础,应用签名工具实现了标准的非对称密钥对生成功能(支持的密钥对类型包括ECC P384/256、RSA2048/3072/4096)
- CSR:
CSR(Certificate Signing Request)证书签发请求是生成证书的前提,他包括证书的公钥、证书主题和私钥签名,在申请证书之前,需要先基于密钥对生成CSR,然后提交给CA签发证书。
- 证书:
OpenHarmony采用RFC5280标准构建X509证书信任体系。用于应用签名的OpenHarmony证书共有三级,分为:根CA证书、中间CA证书、最终实体证书,其中最终实体证书分为应用签名证书和profile签名证书。应用签名证书表示应用开发者的身份,可保证系统上安装的应用来源可追溯,profile签名证书实现对profile文件的签名进行验签,保证profile文件的完整性。
- HAP包:
HAP(OpenHarmony Ability Package)是Ability的部署包,OpenHarmony应用代码围绕Ability组件展开,它是由一个或者多个Ability组成。
- profile文件:
hap包中的描述文件,该描述文件描述了已授权的证书权限和设备ID信息等信息。
### 约束与限制
- Hap包签名工具基于Java语言开发,需要Java8以上Java环境运行。
- 一键签名等脚本文件基于Python语言开发,使用需配置环境python3.5及以上。
## 编译构建
1. 该工具基于Gradle 7.1编译构建,请确认环境已安装配置Gradle环境,并且版本高于或等于7.1。
```shell
gradle -v
gradle -v
```
2. 下载代码,命令行打开文件目录至developtools_hapsigner/hapsigntool,执行命令进行编译打包。
```shell
gradle build
gradle build
```
```shell
gradle jar
gradle jar
```
3. 编译后得到二进制文件,目录为: ./hap_sign_tool/build/libs/hap-sign-tool.jar。
## 用户指导
## 开发指导
### 场景介绍
......@@ -66,24 +29,27 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
按照有无应用签名证书可分为以下两种场景:
1. 无应用签名证书场景:
开发者使用该工具对Hap包签名时,需按照签名步骤从第一步生成应用签名证书密钥对依次完成应用签名证书生成、profile文件签名、应用签名流程。
开发者使用该工具对Hap包签名时,需按照签名步骤从第一步生成应用签名证书密钥对依次完成应用签名证书生成、profile文件签名、应用签名流程。
2. 有应用签名证书场景:
开发者可直接从签名步骤第三步对profile文件进行签名开始开发 ,使用应用签名证书和包含对应密钥的本地密钥库文件对应用进行签名。
### 说明
开发者可直接从签名步骤第三步对profile文件进行签名开始开发 ,使用应用签名证书和包含对应密钥的本地密钥库文件对应用进行签名。
#### 命令说明
1.输出命令帮助信息
### 命令说明
-help # 输出命令帮助信息(不输入参数默认输出命令帮助信息)
1. 输出命令帮助信息。
2.输出版本信息
```
-help # 输出命令帮助信息(不输入参数默认输出命令帮助信息)
```
-version # 输出版本信息
2. 输出版本信息。
```
-version # 输出版本信息
```
3.生成密钥对
3. 生成密钥对。
```
generate-keypair : 生成密钥对
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
......@@ -91,10 +57,11 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
├── -keySize # 密钥长度,必填项,RSA算法的长度为2048/3072/4096,ECC算法的长度NIST-P-256/NIST-P-384
├── -keystoreFile # 密钥库文件,必填项,JKS或P12格式
├── -keystorePwd # 密钥库口令,可选项
```
4.生成证书签名请求
generate-csr : 生成证书签名请求
4. 生成证书签名请求。
```
generate-csr : 生成证书签名请求
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -subject # 证书主题,必填项
......@@ -102,10 +69,12 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
├── -keystoreFile # 密钥库文件,必填项,JKS或P12格式
├── -keystorePwd # 密钥库口令,可选项
├── -outFile # 输出文件,可选项,如果不填,则直接输出到控制台
```
5. 生成根CA/中间CA证书。
5.生成根CA/中间CA证书
generate-ca : 生成根CA/中间CA证书,如果密钥不存在,一起生成密钥
```
generate-ca : 生成根CA/中间CA证书,如果密钥不存在,一起生成密钥
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -keyAlg # 密钥算法,必填项,包括RSA/ECC
......@@ -122,10 +91,12 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
├── -issuerKeystoreFile # 签发者密钥库文件,可选项,JKS或P12格式
├── -issuerKeystorePwd # 签发者密钥库口令,可选项
├── -outFile # 输出文件,可选项,如果不填,则直接输出到控制台
```
6.生成应用调试/发布证书
6. 生成应用调试/发布证书。
generate-app-cert : 生成应用调试/发布证书
```
generate-app-cert : 生成应用调试/发布证书
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -issuer # 颁发者的主题,必填项
......@@ -142,10 +113,12 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
├── -rootCaCertFile # outForm为certChain时必填,根CA证书文件
├── -subCaCertFile # outForm为certChain时必填,中间CA证书文件
├── -outFile # 输出证书文件(证书或证书链),可选项,如果不填,则直接输出到控制台
```
7.生成profile调试/发布证书
7. 生成profile调试/发布证书。
generate-profile-cert : 生成profile调试/发布证书
```
generate-profile-cert : 生成profile调试/发布证书
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -issuer # 颁发者的主题,必填项
......@@ -162,62 +135,70 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
├── -rootCaCertFile # outForm为certChain时必填,根CA证书文件
├── -subCaCertFile # outForm为certChain时必填,中间CA证书文件
├── -outFile # 输出证书文件(证书或证书链),可选项,如果不填,则直接输出到控制台
8.通用证书生成,可以生成自定义证书
generate-cert : 通用证书生成,可以生成自定义证书
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -issuer # 颁发者的主题,必填项
├── -issuerKeyAlias # 颁发者的密钥别名,必填项
├── -issuerKeyPwd # 颁发者的密钥口令,可选项
├── -subject # 证书主题,必填项
├── -validity # 证书有效期,可选项,默认为1095天
├── -keyUsage # 密钥用法,必选项,包括digitalSignature, nonRepudiation, keyEncipherment,
├ dataEncipherment, keyAgreement, certificateSignature, crlSignature,
├ encipherOnly和decipherOnly,如果证书包括多个密钥用法,用逗号分隔
├── -keyUsageCritical # keyUsage是否为关键项,可选项,默认为是
├── -extKeyUsage # 扩展密钥用法,可选项,包括clientAuthentication,serverAuthentication,
├ codeSignature,emailProtection,smartCardLogin,timestamp,ocspSignature
├── -extKeyUsageCritical # extKeyUsage是否为关键项,可选项,默认为否
├── -signAlg # 签名算法,必填项,包括SHA256withRSA/SHA384withRSA/SHA256withECDSA/SHA384withECDSA
├── -basicConstraints # 是否包含basicConstraints,可选项,默认为否
├── -basicConstraintsCritical # basicConstraints是否包含为关键项,可选项,默认为否
├── -basicConstraintsCa # 是否为CA,可选项,默认为否
├── -basicConstraintsPathLen # 路径长度,可选项,默认为0
├── -issuerKeystoreFile # 签发者密钥库文件,可选项,JKS或P12格式
├── -issuerKeystorePwd # 签发者密钥库口令,可选项
├── -keystoreFile # 密钥库文件,必填项,JKS或P12格式
├── -keystorePwd # 密钥库口令,可选项
├── -outFile # 输出证书文件,可选项,如果不填,则直接输出到控制台
9.ProvisionProfile文件签名
sign-profile : ProvisionProfile文件签名
├── -mode # 签名模式,必填项,包括localSign,remoteSign
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -profileCertFile # Profile签名证书(证书链,顺序为最终实体证书-中间CA证书-根证书),必填项
├── -inFile # 输入原始的模板Profile文件,文件为json格式,所在目录为developtools_hapsigner/autosign/UnsgnedReleasedProfileTemplate.json,必填项
├── -signAlg # 签名算法,必填项,包括SHA256withECDSA / SHA384withECDSA
├── -keystoreFile # 密钥库文件,localSign模式时为必填项,JKS或P12格式
├── -keystorePwd # 密钥库口令,可选项
├── -outFile # 输出签名后的Provision Profile文件,p7b格式,必填项
10.ProvisionProfile文件验签
verify-profile : ProvisionProfile文件验签
├── -inFile # 已签名的Provision Profile文件,p7b格式,必填项
├── -outFil # 验证结果文件(包含验证结果和profile内容),json格式,可选项;如果不填,则直接输出到控制台
11.hap应用包签名
sign-app : hap应用包签名
```
8. 通用证书生成,可以生成自定义证书。
```
generate-cert : 通用证书生成,可以生成自定义证书
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -issuer # 颁发者的主题,必填项
├── -issuerKeyAlias # 颁发者的密钥别名,必填项
├── -issuerKeyPwd # 颁发者的密钥口令,可选项
├── -subject # 证书主题,必填项
├── -validity # 证书有效期,可选项,默认为1095天
├── -keyUsage # 密钥用法,必选项,包括digitalSignature, nonRepudiation, keyEncipherment,
├ dataEncipherment, keyAgreement, certificateSignature, crlSignature,
├ encipherOnly和decipherOnly,如果证书包括多个密钥用法,用逗号分隔
├── -keyUsageCritical # keyUsage是否为关键项,可选项,默认为是
├── -extKeyUsage # 扩展密钥用法,可选项,包括clientAuthentication,serverAuthentication,
├ codeSignature,emailProtection,smartCardLogin,timestamp,ocspSignature
├── -extKeyUsageCritical # extKeyUsage是否为关键项,可选项,默认为否
├── -signAlg # 签名算法,必填项,包括SHA256withRSA/SHA384withRSA/SHA256withECDSA/SHA384withECDSA
├── -basicConstraints # 是否包含basicConstraints,可选项,默认为否
├── -basicConstraintsCritical # basicConstraints是否包含为关键项,可选项,默认为否
├── -basicConstraintsCa # 是否为CA,可选项,默认为否
├── -basicConstraintsPathLen # 路径长度,可选项,默认为0
├── -issuerKeystoreFile # 签发者密钥库文件,可选项,JKS或P12格式
├── -issuerKeystorePwd # 签发者密钥库口令,可选项
├── -keystoreFile # 密钥库文件,必填项,JKS或P12格式
├── -keystorePwd # 密钥库口令,可选项
├── -outFile # 输出证书文件,可选项,如果不填,则直接输出到控制台
```
9. profile文件签名。
```
sign-profile : profile文件签名
├── -mode # 签名模式,必填项,包括localSign,remoteSign
├── -keyAlias # 密钥别名,必填项
├── -keyPwd # 密钥口令,可选项
├── -profileCertFile # Profile签名证书(证书链,顺序为最终实体证书-中间CA证书-根证书),必填项
├── -inFile # 输入原始的模板Profile文件,文件为json格式,所在目录为developtools_hapsigner/autosign/UnsgnedReleasedProfileTemplate.json,必填项
├── -signAlg # 签名算法,必填项,包括SHA256withECDSA / SHA384withECDSA
├── -keystoreFile # 密钥库文件,localSign模式时为必填项,JKS或P12格式
├── -keystorePwd # 密钥库口令,可选项
├── -outFile # 输出签名后的profile文件,p7b格式,必填项
```
10. profile文件验签。
```
verify-profile : profile文件验签
├── -inFile # 已签名的profile文件,p7b格式,必填项
├── -outFil # 验证结果文件(包含验证结果和profile内容),json格式,可选项;如果不填,则直接输出到控制台
```
11. hap应用包签名。
```
sign-app : hap应用包签名
├── -mode # 签名模式,必填项,包括localSign,remoteSign,remoteResign
├── -keyAlias # 密钥别名,必填项
├──-keyPwd # 密钥口令,可选项
├── -appCertFile # 应用签名证书文件(证书链,顺序为最终实体证书-中间CA证书-根证书),必填项
├── -profileFile # 签名后的Provision Profile文件名,p7b格式,必填项
├── -profileFile # 签名后的profile文件名,p7b格式,必填项
├── -profileSigned # 指示profile文件是否带有签名,1表示有签名,0表示没有签名,默认为1。可选项
├── -inForm # 输入的原始文件的格式,zip格式或bin格式,默认zip格式,可选项
├── -inFile # 输入的原始APP包文件,hap格式或bin格式,必填项
......@@ -225,13 +206,17 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
├── -keystoreFile # 密钥库文件,localSign模式时为必填项,JKS或P12格式
├── -keystorePwd # 密钥库口令,可选项
├── -outFile # 输出签名后的包文件,必填项
```
12.hap应用包文件验签
12. hap应用包文件验签。
```
verify-app : hap应用包文件验签
├── -inFile # 已签名的应用包文件,hap格式或bin格式,必填项
├── -outCertchain # 签名的证书链文件,必填项
├── -outProfile # 应用包中的profile文件,必填项
├── -inFile # 已签名的应用包文件,hap格式或bin格式,必填项
├── -outCertchain # 签名的证书链文件,必填项
├── -outProfile # 应用包中的profile文件,必填项
```
### 签名步骤
对hap包签名的完整步骤为:
......@@ -242,172 +227,176 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含
> **注意事项:** <br/>
1.步骤一中的密钥对算法推荐使用ECC,出于安全性考虑,应用签名暂不使用RSA算法;<br/>
2.建议将待签名hap包、profile文件、密钥库文件OpenHarmony.p12、根CA证书、中间CA证书、签名工具放在同一个目录下,方便操作。在[**developtools_hapsigner/autosign/result**](https://gitee.com/openharmony/developtools_hapsigner/tree/master/autosign/result)路径下,有如下文件:<br/>- OpenHarmony密钥库文件**OpenHarmony.p12**<br/>- 根CA证书**rootCA.cer**<br/>- 中间CA证书**subCA.cer**<br/>- profile签名证书**OpenHarmonyProfileRelease.pem**
**1.生成应用签名证书密钥对**
调用密钥对生成接口,生成签名密钥并保存到密钥库。
命令实例:
```shell
java -jar hap-sign-tool.jar generate-keypair -keyAlias "oh-app1-key-v1" -keyAlg "ECC" -keySize "NIST-P-256" -keystoreFile "OpenHarmony.p12" -keyPwd "123456" -keystorePwd "123456"
```
> ![icon-note.gif](../public_sys-resources/icon-note.gif) **说明:**请记录下**keyAlias、keyStorePwd**和**keyPwd**的值,在后续生成应用签名证书和对Hap包进行签名操作会使用到。
该命令的参数说明:
generate-keypair : 生成应用签名证书密钥对
├── -keyAlias #用于生成应用签名证书的密钥别名,存于OpenHarmony.p12密钥库文件中,该参数必填
├── -keyAlg #密钥算法,推荐使用ECC,该参数必填
├── -keySize #密钥长度,ECC算法的长度NIST-P-256/NIST-P-384,该参数必填
├── -keyStoreFile #密钥库文件,推荐使用提供的OpenHarmony.p12密钥库文件,该参数必填
├── -keyStorePwd #密钥库口令,OpenHarmony.p12口令默认为“123456”,必填项
├── -keyPwd #密钥口令,可选项,该参数不填默认生成的密钥对无口令
>
> 1. 步骤一中的密钥对算法推荐使用ECC,出于安全性考虑,应用签名暂不使用RSA算法。
> 2. 建议将待签名hap包、profile文件、密钥库文件OpenHarmony.p12、根CA证书、中间CA证书、签名工具放在同一个目录下,方便操作。在[**developtools_hapsigner/autosign/result**](https://gitee.com/openharmony/developtools_hapsigner/tree/master/autosign/result)路径下,有如下文件:<br/>- OpenHarmony密钥库文件**OpenHarmony.p12**<br/>- 根CA证书**rootCA.cer**<br/>- 中间CA证书**subCA.cer**<br/>- profile签名证书**OpenHarmonyProfileRelease.pem**
1. **生成应用签名证书密钥对**
调用密钥对生成接口,生成签名密钥并保存到密钥库。
命令实例:
```shell
java -jar hap-sign-tool.jar generate-keypair -keyAlias "oh-app1-key-v1" -keyAlg "ECC" -keySize "NIST-P-256" -keystoreFile "OpenHarmony.p12" -keyPwd "123456" -keystorePwd "123456"
```
> **说明:** 请记录下**keyAlias、keyStorePwd**和**keyPwd**的值,在后续生成应用 签名证书和对Hap包进行签名操作会使用到。
该命令的参数说明:
```
generate-keypair : 生成应用签名证书密钥对
├── -keyAlias #用于生成应用签名证书的密钥别名,存于OpenHarmony.p12密钥库文件中,该参数必填
├── -keyAlg #密钥算法,推荐使用ECC,该参数必填
├── -keySize #密钥长度,ECC算法的长度NIST-P-256/NIST-P-384,该参数必填
├── -keyStoreFile #密钥库文件,推荐使用提供的OpenHarmony.p12密钥库文件,该参数必填
├── -keyStorePwd #密钥库口令,OpenHarmony.p12口令默认为“123456”,必填项
├── -keyPwd #密钥口令,可选项,该参数不填默认生成的密钥对无口令
```
2. **生成应用签名证书**
调用应用签名证书生成接口,使用本地中间CA证书签发应用签名证书。
命令实例:
```shell
java -jar hap-sign-tool.jar generate-app-cert -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -issuer "C=CN,O=OpenHarmony,OU=OpenHarmony Team,CN= OpenHarmony Application CA" -issuerKeyAlias "openharmony application ca" -subject "C=CN,O=OpenHarmony,OU=OpenHarmony Team,CN=OpenHarmony Application Release" -keystoreFile "OpenHarmony.p12" -subCaCertFile "subCA.cer" -rootCaCertFile "rootCA.cer" -outForm "certChain" -outFile "app1.pem" -keyPwd "123456" -keystorePwd "123456" -issuerKeyPwd "123456" -validity "365"
```
该命令的参数说明:
```
generate-app-cert:生成应用签名证书
├── -keyAlias # 用于生成应用签名证书的密钥别名,请与第一步生成密钥对的密钥别名-keyAlias保持一致
├── -signAlg # 签名算法,必填项,包括 SHA256withECDSA / SHA384withECDSA
├── -issuer # 颁发者主题,填写已提供的中间CA证书主题,该参数必填且不能修改
├── -issuerKeyAlias # 颁发者密钥别名,填写中间CA证书密钥别名,该参数必填且不能修改
├── -subject # 证书主题,请参照命令实例中内容保证顺序不变,该参数必填
├── -issuerKeyPwd # 颁发者密钥口令,填写中间CA证书密钥口令,该参数必填,指定“123456”,不可修改
├── -keystoreFile # 密钥库文件,指定使用提供的OpenHarmony.p12密钥库文件,该参数必填且不可修改
├── -rootCaCertFile # 根CA证书文件,指定为已提供的根CA证书,该参数必填且不可修改
├── -subCaCertFile # 中间CA证书文件,指定为已提供的中间CA证书,该参数必填且不可修改
├── -outForm # 输出证书文件格式,推荐使用certChain
├── -outFile # 可选项,建议填写,不填则默认输出到控制台
├── -keyPwd # 密钥口令,可选项,为第一步生成的密钥对口令
├── -keystorePwd # 密钥库口令,默认为“123456”
├── -validity # 证书有效期,可选项,默认为3650天
```
3. **对profile文件进行签名**
调用profile文件签名接口,使用Profile签名密钥对profile文件进行签名。
命令实例:
```shell
java -jar hap-sign-tool.jar sign-profile -keyAlias "openharmony application profile release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "OpenHarmonyProfileRelease.pem" -inFile "UnsgnedReleasedProfileTemplate.json" -keystoreFile "OpenHarmony.p12" -outFile "app1-profile.p7b" -keyPwd "123456" -keystorePwd "123456"
```
该命令的参数说明:
```
sign-profile:签名profile文件
├── -keyAlias # 生成profile证书的密钥别名,该参数必填且不能修改
├── -signAlg # 签名算法,包括 SHA256withECDSA / SHA384withECDSA,该参数必填
├── -mode # 签名模式,目前仅支持localSign,该参数必填
├── -profileCertFile # Profile签名证书,指定已提供的profile证书文件,该参数必填且不可修改
├── -inFile # 输入原始的模板Profile文件,文件为json格式,所在目录为developtools_hapsigner/autosign/UnsgnedReleasedProfileTemplate.json,该参数必填
├── -keystoreFile # 密钥库文件,指定使用提供的OpenHarmony.p12密钥库文件,该参数必填且不可修改
├── -outFile # 输出签名后的profile文件,p7b格式,该参数必填
├── -keyPwd # 密钥口令,OpenHarmony.p12中的口令默认“123456”
├── -keystorePwd # 密钥库口令,OpenHarmony.p12口令默认为“123456”
```
4. **对Hap包进行签名**
调用Hap包签名接口,使用应用签名密钥为Hap包签名。
命令实例:
```shell
java -jar hap-sign-tool.jar sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "app1.pem" -profileFile "app1-profile.p7b" -inFile "app1-unsigned.zip" -keystoreFile "OpenHarmony.p12" -outFile "app1-signed.hap" -keyPwd "123456" -keystorePwd "123456"
```
> **说明**:以下参数说明默认为无应用签名证书场景,当开发场景为有应用签名证书场景时,下列参数需要修改:
> -keyAlias:密钥别名,填写已有应用签名证书对应的密钥别名,参数必填。
> -appCertFile:应用签名证书,填写已有的应用签名证书,参数必填。
> -keystoreFile:密钥库文件,填写已有应用签名证书对应的密钥库文件,参数必填。
> -keyPwd:密钥口令,填写密钥库文件中对应密钥的口令。
> -keystorePwd:密钥库口令,填写密钥库文件的密钥口令。
该命令的参数说明:
```
sign-app:签名Hap包
├── -keyAlias # 密钥别名,为第一步生成的密钥信息别名,该参数必填
├── -signAlg # 签名算法,包括 SHA256withECDSA / SHA384withECDSA,该参数必填
├── -mode # 签名模式,目前仅支持localSign,该参数必填
├── -appCertFile # 应用签名证书(证书链,顺序为最终实体证书-中间CA证书-根证书),填写第二步生成的应用签名证书,该参数必填
├── -profileFile # 签名后的profile文件,p7b格式,填写第三步中生成的profile文件,必填项
├── -inFile # 输入原始APP包文件,该参数必填
├── -keystoreFile # 密钥库文件,请与步骤一中密钥库文件保持一致,该参数必填且不可修改
├── -outFile # 输出签名后的包文件,必填项
├── -keyPwd # 密钥口令,与第一步生成的密钥对口令保持一致
├── -keystorePwd # 密钥库口令,与第一步的密钥库口令保持一致
```
**2.生成应用签名证书**
调用应用签名证书生成接口,使用本地中间CA证书签发应用签名证书。
命令实例:
```shell
java -jar hap-sign-tool.jar generate-app-cert -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -issuer "C=CN,O=OpenHarmony,OU=OpenHarmony Team,CN= OpenHarmony Application CA" -issuerKeyAlias "openharmony application ca" -subject "C=CN,O=OpenHarmony,OU=OpenHarmony Team,CN=OpenHarmony Application Release" -keystoreFile "OpenHarmony.p12" -subCaCertFile "subCA.cer" -rootCaCertFile "rootCA.cer" -outForm "certChain" -outFile "app1.pem" -keyPwd "123456" -keystorePwd "123456" -issuerKeyPwd "123456" -validity "365"
```
该命令的参数说明:
generate-app-cert:生成应用签名证书
├── -keyAlias # 用于生成应用签名证书的密钥别名,请与第一步生成密钥对的密钥别名-keyAlias保持一致
├── -signAlg # 签名算法,必填项,包括 SHA256withECDSA / SHA384withECDSA
├── -issuer # 颁发者主题,填写已提供的中间CA证书主题,该参数必填且不能修改
├── -issuerKeyAlias # 颁发者密钥别名,填写中间CA证书密钥别名,该参数必填且不能修改
├── -subject # 证书主题,请参照命令实例中内容保证顺序不变,该参数必填
├── -issuerKeyPwd # 颁发者密钥口令,填写中间CA证书密钥口令,该参数必填,指定“123456”,不可修改
├── -keystoreFile # 密钥库文件,指定使用提供的OpenHarmony.p12密钥库文件,该参数必填且不可修改
├── -rootCaCertFile # 根CA证书文件,指定为已提供的根CA证书,该参数必填且不可修改
├── -subCaCertFile # 中间CA证书文件,指定为已提供的中间CA证书,该参数必填且不可修改
├── -outForm # 输出证书文件格式,推荐使用certChain
├── -outFile # 可选项,建议填写,不填则默认输出到控制台
├── -keyPwd # 密钥口令,可选项,为第一步生成的密钥对口令
├── -keystorePwd # 密钥库口令,默认为“123456”
├── -validity # 证书有效期,可选项,默认为3650天
<br/>
**3.对profile文件进行签名**
调用Profile文件签名接口,使用Profile签名密钥对Profile文件进行签名。
命令实例:
```shell
java -jar hap-sign-tool.jar sign-profile -keyAlias "openharmony application profile release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "OpenHarmonyProfileRelease.pem" -inFile "UnsgnedReleasedProfileTemplate.json" -keystoreFile "OpenHarmony.p12" -outFile "app1-profile.p7b" -keyPwd "123456" -keystorePwd "123456"
```
该命令的参数说明:
sign-profile:签名profile文件
├── -keyAlias # 生成profile证书的密钥别名,该参数必填且不能修改
├── -signAlg # 签名算法,包括 SHA256withECDSA / SHA384withECDSA,该参数必填
├── -mode # 签名模式,目前仅支持localSign,该参数必填
├── -profileCertFile # Profile签名证书,指定已提供的profile证书文件,该参数必填且不可修改
├── -inFile # 输入原始的模板Profile文件,文件为json格式,所在目录为developtools_hapsigner/autosign/UnsgnedReleasedProfileTemplate.json,该参数必填
├── -keystoreFile # 密钥库文件,指定使用提供的OpenHarmony.p12密钥库文件,该参数必填且不可修改
├── -outFile # 输出签名后的Provision Profile文件,p7b格式,该参数必填
├── -keyPwd # 密钥口令,OpenHarmony.p12中的口令默认“123456”
├── -keystorePwd # 密钥库口令,OpenHarmony.p12口令默认为“123456”
<br/>
**4.对Hap包进行签名**
调用Hap包签名接口,使用应用签名密钥为Hap包签名。
命令实例:
```shell
java -jar hap-sign-tool.jar sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "app1.pem" -profileFile "app1-profile.p7b" -inFile "app1-unsigned.zip" -keystoreFile "OpenHarmony.p12" -outFile "app1-signed.hap" -keyPwd "123456" -keystorePwd "123456"
```
> ![icon-note.gif](../public_sys-resources/icon-note.gif) **说明**:以下参数说明默认为无应用签名证书场景,当开发场景为有应用签名证书场景时,下列参数需要修改:<br/>
-keyAlias:密钥别名,填写已有应用签名证书对应的密钥别名,参数必填;<br/>
-appCertFile:应用签名证书,填写已有的应用签名证书,参数必填;<br/>
-keystoreFile:密钥库文件,填写已有应用签名证书对应的密钥库文件,参数必填;<br/>
-keyPwd:密钥口令,填写密钥库文件中对应密钥的口令;<br/>
-keystorePwd:密钥库口令,填写密钥库文件的密钥口令。<br/>
该命令的参数说明:
sign-app:签名Hap包
├──-keyAlias # 密钥别名,为第一步生成的密钥信息别名,该参数必填
├──-signAlg # 签名算法,包括 SHA256withECDSA / SHA384withECDSA,该参数必填
├── -mode # 签名模式,目前仅支持localSign,该参数必填
├── -appCertFile # 应用签名证书(证书链,顺序为最终实体证书-中间CA证书-根证书),填写第二步生成的应用签名证书,该参数必填
├── -profileFile # 签名后的Provision Profile文件,p7b格式,填写第三步中生成的profile文件,必填项
├── -inFile # 输入原始APP包文件,该参数必填
├── -keystoreFile # 密钥库文件,请与步骤一中密钥库文件保持一致,该参数必填且不可修改
├── -outFile # 输出签名后的包文件,必填项
├── -keyPwd # 密钥口令,与第一步生成的密钥对口令保持一致
├── -keystorePwd # 密钥库口令,与第一步的密钥库口令保持一致
## 常见问题
**1.执行第二步生成应用签名证书命令时,控制台打印结果,无文件输出**
- **现象描述**
生成证书时,只在控制台打印证书内容,无对应文件输出。
- **可能原因**
outFile参数中路径不正确 和 '-outFile'中的'-'非英文格式。
- **解决办法**
1. 执行第二步生成应用签名证书命令时,控制台打印结果,无文件输出。
检查并修正outFile参数为正确路径,'-outFile'中的'-'为英文格式
- **现象描述**
**2.执行第三步对profile文件进行签名时,提示签名失败**
生成证书时,只在控制台打印证书内容,无对应文件输出。
- **现象描述**
- **可能原因**
outFile参数中路径不正确 和 '-outFile'中的'-'非英文格式。
- **解决办法**
检查并修正outFile参数为正确路径,'-outFile'中的'-'为英文格式
现象分为以下几种:
2. 执行第三步对profile文件进行签名时,提示签名失败。
(1).执行命令后提示 "SIGN_ERROR, code: 107. Details: Failed to verify signature: Wrong key usage".
- **现象描述**
(2).执行命令后提示 "NOT_SUPPORT_ERROR, code: 105. Details: Profile cert 'result\profile1.pem' must a cert chain".
现象分为以下几种:
(3).执行命令后提示 "VERIFY_ERROR, code: 108. Details: Failed to verify signature: unable to find valid certification path to requested target"
(1)执行命令后提示` "SIGN_ERROR, code: 107. Details: Failed to verify signature: Wrong key usage"`
(2)执行命令后提示 `"NOT_SUPPORT_ERROR, code: 105. Details: Profile cert 'result\profile1.pem' must a cert chain"`
- **可能原因**
(3)执行命令后提示` "VERIFY_ERROR, code: 108. Details: Failed to verify signature: unable to find valid certification path to requested target"`
对应现象描述的可能原因:
- **可能原因**
(1).profile签名证书(最终实体证书)证书链顺序不正确。
(1)profile签名证书(最终实体证书)证书链顺序不正确。
(2).profile签名证书(最终实体证书)不是证书链。
(2)profile签名证书(最终实体证书)不是证书链。
(3).证书主题顺序不正确 或者 生成应用签名证书时“-issuerKeyAlias”参数填写错误
(3)证书主题顺序不正确 或者 生成应用签名证书时“-issuerKeyAlias”参数填写错误。
- **解决办法**
- **解决办法**
(1).检查并修正证书链顺序,只能正序或反序,不可乱序。
(1)检查并修正证书链顺序,只能正序或反序,不可乱序。
(2).检查签名时的最终实体证书是否为证书链。
(2)检查签名时的最终实体证书是否为证书链。
(3).检查证书主题顺序是否正确,顺序须为C、O、OU、CN。
(3)检查证书主题顺序是否正确,顺序须为C、O、OU、CN。
**3.对Hap包进行签名时提示签名错误**
3. 对Hap包进行签名时提示签名错误。
- **现象描述**
- **现象描述**
执行命令后提示:NOT_SUPPORT_ERROR, code: 105. Details: SignAlg params is incorrect, signature algorithms include SHA256withECDSA,SHA384withECDSA
执行命令后提示:`NOT_SUPPORT_ERROR, code: 105. Details: SignAlg params is incorrect, signature algorithms include SHA256withECDSA,SHA384withECDSA`
- **可能原因**
- **可能原因**
签名算法不支持,signAlg参数填写错误
签名算法不支持,signAlg参数填写错误
- **解决办法**
- **解决办法**
最终实体证书密钥对推荐使用ECC生成,hap签名算法修改为ECC对应的SHA256withECDSA,SHA384withECDSA
最终实体证书密钥对推荐使用ECC生成,hap签名算法修改为ECC对应的SHA256withECDSA,SHA384withECDSA
# Hap包签名工具概述
## 功能简介
为了保证OpenHarmony应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。[developtools_hapsigner仓](https://gitee.com/openharmony/developtools_hapsigner)提供了签名工具的源码,包含密钥对生成、CSR文件生成、证书生成、Profile文件签名、Hap包签名等功能。
## 基本概念
Hap包签名工具支持本地签名需求的开发,为OpenHarmony应用提供完整性保护和来源管控机制,该签名工具基于PKI公钥证书的机制实现,在进行开发前,开发者应了解以下基本概念:
- 非对称密钥对:
非对称密钥算法是数据签名/验签的基础,应用签名工具实现了标准的非对称密钥对生成功能(支持的密钥对类型包括ECC P384/256、RSA2048/3072/4096)
- CSR:
CSR(Certificate Signing Request)证书签发请求是生成证书的前提,他包括证书的公钥、证书主题和私钥签名,在申请证书之前,需要先基于密钥对生成CSR,然后提交给CA签发证书。
- 证书:
OpenHarmony采用RFC5280标准构建X509证书信任体系。用于应用签名的OpenHarmony证书共有三级,分为:根CA证书、中间CA证书、最终实体证书,其中最终实体证书分为应用签名证书和profile签名证书。应用签名证书表示应用开发者的身份,可保证系统上安装的应用来源可追溯,profile签名证书实现对profile文件的签名进行验签,保证profile文件的完整性。
- HAP包:
HAP(OpenHarmony Ability Package)是Ability的部署包,OpenHarmony应用代码围绕Ability组件展开,它是由一个或者多个Ability组成。
- profile文件:
[HarmonyAppProvision配置文件](../quick-start/app-provision-structure.md),hap包中的描述文件,该描述文件描述了已授权的证书权限和设备ID信息等信息。
## 约束与限制
- Hap包签名工具基于Java语言开发,需要Java8以上Java环境运行。
- 一键签名等脚本文件基于Python语言开发,使用需配置环境python3.5及以上。
# 权限定义列表
以下给出当前系统定义的权限信息列表。
权限级别、授权方式、ACL使能的说明,请参考[访问控制开发概述](accesstoken-overview.md)。权限的使用示例请参考[访问控制开发指导](accesstoken-guidelines.md)
| 权限名 | 权限级别 | 授权方式 | ACL使能 | 权限说明 |
| -------------------------------------------------------- | ------------ | ------------ | ------- | ------------------------------------------------------------ |
| ohos.permission.USE_BLUETOOTH | normal | system_grant | TRUE | 允许应用查看蓝牙的配置。 |
| ohos.permission.DISCOVER_BLUETOOTH | normal | system_grant | TRUE | 允许应用配置本地蓝牙,查找远端设备且与之配对连接。 |
| ohos.permission.MANAGE_BLUETOOTH | system_basic | system_grant | TRUE | 允许应用配对蓝牙设备,并对设备的电话簿或消息进行访问。 |
| ohos.permission.INTERNET | normal | system_grant | TRUE | 允许使用Internet网络。 |
| ohos.permission.MODIFY_AUDIO_SETTINGS | normal | system_grant | TRUE | 允许应用修改音频设置。 |
| ohos.permission.ACCESS_NOTIFICATION_POLICY | normal | system_grant | FALSE | 在本设备上允许应用访问通知策略。 |
| ohos.permission.GET_TELEPHONY_STATE | system_basic | system_grant | TRUE | 允许应用读取电话信息。 |
| ohos.permission.REQUIRE_FORM | system_basic | system_grant | TRUE | 允许应用获取Ability Form。 |
| ohos.permission.GET_NETWORK_INFO | normal | system_grant | TRUE | 允许应用获取数据网络信息。 |
| ohos.permission.PLACE_CALL | system_basic | system_grant | TRUE | 允许应用直接拨打电话。 |
| ohos.permission.SET_NETWORK_INFO | normal | system_grant | TRUE | 允许应用配置数据网络。 |
| ohos.permission.REMOVE_CACHE_FILES | system_basic | system_grant | TRUE | 允许清理指定应用的缓存。 |
| ohos.permission.REBOOT | system_basic | system_grant | TRUE | 允许应用重启设备。 |
| ohos.permission.RUNNING_LOCK | normal | system_grant | TRUE | 允许应用获取运行锁,保证应用在后台的持续运行。 |
| ohos.permission.ENROLL_BIOMETRIC | system_core | system_grant | FALSE | 允许应用录入或删除生物特征数据。 |
| ohos.permission.ACCESS_BIOMETRIC | normal | system_grant | FALSE | 允许应用使用生物特征识别能力进行身份认证。 |
| ohos.permission.ACCESS_BIOMETRIC_INTERNAL | system_core | system_grant | FALSE | 允许应用申请或释放生物特征识别的资源。 |
| ohos.permission.RESET_BIOMETRIC_LOCKOUT | system_core | system_grant | FALSE | 允许应用重置生物特征识别的认证失败计数。 |
| ohos.permission.SET_TIME | system_basic | system_grant | TRUE | 允许应用修改系统时间。 |
| ohos.permission.SET_TIME_ZONE | system_basic | system_grant | TRUE | 允许应用修改系统时区。 |
| ohos.permission.DOWNLOAD_SESSION_MANAGER | system_core | system_grant | TRUE | 允许应用管理下载任务会话。 |
| ohos.permission.COMMONEVENT_STICKY | normal | system_grant | TRUE | 允许应用发布粘性公共事件。 |
| ohos.permission.SYSTEM_FLOAT_WINDOW | normal | system_grant | TRUE | 允许应用使用悬浮窗的能力。 |
| ohos.permission.POWER_MANAGER | system_core | system_grant | TRUE | 允许应用调用电源管理子系统的接口,休眠或者唤醒设备。 |
| ohos.permission.REFRESH_USER_ACTION | system_basic | system_grant | TRUE | 允许应用在收到用户事件时,重新计算超时时间。 |
| ohos.permission.POWER_OPTIMIZATION | system_basic | system_grant | TRUE | 允许系统应用设置省电模式、获取省电模式的配置信息并接收配置变化的通知。 |
| ohos.permission.REBOOT_RECOVERY | system_basic | system_grant | TRUE | 允许系统应用重启设备并进入恢复模式。 |
| ohos.permission.MANAGE_LOCAL_ACCOUNTS | system_basic | system_grant | TRUE | 允许应用管理本地用户账号。 |
| ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS | system_basic | system_grant | TRUE | 允许多个系统账号之间相互访问。 |
| ohos.permission.VIBRATE | normal | system_grant | TRUE | 允许应用控制马达振动。 |
| ohos.permission.CONNECT_IME_ABILITY | system_core | system_grant | TRUE | 允许绑定输入法Ability(InputMethodAbility)。 |
| ohos.permission.CONNECT_SCREEN_SAVER_ABILITY | system_core | system_grant | TRUE | 允许绑定屏保Ability(ScreenSaverAbility)。 |
| ohos.permission.READ_SCREEN_SAVER | system_basic | system_grant | TRUE | 允许应用查询屏保状态信息。 |
| ohos.permission.WRITE_SCREEN_SAVER | system_basic | system_grant | TRUE | 允许应用修改屏保状态信息。 |
| ohos.permission.SET_WALLPAPER | normal | system_grant | TRUE | 允许应用设置静态壁纸。 |
| ohos.permission.GET_WALLPAPER | system_basic | system_grant | TRUE | 允许应用读取壁纸文件。 |
| ohos.permission.CHANGE_ABILITY_ENABLED_STATE | system_basic | system_grant | TRUE | 允许改变应用或者组件的使能状态。 |
| ohos.permission.ACCESS_MISSIONS | system_basic | system_grant | TRUE | 允许应用访问任务栈信息。 |
| ohos.permission.CLEAN_BACKGROUND_PROCESSES | normal | system_grant | TRUE | 允许应用根据包名清理相关后台进程。 |
| ohos.permission.KEEP_BACKGROUND_RUNNING | normal | system_grant | TRUE | 允许Service Ability在后台持续运行。 |
| ohos.permission.UPDATE_CONFIGURATION | system_basic | system_grant | TRUE | 允许更新系统配置。 |
| ohos.permission.UPDATE_SYSTEM | system_basic | system_grant | TRUE | 允许调用升级接口。 |
| ohos.permission.FACTORY_RESET | system_basic | system_grant | TRUE | 允许调用回复出厂接口。 |
| ohos.permission.GRANT_SENSITIVE_PERMISSIONS | system_core | system_grant | TRUE | 允许应用为其他应用授予敏感权限。 |
| ohos.permission.REVOKE_SENSITIVE_PERMISSIONS | system_core | system_grant | TRUE | 允许应用撤销给其他应用授予的敏感信息。 |
| ohos.permission.GET_SENSITIVE_PERMISSIONS | system_core | system_grant | TRUE | 允许应用读取其他应用的敏感权限的状态。 |
| ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION | system_core | system_grant | TRUE | 允许应用跨用户对其他应用的属性进行设置。 |
| ohos.permission.LISTEN_BUNDLE_CHANGE | system_basic | system_grant | TRUE | 允许应用监听其他应用安装、更新、卸载状态的变化。 |
| ohos.permission.GET_BUNDLE_INFO | normal | system_grant | TRUE | 允许应用查询其他应用的信息。 |
| ohos.permission.ACCELEROMETER | normal | system_grant | TRUE | 允许应用读取加速度传感器的数据。 |
| ohos.permission.GYROSCOPE | normal | system_grant | TRUE | 允许应用读取陀螺仪传感器的数据。 |
| ohos.permission.GET_BUNDLE_INFO_PRIVILEGED | system_basic | system_grant | TRUE | 允许应用查询其他应用的信息。 |
| ohos.permission.INSTALL_BUNDLE | system_core | system_grant | TRUE | 允许应用安装、卸载其他应用。 |
| ohos.permission.MANAGE_SHORTCUTS | system_core | system_grant | TRUE | 允许应用查询其他应用的快捷方式信息、启动其他应用的快捷方式。 |
| ohos.permission.radio.ACCESS_FM_AM | system_core | system_grant | TRUE | 允许应用获取收音机相关服务。 |
| ohos.permission.SET_TELEPHONY_STATE | system_basic | system_grant | TRUE | 允许应用修改telephone的状态。 |
| ohos.permission.START_ABILIIES_FROM_BACKGROUND | system_basic | system_grant | TRUE | 允许应用在后台启动FA。 |
| ohos.permission.BUNDLE_ACTIVE_INFO | system_basic | system_grant | TRUE | 允许系统应用查询其他应用在前台或后台的运行时间。 |
| ohos.permission.START_INVISIBLE_ABILITY | system_core | system_grant | TRUE | 无论Ability是否可见,都允许应用进行调用。 |
| ohos.permission.sec.ACCESS_UDID | system_basic | system_grant | TRUE | 允许系统应用获取UDID。 |
| ohos.permission.LAUNCH_DATA_PRIVACY_CENTER | system_basic | system_grant | TRUE | 允许应用从其隐私声明页面跳转至"数据与隐私"页面。 |
| ohos.permission.MANAGE_MEDIA_RESOURCES | system_basic | system_grant | TRUE | 允许应用程序获取当前设备正在播放的媒体资源,并对其进行管理。 |
| ohos.permission.PUBLISH_AGENT_REMINDER | normal | system_grant | TRUE | 允许该应用使用后台代理提醒。 |
| ohos.permission.CONTROL_TASK_SYNC_ANIMATOR | system_core | system_grant | TRUE | 允许应用使用同步任务动画。 |
| ohos.permission.INPUT_MONITORING | system_core | system_grant | TRUE | 允许应用监听输入事件,仅系统签名应用可申请此权限。 |
| ohos.permission.MANAGE_MISSIONS | system_core | system_grant | TRUE | 允许用户管理元能力任务栈。 |
| ohos.permission.NOTIFICATION_CONTROLLER | system_core | system_grant | TRUE | 允许应用管理通知和订阅通知。 |
| ohos.permission.CONNECTIVITY_INTERNAL | system_basic | system_grant | TRUE | 允许应用程序获取网络相关的信息或修改网络相关设置。 |
| ohos.permission.SET_ABILITY_CONTROLLER | system_basic | system_grant | TRUE | 允许设置ability组件启动和停止控制权。 |
| ohos.permission.USE_USER_IDM | system_basic | system_grant | FALSE | 允许应用访问系统身份凭据信息。 |
| ohos.permission.MANAGE_USER_IDM | system_basic | system_grant | FALSE | 允许应用使用系统身份凭据管理能力进行口令、人脸、指纹等录入、修改、删除等操作。 |
| ohos.permission.ACCESS_BIOMETRIC | normal | system_grant | TRUE | 允许应用使用生物特征识别能力进行身份认证。 |
| ohos.permission.ACCESS_USER_AUTH_INTERNAL | system_basic | system_grant | FALSE | 允许应用使用系统身份认证能力进行用户身份认证或身份识别。 |
| ohos.permission.ACCESS_PIN_AUTH | system_basic | system_grant | FALSE | 允许应用使用口令输入接口,用于系统应用完成口令输入框绘制场景。 |
| ohos.permission.GET_RUNNING_INFO | system_basic | system_grant | TRUE | 允许应用获取运行态信息。 |
| ohos.permission.CLEAN_APPLICATION_DATA | system_basic | system_grant | TRUE | 允许应用清理应用数据。 |
| ohos.permission.RUNNING_STATE_OBSERVER | system_basic | system_grant | TRUE | 允许应用观察应用状态。 |
| ohos.permission.CAPTURE_SCREEN | system_core | system_grant | TRUE | 允许应用截取屏幕图像。 |
| ohos.permission.GET_WIFI_INFO | normal | system_grant | TRUE | 允许应用获取WLAN信息。 |
| ohos.permission.GET_WIFI_INFO_INTERNAL | system_core | system_grant | TRUE | 允许应用获取WLAN信息。 |
| ohos.permission.SET_WIFI_INFO | normal | system_grant | TRUE | 允许应用配置WLAN设备。 |
| ohos.permission.GET_WIFI_PEERS_MAC | system_core | system_grant | TRUE | 允许应用获取对端WLAN或者蓝牙设备的MAC地址。 |
| ohos.permission.GET_WIFI_LOCAL_MAC | system_basic | system_grant | TRUE | 允许应用获取本机WLAN或者蓝牙设备的MAC地址。 |
| ohos.permission.GET_WIFI_CONFIG | system_basic | system_grant | TRUE | 允许应用获取WLAN配置信息。 |
| ohos.permission.SET_WIFI_CONFIG | system_basic | system_grant | TRUE | 允许应用配置WLAN信息。 |
| ohos.permission.MANAGE_WIFI_CONNECTION | system_core | system_grant | TRUE | 允许应用管理WLAN连接。 |
| ohos.permission.MANAGE_WIFI_HOTSPOT | system_core | system_grant | TRUE | 允许应用开启或者关闭WLAN热点。 |
| ohos.permission.GET_ALL_APP_ACCOUNTS | system_core | system_grant | FALSE | 允许应用获取所有应用账户信息。 |
| ohos.permission.MANAGE_SECURE_SETTINGS | system_basic | system_grant | TRUE | 允许应用修改安全类系统设置。 |
| ohos.permission.READ_DFX_SYSEVENT | system_basic | system_grant | FALSE | 允许获取所有应用账号信息。 |
| ohos.permission.MANAGE_ADMIN | system_core | system_grant | TRUE | 允许应用激活设备管理员应用。 |
| ohos.permission.EDM_MANAGE_DATETIME | normal | system_grant | FALSE | 允许设备管理员应用设置系统时间。 |
| ohos.permission.NFC_TAG | normal | system_grant | FALSE | 允许应用读取Tag卡片。 |
| ohos.permission.NFC_CARD_EMULATION | normal | system_grant | FALSE | 允许应用实现卡模拟功能。 |
| ohos.permission.PERMISSION_USED_STATS | system_core | system_grant | TRUE | 允许系统应用访问权限使用记录。 |
| ohos.permission.NOTIFICATION_AGENT_CONTROLLER | system_core | system_grant | TRUE | 允许应用发送代理通知。 |
| ohos.permission.ANSWER_CALL | system_basic | user_grant | TRUE | 允许应用接听来电。 |
| ohos.permission.READ_CALENDAR | normal | user_grant | TRUE | 允许应用读取日历信息。 |
| ohos.permission.READ_CALL_LOG | system_basic | user_grant | TRUE | 允许应用读取通话记录。 |
| ohos.permission.READ_CELL_MESSAGES | system_basic | user_grant | TRUE | 允许应用读取设备收到的小区广播信息。 |
| ohos.permission.READ_CONTACTS | system_basic | user_grant | TRUE | 允许应用读取联系人数据。 |
| ohos.permission.READ_MESSAGES | system_basic | user_grant | TRUE | 允许应用读取短信息。 |
| ohos.permission.RECEIVE_MMS | system_basic | user_grant | TRUE | 允许应用接收和处理彩信。 |
| ohos.permission.RECEIVE_SMS | system_basic | user_grant | TRUE | 允许应用接收和处理短信。 |
| ohos.permission.RECEIVE_WAP_MESSAGES | system_basic | user_grant | TRUE | 允许应用接收和处理WAP消息。 |
| ohos.permission.MICROPHONE | normal | user_grant | TRUE | 允许应用使用麦克风。 |
| ohos.permission.SEND_MESSAGES | system_basic | user_grant | TRUE | 允许应用发送短信。 |
| ohos.permission.WRITE_CALENDAR | normal | user_grant | TRUE | 允许应用添加、移除或更改日历活动。 |
| ohos.permission.WRITE_CALL_LOG | system_basic | user_grant | TRUE | 允许应用添加、移除或更改通话记录。 |
| ohos.permission.WRITE_CONTACTS | system_basic | user_grant | TRUE | 允许应用添加、移除或更改联系人数据。 |
| ohos.permission.DISTRIBUTED_DATASYNC | normal | user_grant | TRUE | 允许不同设备间的数据交换。 |
| ohos.permission.MANAGE_VOICEMAIL | system_basic | user_grant | TRUE | 允许应用在语音信箱中留言 |
| ohos.permission.LOCATION_IN_BACKGROUND | normal | user_grant | FALSE | 允许应用在后台运行时获取设备位置信息。 |
| ohos.permission.LOCATION | normal | user_grant | TRUE | 允许应用获取设备位置信息。 |
| ohos.permission.MEDIA_LOCATION | normal | user_grant | TRUE | 允许应用访问用户媒体文件中的地理位置信息。 |
| ohos.permission.CAMERA | normal | user_grant | TRUE | 允许应用使用相机拍摄照片和录制视频。 |
| ohos.permission.READ_MEDIA | normal | user_grant | TRUE | 允许应用读取用户外部存储中的媒体文件信息。 |
| ohos.permission.WRITE_MEDIA | normal | user_grant | TRUE | 允许应用读写用户外部存储中的媒体文件信息。 |
| ohos.permission.ACTIVITY_MOTION | normal | user_grant | TRUE | 允许应用读取用户当前的运动状态。 |
| ohos.permission.READ_HEALTH_DATA | normal | user_grant | TRUE | 允许应用读取用户的健康数据。 |
| ohos.permission.GET_DEFAULT_APPLICATION | system_core | system_grant | TRUE | 允许应用查询默认应用。 |
| ohos.permission.SET_DEFAULT_APPLICATION | system_core | system_grant | TRUE | 允许应用设置、重置默认应用。 |
| ohos.permission.MANAGE_DISPOSED_APP_STATUS | system_core | system_grant | TRUE | 允许设置和查询应用的处置状态。 |
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册