- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目使用 DTLS 过连接。目前我已成功运行 WolfSSL 在仅使用软件实现的 Controller 上,但设置初始连接所需的时间令人憎恶,我现在希望在 MCU 中利用硬件加密来提高性能。来自 STM32F2 WolfSSL 提供的实现,我只看到一些加密算法被重定向到硬件加密。在我的 DTLS 实现中,我使用了 WolfCrypt 提供的多种不同的算法。由于我对 SSL 库的非常低级的细节缺乏经验,因此我需要一些帮助来将 WolfSSL 中存在的几乎所有加密算法从软件实现重新定位到 STM32 加密硬件。
根据 ST 的 Cube HAL 框架,HW Encrytion 支持的算法有
STM32F437x/439x
– AES: CFB, OFB, XTS, CCM, GCM, CMAC, KeyWrap
Key size: 128, 192, 256 bit Crypto accelerator
– ECC: Key generation, Scalar multiplication, ECDSA Random number
generator (RNG) – RSA encryption/decryption functions with PKCS#1v1.5
最佳答案
您使用的是哪个版本的 wolfSSL? wolfSSL 最近增加了对 CubeMX HAL 的支持。如果您没有 wolfSSLv3.10.0,请从这里的下载页面下载:https://wolfssl.com/wolfSSL/download/downloadForm.php或从 wolfSSL github 存储库获取:https://github.com/wolfSSL/wolfssl.git
在/wolfssl/wolfcrypt/settings.h 的 STM32F2 部分中有 WOLFSSL_STM32_CUBEMX 的新定义
#ifdef WOLFSSL_STM32F2
#define SIZEOF_LONG_LONG 8
#define NO_DEV_RANDOM
#define NO_WOLFSSL_DIR
#undef NO_RABBIT
#define NO_RABBIT
#undef NO_64BIT
#define NO_64BIT
#define STM32F2_RNG
#define STM32F2_CRYPTO
#if !defined(__GNUC__) && !defined(__ICCARM__)
#define KEIL_INTRINSICS
#endif
#define NO_OLD_RNGNAME
#ifdef WOLFSSL_STM32_CUBEMX // <--- New section for HAL support in version 3.10.0
#include "stm32f2xx_hal.h"
#ifndef STM32_HAL_TIMEOUT
#define STM32_HAL_TIMEOUT 0xFF
#endif
#else
#include "stm32f2xx.h"
#include "stm32f2xx_cryp.h"
#include "stm32f2xx_hash.h"
#endif /* WOLFSSL_STM32_CUBEMX */
#endif
static int wc_AesEncrypt(Aes* aes, const byte* inBlock, byte* outBlock)
{
int ret = 0;
#ifdef WOLFSSL_STM32_CUBEMX
CRYP_HandleTypeDef hcryp;
/* load key into correct registers */
switch(aes->rounds) {
case 10: /* 128-bit key */
hcryp.Init.KeySize = CRYP_KEYSIZE_128B;
break;
case 12: /* 192-bit key */
hcryp.Init.KeySize = CRYP_KEYSIZE_192B;
break;
case 14: /* 256-bit key */
hcryp.Init.KeySize = CRYP_KEYSIZE_256B;
break;
default:
break;
}
XMEMSET(&hcryp, 0, sizeof(CRYP_HandleTypeDef));
hcryp.Instance = CRYP;
hcryp.Init.DataType = CRYP_DATATYPE_8B;
hcryp.Init.pKey = (uint8_t*)aes->key;
HAL_CRYP_Init(&hcryp);
if (HAL_CRYP_AESECB_Encrypt(&hcryp, (uint8_t*)inBlock, AES_BLOCK_SIZE,
outBlock, STM32_HAL_TIMEOUT) != HAL_OK) {
ret = WC_TIMEOUT_E;
}
HAL_CRYP_DeInit(&hcryp);
#else
... other non-cubemx support implementations below
关于cryptography - STM32F437 硬件加密功能与 WolfSSL 的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871031/
我需要使用 wolfssl 库在 C 中测试 PEM 格式的 ECC 证书是否完好。我不想测试任何进一步的信息,如果它是证书而不是 之间的任何随机 Base64 编码字节 -----开始证书-----
我将 wolfssl 移植到 Liteos,运行时出现错误: wolfSSL error occurred, error = 111 line:11221 file:src/ssl.c error =
我想在非标准环境中构建 WolfSSL 库,特别是 STM32F405 芯片。我尝试为其构建库的产品是 BitCrazy Crazyflie 2.0。 阅读 WolfSSL 手册后,第 2.4 章告诉
我是新手,我正在尝试为 Click Router 编译静态库,目前是 wolfSSL,我在 Ubuntu 17.10 上 我正在执行以下步骤: 克隆 wolfSSL GIT 存储库: cd click
我有一个 IOT 设备,它使用 DTLS 1.2 协议(protocol) 进行通信。我们已经将 WolfSSL 集成到我们的项目中,并且运行良好。我想要实现的是只为我的 WolfSSL 客户端 设置
我在使用 WolfSSL 时遇到了一些问题.我试图在 WolfSSL 论坛上提问,但现在无法注册。 我正在使用 WolfSSL 为 Nintendo Wii 开发一个简单的电子邮件客户端。 WolfS
我有一个项目使用 DTLS 过连接。目前我已成功运行 WolfSSL 在仅使用软件实现的 Controller 上,但设置初始连接所需的时间令人憎恶,我现在希望在 MCU 中利用硬件加密来提高性能。来
我想在 C++ Windows 项目中静态构建和集成 wolfssl。 我试着关注 official tutorial , 但这似乎给出了一个 .dll,如果我错了,请纠正我,动态的。 是否有构建 .
我想将作为 StellarisWare/TivaWare 的一部分的 freertos_demo 与 wolfSSL 库结合使用,但我发现很难阅读 Makefile(实际上是 makedefs 文件)
我正在尝试使用 WolfSSL 库在 FreeRTOS(客户端)和 Linux(服务器)之间建立安全通信。 我收到错误 -501,表明密码套件列表不匹配。 这里是客户端在 FreeRTOS 上发送的密
在 ubuntu x64 ,我尝试编译wolfssl 脚步: ./configure --enable-static --enable-shared --enable-openssh --enable
我正在研究用于嵌入式设备的不同 SSL/TLS 库。 我想知道人们认为这些库中的每一个的优缺点是什么,以及这些库中的任何一个是否有特定的用例。 最佳答案 首先,所有三个库都将完成相同的事情,只有一个可
我尝试导入证书的公钥,将其放入 ecc_key 结构中以供进一步使用。 为此,我在 Wolfssl API 文档中找到了这个 wc_EccPublicKeyDecode功能。我尝试使用它来将证书加载到
我是椭圆曲线密码学、openSSL 和 wolfSSL 的新手。我的上下文是我使用 openssl 从命令行生成 KeyPair 并将私钥导入我的代码。然后我使用 wolfSSL 生成签名并输出它。
我想使用 Nordic 芯片 (nRF52) 从客户端建立安全的蓝牙连接。我还运行了 WolfSSL 库。因此,我收到来自 Nordic Softdevice 的“BLE_GAP_EVT_LESC_D
我是一名优秀的程序员,十分优秀!