Crypto-Engine
介绍crypto-engine使用方法
模块介绍
crypto-engine实现了硬件加密算法,对明文进行加密。
功能介绍
k1 crypto-engine(又称ce)通过硬件实现了(ecb/cbc/xts-)aes加密算法。
源码结构介绍
ce驱动代码在drivers/crypto/spacemit目录下:
drivers/crypto/spacemit
|--spacemit_ce_engine.c #ce驱动代码
|--spacemit-ce-glue.c #基于ce驱动实现的加密算法
|--spacemit_engine.h
crypto的内核框架层实现在内核crypto路径下,这里不做赘述
关键特性
特性
支持ecb/cbc/xts模式的aes加密算法
性能参数
纯硬件性能可达500MB/s 通过内核实现的加密流程性能可达280MB/s(128k以上大小的数据)
测试方法 openssl speed工具,openssl工具代码最大支持16k大小数据,可二次开发改为128k
openssl speed -elapsed -async_jobs 1 -engine afalg -evp aes-128-cbc -multi 1
配置介绍
主要包括驱动使能配置和dts配置
CONFIG配置
CONFIG_CRYPTO 此为内核平台crypto框架提供支持,支持k1 ce驱动情况下,应为Y
CONFIG_CRYPTO=y
CONFIG_SPACEMIT_REE_AES=y
CONFIG_SPACEMIT_REE_ENGINE=y
dts配置
ce没有输入输出信号,dts中配置时钟复位资源即可
dtsi配置示例
dtsi中配置ce控制器基地址和时钟复位资源,正常情况无需改动
spacemit_crypto_engine@d8600000 {
compatible = "spacemit,crypto_engine";
spacemit-crypto-engine-0 = <0xd8600000 0x00100000>;
interrupt-parent = <&intc>;
interrupts = <113>;
num-engines = <1>;
clocks = <&ccu CLK_AES>;
resets = <&reset RESET_AES>;
interconnects = <&dram_range5>;
interconnect-names = "dma-mem";
status = "okay";
};