问题标签 [mbedtls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
128 浏览

c - 将 X.509 证书的主题名称解析到缓冲区

我正在尝试将 X.509 证书的主题名称解析到缓冲区中,但我收到的是负值。可能出了什么问题?

0 投票
1 回答
59 浏览

openssl - 是否可以在同一个项目中包含 PolarSSL 和 OpenSSL?

我有一个软件,其中包括带有 openSSL 的 paho.mqtt.c。

我想在其中包含 libcurl,它是用 polarSSL(新 mbedTLS)构建的。

当我在项目中包含 polarSSL 时,我会遇到很多名称冲突:

是否可以同时包含两个库,如果是,我的错误是什么?

如果不可能,我想我应该尝试使用 polarSSL 构建 cURL 吗?

0 投票
0 回答
41 浏览

bluetooth-lowenergy - 带蓝牙低功耗的 MbedTLS

有人有使用 BLE 设备实现 MbedTLS 的经验吗?关于为 mbedtls_set_bio() 函数设置读写回调函数,我有几个问题。我想使用 GATT api 函数来设置带有 MbedTLS 的隧道。我对 mbedTLS 和 BLE 完全陌生。我不太确定如何设置这些回调以及他们应该做什么。我正在使用对话框 DA14695 USB 记忆棒来实现两个 BLE 设备之间的 DTLS 握手。

提前致谢。

0 投票
2 回答
168 浏览

c - MbedTLS 和 .NET BouncyCastle 与 Curve25519 的互操作性问题

编辑:更改代码以提供更简单的测试用例

我正在创建一个使用 Curve25519 进行密钥交换的简单客户端/服务器应用程序。客户端在 C 中使用mbedtls实现,服务器在 .NET 中使用BouncyCastle实现。

不幸的是,在客户端和服务器上生成的共享密钥并不相同。下面显示了生成公钥/私钥的代码摘录(我硬编码了一些值以方便调试)。

客户端密钥生成mbedtls代码,主要复制自https://github.com/ARMmbed/mbedtls/blob/development/programs/pkey/ecdh_curve25519.chttps://github.com/google/eddystone/blob/bb8738d7ddac0ddd3dfa70e594d011a0475e763d/实现/mbed/source/EIDFrame.cpp#L144

执行的输出是:


服务器密钥生成BouncyCastle代码)

执行的输出是:


有了这些信息,我继续使用以下代码生成共享密钥:

客户端共享密钥生成mbedtls代码)

客户端执行的输出是:


服务器共享密钥生成BouncyCastle代码)

服务器上执行的输出是:


这两个生成的秘密明显不同。通过阅读各种示例,可能是由于不同的字节顺序编码。我尝试使用方法mbedtls_mpi_read_binary_lembedtls_mpi_write_binary_le,但没​​有任何运气。

作为替代解决方案,如果此更改可以解决问题,我可以更改 .NET 库并移至另一个库。不幸的是,此时我无法找到一个好的 .NET 替代方案。

0 投票
1 回答
244 浏览

esp32 - 实现 mbedtls 和 xTaskCreate() 在 ESP32 (Arduino IDE) 上导致内存泄漏

所以我有下面的代码。如果我直接调用signKey()loopTask中的函数,空闲堆是稳定的。但是,如果我使用该函数来创建任务xTaskCreate(),则可用堆总是在减少。我错过了什么吗?

这是使用直接调用在串行监视器上的输出:

这是使用任务的串行监视器上的输出:

这是代码:

更新: 我尝试在 上创建任务setup()并使任务不断循环,没有发生减少的空闲堆!所以这个问题只存在于我动态创建和删除任务时。为什么会发生这种情况?

0 投票
1 回答
112 浏览

amazon-web-services - JITP 证书不是使用 mbedTLS+ATECC608A 创建的(与 moquitto_pub 一起使用)

我有以下设置:

  • ATECC608A
  • mbedTLS(使用 2.16.6 和 2.16.9 测试)
  • coreMQTT 证书链如下:RootCA > SignerCA > DeviceCert。我已在 AWS IoT 控制台中将 RootCA 和 SignerCA 注册为 CA

我使用以下内容在 mbedTLS 中设置了链:

当使用该堆栈连接到我的 ats 端点时,TLS 握手是成功的:设备证书和签名者CA 被呈现,AWS 也呈现其证书链。mbedTLS 似乎很高兴:

然后我使用创建的 mbedtls_ssl_context 连接 coreMQTT。从日志中,coreMQTT 能够在套接字上写入,但 AWS 关闭了连接。

我预计第一次连接会失败。但在这种情况下,证书不会出现在 AWS IoT 控制台中,随后的连接尝试也会失败。

我仔细检查了存储的 signerCA 及其策略。他们看起来很好。为了确保这个配置是正确的,我在我的机器上手动创建了一个证书并使用我的 SignerCA 对其进行了签名。然后我将该证书与 mosquitto_pub 一起使用。该过程有效,我的证书出现在 AWS IoT 控制台中,并附有正确的策略。这是我正在做的事情的日志:

这样做,我知道附加到我的 signerCA 的策略是正确的并且运行良好。

我所做的另一个验证是检查我的 coreMQTT 连接是否正确。为了在没有 JITP 配置的情况下进行连接,我从 ATECC 中提取了设备证书,手动上传了其 PEM 并将策略附加到 AWS 控制台中的设备。该 MQTT 连接成功(并且我在 AWS 日志中看到了 'MQTT.Connect 事件)。

这是相关的证书描述。我已经从输出中编辑了颁发者/主题,因此签名不正确:

存储在 ATECC 中的设备证书(不触发配置过程的设备证书):

以及正确触发 JITP 的手动生成的证书:

这是来自 AWS 的 signerCA 描述(在 <> 之间有一些编辑字段)

我有点迷茫,有几个问题:

  • mbedTLS 似乎提供了两个连接的证书。如果其中一个不正确或 mbedTLS 配置错误,握手会成功吗?
  • X509v3 扩展是否会导致 JITP 失败?设备证书有它们,而手动生成的证书没有。
  • 有没有办法在 Cloudwatch 中记录相互身份验证失败?

有什么我错过的吗?

(编辑:如果我在连接时没有在证书链中包含 signerCA,则 TLS 握手仍然成功。当然,在这种情况下,我希望 JITP 进程失败,因为 AWS 找不到关联的 CA)。

EDIT2:我尝试连接 mosquitto 和一个更接近 ATECC 使用的证书(相同的算法和相同的 X509v3 扩展)。结果是一样的:手动生成的带有 mosquitto 的可以触发 JITP,而来自 ATECC 的则不能。

0 投票
1 回答
189 浏览

c# - 使用 mbedtls 生成的 RSA 签名,无法使用 C# (bouncycastle) 应用程序进行验证

我正在使用 mbedtls 与 RSA 签署一个 32 字节的挑战。

C 代码的相关行如下所示;我正在使用私钥为 32 字节的“挑战”数组在“签名”中创建签名:

这行得通,我可以使用 mbedtls 验证签名。'rsa' 是另一个实例,这个实例使用公钥:

到目前为止,一切都很好。我无法开始工作是在 C# 应用程序中验证此签名。我从 RSACryptoServiceProvider 类开始,无法让它工作。最终发现了bouncycastle的东西。看起来比 RSACryptoServiceProvider 更好,但我也无法让它工作。

我正在加载 mbedtls 内容中使用的公钥、质询和签名。

验证签名失败(“结果:假”).... :(

我认为我的数据格式正确。这是 C 端的公钥指数和模数:

这就是我在 C# 端使用它们的方式:

'challenge' 和 'signature' 两边都是 8 位(无符号字符/字节)数组,包含相同的数据。

--edit(添加一些实际的挑战/签名值)--

我在这里想念什么?

--edit(添加一些复制/粘贴准备好的代码)--

mbedtls/c++ 项目,工作(输出“验证成功”)

Bouncycastle/C# 项目,失败(输出“验证签名失败”)

0 投票
0 回答
115 浏览

qemu - 如何将 mbedTLS 库与 optee_client 链接?

我想在客户端应用程序(普通世界)中使用 mbedTLS 库。

如何将 mbedTLS 库与 optee_client 链接?( mbedtls )

目前的情况;

我的问题是;

  1. 如何将 mbedtls 库与客户端应用程序(普通世界)链接?
  2. 如果你不介意,你能告诉我“二进制”是什么意思吗?(.so ? .a? or BINARY in Makefile?)(不好意思问这么基本的问题。)

“编译 foo 并链接第 1 步中的标头和二进制文件。” 来自 #112 ( https://github.com/OP-TEE/optee_client/issues/112 )

0 投票
2 回答
621 浏览

arm - 如何为 arm gcc 构建 mbedtls

我想在我的 stm32 项目中使用 mbedtls,但我在构建时遇到了一些问题。我必须用 arm-none-gcc 编译器构建 mbedtls,对吗?我的命令是:(在构建目录中)。

我在编译测试程序时出错:

任何人都知道为什么 cmake 在编译测试程序时有问题?

0 投票
1 回答
2546 浏览

ssl - wolfSSL vs. MBEDTLS vs. OpenSSL - 有什么区别?

我正在研究用于嵌入式设备的不同 SSL/TLS 库。

我想知道人们认为每个库的优缺点是什么,以及这些库是否有特定的用例。