8.2.4. 测试指南
CE 的测试主要覆盖以下几个要点:
驱动所实现的所有算法
不同数据长度的处理
输入输出 buffer 是否 4KB 对齐(需要支持不对齐的情况)
多进程/线程并发访问
测试的方式主要是通过对算法处理后的数据进行“比数”的方式进行,结果与参考结果一致,则表明测试通过。
8.2.4.1. 测试工具
主机端工具:
OpenSSL (主机需要安装)
平台端工具:
crypto_kcapi (编译 source/zx/test-ce)
编译 crypto_kcapi 需要在 SDK 顶层目录执行:
make menuconfig
选择配置:
zx (openwrt)
sample-code
[*] test-ce
8.2.4.2. 测试对象
需要测试的算法有:
对称密钥算法 |
非对称密钥算法 |
消息摘要算法 |
---|---|---|
|
|
|
8.2.4.3. 测试方法
8.2.4.3.1. 创建测试用例的脚本
HOST 端,通过 gen_xxx_test_data.sh
脚本,生成对应算法的测试脚本。
gen_xxx_test_data.sh
脚本所做的事情包括:
生成测试数据:指定长度的
0x00 ~ 0xFF
循环数据使用 OpenSSL 工具,根据指定的密钥,生成对应算法加解密后的数据
使用 OpenSSL 工具,对生成的结果计算 MD5 值
将对应的 MD5 值写入生成的
test_xxx_script_kcapi.sh
中,作为比较依据生成的
test_xxx_script_kcapi.sh
使用 DEVICE 端的crypto_kcapi
工具进行测试
相关的脚本和数据在 source/zx/test-ce/test
目录下。目前有下列用于生成测试用例的脚本:
gen_hash_test_data.sh
gen_rsa_test_data.sh
gen_skcipher_ssram_test_data.sh
gen_skcipher_test_data.sh
8.2.4.3.2. 测试用例脚本
DEVICE 端在系统运行起来之后,可以在 /usr/local/bin/test
目录下,运行测试用例脚本。
测试脚本所做的事情包括:
生成测试数据:与 HOST 端一样,指定长度的
0x00 ~ 0xFF
循环数据使用 crypto_kcapi 工具,根据指定的密钥,生成对应算法加解密后的数据
使用 crypto_kcapi 工具,对生成的结果计算 MD5 值
对比测试脚本中的 MD5 值,如果一样,则测试通过,否则失败
目前有下列用于测试的脚本:
test_aes_cbc_huk_script_kcapi.sh
test_aes_cbc_script_kcapi.sh
test_aes_cbc_ssk_script_kcapi.sh
test_aes_ctr_huk_script_kcapi.sh
test_aes_ctr_script_kcapi.sh
test_aes_ctr_ssk_script_kcapi.sh
test_aes_ecb_huk_script_kcapi.sh
test_aes_ecb_script_kcapi.sh
test_aes_ecb_ssk_script_kcapi.sh
test_des_cbc_script_kcapi.sh
test_des_ecb_script_kcapi.sh
test_hash_all_script_kcapi.sh
test_md5_script_kcapi.sh
test_rsa_1024_script_kcapi.sh
test_rsa_2048_script_kcapi.sh
test_rsa_512_script_kcapi.sh
test_sha1_script_kcapi.sh
test_sha224_script_kcapi.sh
test_sha256_script_kcapi.sh
test_sha384_script_kcapi.sh
test_sha512_script_kcapi.sh
test_skciper_all_script_kcapi.sh