This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHCC3235MOD:多线程加密问题

Guru**** 2382230 points
Other Parts Discussed in Thread: SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1296292/launchcc3235mod-multi-thread-crypto-question

器件型号:LAUNCHCC3235MOD
主题中讨论的其他器件:SysConfig

我有一个多客户端服务器、其中每个工作线程处理客户端、就像在 tcpecho 中一样。 我正在尝试使用 CryptoCC32XX。 问题是、我 每个线程应该使用一个 CryptoCC32XX_Handle、还是所有线程都使用一个全局 CryptoCC32XX_Handle? 缓冲区大小和密钥对于所有线程都相同。

在 CryptoCC32XX.h 文件参考(TI.com)的文档中 "该驱动程序中的 API 用作一个典型 TI-RTOS 应用程序的接口。 特定外设的实现负责创建所有 OSAL 特定基元、从而实现线程安全操作。" 什么是 OSAL?

g_aCryptoH[CLIMX]={0};
// iclient for use by thread 
int get_buffer_id() {
    if (g_Crypt_Init=0) CryptoCC32XX_init();
    int iret = -1;
    for (int i = 0; i < CLIMX; i++) {
        if (aibuffer_id[i] == 0) {
            aibuffer_id[i] = 1;
            iret = i;
            // do I get a thread crypto here? or is it not threadsafe and since
            // all keys are the same for all clients, one CryptoCC32XX_Handle and block until 
            // done with buffer on thread and release? 
            // 
            g_aCryptoH[i] = CryptoCC32XX_open( i,CryptoCC32XX_AES_CBC);
            break;
        }
    }
    return iret;
}
void unget_buffer_id(int id) {
    id = id % CLIMX;
    msgini(id, MSGS); // zeros memory and sets all buffers available
    aibuffer_id[id] = 0;
    CryptoCC32XX_close(g_aCryptoH[id];
    g_aCryptoH[id] = 0;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Malcolm:

    我建议您使用 SlNetIf/SlNetSock API、如 TcpEchoTLS 中所示、其中网络处理器负责加密。  

    如果出于某种原因您想要自行处理 TLS (使用 CryptoCC32xx)、复杂程度会高得多。  我认为您应该为每个插座使用一个单独的句柄。

    OSAL 是操作系统抽象层。 SDK 中的 Crytpo 驱动程序使用抽象层(Hwip、SemphorP 等)并实现 TIRTOS 和 FreeRTOS。 如果您针对另一个操作系统进行构建、则需要根据 驱动程序的需要为中断控制和信标提供一种实现方案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    阅读了一些 AES 问题后,我决定首先去 TLS ,我刚刚完成了多客户端工作正常,并说与 TcpEchoTLS 你建议。 Windows .Net 部分对我来说是更令人沮丧的部分。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不知道你的意思是什么"Windows .net 部分". 是否存在任何未解决的问题或可以关闭此主题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    TLS 没有开放的问题、但我希望将来有一天能 为使用新模式的多客户提供一个 AES 示例。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定我们会为 AES 添加一个具体示例。

    CryptoCC32XX.h 标头包含使用 AES 进行加密的基本序列。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尚未遵循 μ@代码 AES、因为我在 CryptoCC32XX_Params 中有错误。 也许它应该是 CryptoCC32XX_EncryptParams?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、应该是 CryptoCC32XX_EncryptParams。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    基本上、我要以 AES_CBC 的简单示例为例来加密和解密有效的0x500字节的缓冲区。 我得到的最接近的值是0x500中的0x300、之后使用填充错误进行了正确加密。 如果能够确保其线程安全、就会非常感激。 SysConfig 中需要多少个 cryptos?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我知道有一个示例的重要性、但遗憾的是、正如我提到的、我们今天没有一个示例。