> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 开发可信应用程序和客户端应用程序

你可以使用全局平台接口中的默认文件来开发和运行可信应用程序与客户端应用程序。可信应用程序在安全的可信执行环境（TEE）中运行，以保持代码和数据的完整性。而客户端应用程序则在普通操作系统中运行，使用 TEE 客户端 API 来执行安全服务。

此功能仅面向具有授权访问权限的许可用户，用于开发和执行可信应用程序与客户端应用程序。如果你拥有访问权限，请参阅 [Qualcomm Linux Security Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-80021-11A/develop.html)。

要开发提供基于硬件的认证、零接触设备配置以及芯片组功能管理的应用程序，请参阅 [Qualcomm Linux Wireless Edge Services Guide](https://docs.qualcomm.com/bundle/resource/topics/80-80021-11B/overview.html)。此功能仅面向具有授权访问权限的许可用户。

## **安全 API**

安全 API 提供了与 Linux 内核和设备硬件交互的能力。它们还支持可在可信执行环境中运行的各种软件服务。

### **用户空间 API**

用户空间 API 是 Linux 操作系统用于与内核交互的函数。

此功能仅面向具有授权访问权限的许可开发者。如果你拥有访问权限，请参阅 [Qualcomm Linux Security Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-80021-11A/user-space-apis.html)。

### **为 PKCS#11 公开的接口**

请参阅 [Cryptographic Token Interface Usage Guide](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html) 和 [Cryptographic Token Interface Base Specification](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html)。

### **内核 API**

内核 API 是允许 Qualcomm Linux 软件与设备硬件交互的函数。

### **加密 API**

`qcrypto.ko` 驱动位于设备上的 `/lib/modules/<version>/kernel/drivers/crypto/qce`。内核级和用户级 API 均可访问加密引擎。有关这些 API，请参阅内核加密文档：[Index of crypto documentation](https://www.kernel.org/doc/Documentation/crypto/)。

支持以下加密算法：

* RFC 4309（CCCM（AES））
* CCM（AES）
* Authenc（HMAC（SHA-256），CBC（AES））
* Authenc（HMAC（SHA-256），CBC（DES3\_EDE））
* Authenc（HMAC（SHA-256），CBC（DES））
* Authenc（HMAC（SHA-1），CBC（DES3\_EDE））
* Authenc（HMAC（SHA-1），CBC（DES））
* HMAC（SHA-256）
* HMAC（SHA-1）
* SHA-256
* SHA-1
* CBC（DES3\_EDE）
* ECB（DES3\_EDE）
* CBC（DES）
* ECB（DES）
* XTS（AES）
* CTR（AES）
* CBC（AES）
* ECB（AES）

有关 Qualcomm 加密核心的更多信息，请参阅[加密技术](./security-features#cryptography)。

有关更多信息，请参阅 [Kernel.org](http://Kernel.org)[ ➝ Crypto API](https://www.kernel.org/doc/html/v6.6/crypto/index.html)。

### **硬件随机数生成器 API**

Qualcomm Linux 通过 `qcom-rng` Linux 驱动支持真随机数生成器。由 `qcom-rng` 生成的随机数使用内核加密框架的随机数生成器 API。

在用户空间中，可通过 `/dev/hwrng` 访问随机数。有关硬件随机数生成器的更多信息，请参阅内核文档：[Linux support for random number generator in i8xx chipsets](https://www.kernel.org/doc/Documentation/hw_random.txt)。

有关 PRNG API，请参阅 [Qualcomm Linux Security Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-80021-11A/prng-apis.html)。此功能仅面向具有授权访问权限的许可开发者。

### **Qualcomm TEE API**

Qualcomm TEE 提供了一组为安全应用程序提供服务的 API。这些服务包括堆管理、日志记录、安全文件系统访问、监听器交互以及加密和哈希功能。

此功能仅面向具有授权访问权限的许可开发者。如果你拥有访问权限，请参阅 [Qualcomm Linux Security Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-80021-11A/trusted-execution-environment-apis.html)。

## **使用安全服务示例**

要运行安全服务，使用不同接口加载客户端应用程序和可信应用程序的示例代码和示例仅面向具有授权访问权限的许可用户。如果你拥有访问权限，请参阅 [Qualcomm Linux Security Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-80021-11A/examples.html)。

## **后续步骤**

* 要初始化并配置硬件以在 Linux 上安全运行，请参阅[验证安全配置](./verify-the-security-configurations-of-qualcomm-linux)。
* 要配置 Qualcomm TEE 以保护处理敏感数据并运行可信应用程序的设备，请参阅[配置安全服务](./configure)。
* 要定制内存和 SEPolicy，请参阅[定制安全服务](./customize-security-services)。
