Edit online

测试指南

4 Dec 2024
Read time: 2 minute(s)
CE 的测试主要覆盖以下几个要点:
  • 驱动所实现的所有算法

  • 不同数据长度的处理

  • 输入输出 buffer 是否 4 KB 对齐(需要支持不对齐的情况)

  • 多进程/线程并发访问

测试的方式主要是通过对算法处理后的数据进行“比数”的方式进行,结果与参考结果一致,则表明测试通过。

测试工具
  • 主机端工具:OpenSSL (主机需要安装)

  • 平台端工具:crypto_kcapi (编译 source/artinchip/test-ce)

  • 编译 crypto_kcapi 需要在 SDK 顶层目录执行:

    make menuconfig
  • 选择配置:

    ArtInChip packages
        Sample code
            [*] test-ce

测试对象,需要测试的算法有:

对称密钥算法 非对称密钥算法 消息摘要算法
  • cbc(des3_ede)
  • ecb(des3_ede)
  • cbc(des)
  • ecb(des)
  • xts(aes)
  • cts(aes)
  • ctr(aes)
  • cbc(aes)
  • ecb(aes)
  • huk-protected(xts(aes))
  • huk-protected(cts(aes))
  • huk-protected(cbc(aes))
  • huk-protected(ecb(aes))
  • ssk-protected(cbc(aes))
  • ssk-protected(ecb(aes))
  • rsa
  • psk3-protected(rsa)
  • psk2-protected(rsa)
  • psk1-protected(rsa)
  • psk0-protected(rsa)
  • pnk-protected(rsa)
  • sha512
  • sha384
  • sha256
  • sha224
  • sha1
  • md5
  • hmac(sha256)
  • hmac(sha1)
测试方法
  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/artinchip/test-ce/test 目录下。目前有下列用于生成测试用例的脚本:

      gen_hash_test_data.sh
      gen_rsa_test_data.sh
      gen_skcipher_ssram_test_data.sh
      gen_skcipher_test_data.sh
      

      ce_test_host

      1. 生成测试脚本
  2. 测试用例脚本

    DEVICE 端在系统运行起来之后,可以在 /usr/local/bin/test 目录下,运行测试用例脚本。

    测试脚本所做的事情包括:

    • 生成测试数据:与 HOST 端一样,指定长度的 0x00 ~ 0xFF 循环数据
    • 使用 crypto_kcapi 工具,根据指定的密钥,生成对应算法加解密后的数据
    • 使用 crypto_kcapi 工具,对生成的结果计算 MD5 值
    • 对比测试脚本中的 MD5 值,如果一样,则测试通过,否则失败

    ce_test_device

    2. 运行测试脚本

    目前有下列用于测试的脚本:

    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