公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

正在使用 PSOC4 开发板 (CY8KIT-149),尝试让 SHA256 和 CRC 加密功能正常运行。 这两个函数都会持续返回 0。Cy_Crypto_Enable (CRYPTO) 成功了,所有其他函数都返回成功,但是 SHA256 为零,这是不正确的。以下是我正在使用的代码片段:

void update(uint8_t *hash)
{
    cy_en_crypto_status_t cy_status;

    uint32_t *app_flash = (uint32_t*)CY_DFU_APP1_VERIFY_START;
    CY_ALIGN(4) uint32_t buffer[CY_FLASH_SIZEOF_ROW / sizeof(uint32_t)] = {0};
    CY_ALIGN(4) uint8_t image_hash[CY_CRYPTO_SHA256_DIGEST_SIZE];
    uint32_t flash_offset;



    /// init sha256 object
    cy_status = Cy_Crypto_Sha_Init(CRYPTO,
                                   CY_CRYPTO_MODE_SHA256,  /* Hash mode */
                                   &ctx);

    if (cy_status != CY_CRYPTO_SUCCESS)
    {
        GK_LOG_ERROR("SHA init failed, status: %lu", cy_status);
        return GK_STATUS_CRYPTO_FAILED;
    }


    // Start at beginning of app flash area calc sha256 hash
    flash_offset = CY_DFU_APP1_VERIFY_START;
    while (flash_offset < _curr_offset)
    {
        // read in a row of data
        for(uint32_t i = 0; i < (CY_FLASH_SIZEOF_ROW / sizeof(uint32_t)); i++)
        {
           buffer[i] = *app_flash;
           app_flash++;
        }

        flash_offset += CY_FLASH_SIZEOF_ROW;

        // hash chunk
        cy_status = Cy_Crypto_Sha_Partial(CRYPTO, (uint8_t const *)buffer, sizeof(buffer), &ctx);

        if (cy_status != CY_CRYPTO_SUCCESS)
        {
           GK_LOG_ERROR("Failed to hash update, status: %lu", cy_status);
           return GK_STATUS_CRYPTO_FAILED;
        }
    }

	=============> Always returns zero ================
    cy_status = Cy_Crypto_Sha_Finish(CRYPTO, image_hash, &ctx);
    if (cy_status != CY_CRYPTO_SUCCESS)
    {
        GK_LOG_ERROR("Failed to finish hash, status: %lu", cy_status);
        return GK_STATUS_CRYPTO_FAILED;
    }

    cy_status = Cy_Crypto_Sha_Free(CRYPTO, &ctx);

    return GK_STATUS_SUCCESS;
}
 
奇怪的是,Cy_Crypto_Sha_Finish () 总是返回零。
我执行的时候也是如此:cy_status = Cy_Crypto_Crc_Calc(CRYPTO、crc_ & 32、data、(uint32_t)len、crc_ctx);crc(`crc_32`)始终为零。&
 
除了调用 Cy_Crypto_Enable () 之外,我还应该设置其他配置设置吗?
 
谢谢,
院长
0 点赞
2 回复数
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 Dean,

我的桌子上有一张 CY8CKIT-149 。 它装有 PSoC 4100S PLUS = C8C4147AZI-S475。

包括 cy_crypto.h PDL 的文件上写着:

"* Crypto 驱动程序提供了一个公共 API 来执行加密和哈希
*操作,以及生成真随机数和伪随机数。

* 它使用硬件 IP 块来加速操作。
*
* 此驱动程序中使用的函数和其他声明采用 cy_crypto.h 格式。
* 您 CAN 还包括 cy_pdl.h 以访问所有函数和声明
* 在 PDL 中。

但是,在搜索 PSoC 4100S PLUS 的 pdf 数据表时,唯一能找到的"加密货币"是 TRNG 的硬件。

数据表在第 5 章 “订购信息” 中也没有显示销售类型选项 cryp " to "、" HSM " 或类似选项。

因此,我的结论是,PSoC 4100S PLUS 在芯片上没有为上述软件驱动程序配备必要的加密硬件 IP...

附录:

刚刚查看了英飞凌的营销幻灯片,此处插入了片段:

JJack_0-1694503261530.png

-> 迁移到装有 PSoC 4100S Max 的主板。

对于配备 PSoC 4100S Max 的主板来说,一种选择是我雇主提供的 RDK4。 它可在Rutronik24的网上商店购买。 请查看随附的手册。

BR

jJack

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

啊,@JJack 你说  得对。 我在看 PSoC 4100S MAX 数据表,而不是 PSoC 4100S PLUS。 非常感谢您的澄清。

0 点赞