暗号SHA256とCRCが機能せず、常に0を返します

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、データ、(uint32_t)len、&crc_ctx);
crc ('crc_32') は常にゼロです。
 
Cy_Crypto_Enable()を呼び出す以外に、設定する必要のある他の構成設定はありますか?
 
感謝
学監
0 件の賞賛
1 解決策
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはディーン、

机の上に 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章「発注情報」に「crypto」、「HSM」などのセールスタイプオプションも記載されていません。

したがって、私の結論は、PSoC 4100S PLUSは、上記のSWドライバーに必要な暗号ハードウェアIPをチップ上に備えていないということです...

補遺:

インフィニオンのマーケティングスライドを確認したところ、ここにスニペットが挿入されています。

JJack_0-1694503261530.png

-> PSoC 4100S Maxを搭載したボードに移行します。

PSoC 4100S Maxを搭載したボードの1つのオプションは、私の雇用主のRDK4です。 Rutronik24のウェブショップで入手できます。 添付のマニュアルをご覧ください。

ティッカー

ジェイジャック

元の投稿で解決策を見る

0 件の賞賛
2 返答(返信)
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはディーン、

机の上に 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章「発注情報」に「crypto」、「HSM」などのセールスタイプオプションも記載されていません。

したがって、私の結論は、PSoC 4100S PLUSは、上記のSWドライバーに必要な暗号ハードウェアIPをチップ上に備えていないということです...

補遺:

インフィニオンのマーケティングスライドを確認したところ、ここにスニペットが挿入されています。

JJack_0-1694503261530.png

-> PSoC 4100S Maxを搭載したボードに移行します。

PSoC 4100S Maxを搭載したボードの1つのオプションは、私の雇用主のRDK4です。 Rutronik24のウェブショップで入手できます。 添付のマニュアルをご覧ください。

ティッカー

ジェイジャック

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

ああ、@JJack  あなたは正しいです。 私はPSoC 4100S MAXのデータシートを見ていましたが、PSoC 4100S PLUSを見ていませんでした。 説明してくれてありがとう。

0 件の賞賛