问题标签 [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.
c - 将 X.509 证书的主题名称解析到缓冲区
我正在尝试将 X.509 证书的主题名称解析到缓冲区中,但我收到的是负值。可能出了什么问题?
openssl - 是否可以在同一个项目中包含 PolarSSL 和 OpenSSL?
我有一个软件,其中包括带有 openSSL 的 paho.mqtt.c。
我想在其中包含 libcurl,它是用 polarSSL(新 mbedTLS)构建的。
当我在项目中包含 polarSSL 时,我会遇到很多名称冲突:
是否可以同时包含两个库,如果是,我的错误是什么?
如果不可能,我想我应该尝试使用 polarSSL 构建 cURL 吗?
bluetooth-lowenergy - 带蓝牙低功耗的 MbedTLS
有人有使用 BLE 设备实现 MbedTLS 的经验吗?关于为 mbedtls_set_bio() 函数设置读写回调函数,我有几个问题。我想使用 GATT api 函数来设置带有 MbedTLS 的隧道。我对 mbedTLS 和 BLE 完全陌生。我不太确定如何设置这些回调以及他们应该做什么。我正在使用对话框 DA14695 USB 记忆棒来实现两个 BLE 设备之间的 DTLS 握手。
提前致谢。
c - MbedTLS 和 .NET BouncyCastle 与 Curve25519 的互操作性问题
编辑:更改代码以提供更简单的测试用例
我正在创建一个使用 Curve25519 进行密钥交换的简单客户端/服务器应用程序。客户端在 C 中使用mbedtls实现,服务器在 .NET 中使用BouncyCastle实现。
不幸的是,在客户端和服务器上生成的共享密钥并不相同。下面显示了生成公钥/私钥的代码摘录(我硬编码了一些值以方便调试)。
客户端密钥生成(mbedtls代码,主要复制自https://github.com/ARMmbed/mbedtls/blob/development/programs/pkey/ecdh_curve25519.c和https://github.com/google/eddystone/blob/bb8738d7ddac0ddd3dfa70e594d011a0475e763d/实现/mbed/source/EIDFrame.cpp#L144)
执行的输出是:
服务器密钥生成(BouncyCastle代码)
执行的输出是:
有了这些信息,我继续使用以下代码生成共享密钥:
客户端共享密钥生成(mbedtls代码)
客户端执行的输出是:
服务器共享密钥生成(BouncyCastle代码)
服务器上执行的输出是:
这两个生成的秘密明显不同。通过阅读各种示例,可能是由于不同的字节顺序编码。我尝试使用方法mbedtls_mpi_read_binary_le和mbedtls_mpi_write_binary_le,但没有任何运气。
作为替代解决方案,如果此更改可以解决问题,我可以更改 .NET 库并移至另一个库。不幸的是,此时我无法找到一个好的 .NET 替代方案。
esp32 - 实现 mbedtls 和 xTaskCreate() 在 ESP32 (Arduino IDE) 上导致内存泄漏
所以我有下面的代码。如果我直接调用signKey()
loopTask中的函数,空闲堆是稳定的。但是,如果我使用该函数来创建任务xTaskCreate()
,则可用堆总是在减少。我错过了什么吗?
这是使用直接调用在串行监视器上的输出:
这是使用任务的串行监视器上的输出:
这是代码:
更新:
我尝试在 上创建任务setup()
并使任务不断循环,没有发生减少的空闲堆!所以这个问题只存在于我动态创建和删除任务时。为什么会发生这种情况?
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 的则不能。
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# 项目,失败(输出“验证签名失败”)
qemu - 如何将 mbedTLS 库与 optee_client 链接?
我想在客户端应用程序(普通世界)中使用 mbedTLS 库。
如何将 mbedTLS 库与 optee_client 链接?( mbedtls )
目前的情况;
- 我第一次使用 QEMU 和 OP-TEE。
- 我已经完成了“构建”和“xtest”。(https://optee.readthedocs.io/en/latest/building/gits/build.html#build)
- 我知道OP-TEE中有mbedtls,TA端可以调用mbedtls库(libmbedtls)。
- 我检查了 #112(https://github.com/OP-TEE/optee_client/issues/112)并尝试这样做,但我无法链接库(步骤 2)。
- 我找不到批评文章。
我的问题是;
- 如何将 mbedtls 库与客户端应用程序(普通世界)链接?
- 如果你不介意,你能告诉我“二进制”是什么意思吗?(.so ? .a? or BINARY in Makefile?)(不好意思问这么基本的问题。)
“编译 foo 并链接第 1 步中的标头和二进制文件。” 来自 #112 ( https://github.com/OP-TEE/optee_client/issues/112 )
arm - 如何为 arm gcc 构建 mbedtls
我想在我的 stm32 项目中使用 mbedtls,但我在构建时遇到了一些问题。我必须用 arm-none-gcc 编译器构建 mbedtls,对吗?我的命令是:(在构建目录中)。
我在编译测试程序时出错:
任何人都知道为什么 cmake 在编译测试程序时有问题?
ssl - wolfSSL vs. MBEDTLS vs. OpenSSL - 有什么区别?
我正在研究用于嵌入式设备的不同 SSL/TLS 库。
我想知道人们认为每个库的优缺点是什么,以及这些库是否有特定的用例。