问题标签 [wolfssl]
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.
security - 在 FreeRTOS 上实施 CyaSSL
我想在嵌入式设备之间建立安全通信。我正在使用 TMS570 微控制器,并在其上运行 FreeRTOS。那么,您能否提供一些关于如何在其上实现 SSL 的指南(最好是 MatrixSSL /CyaSSL)
c - 什么是好的嵌入式 TLS 库?(Cyassl vs Polarssl vs Matrixssl)
我四处寻找支持 TLS 1.2 的优秀 SSL/TLS 库
我也想在嵌入式平台上使用这个库,所以它应该是小、简单、安全和免费的。它应该是 ac/c++ 库。
到目前为止,我经常遇到 Cyassl、Polarssl Matrixssl,所以我认为其中一个应该是一个不错的选择(Openssl 太大了)。
现在我想知道为什么人们使用一个而不是另一个。
谢谢
c++ - Cyassl-2.4.2 缺少 libcyassl.a 文件
我已经在我的 unix 机器上构建并安装了 Cyassl-2.4.2 以用于我的项目;但是,当我尝试编译我的 c 项目时,编译器找不到 libcyassl.a 文件。我在 Cyassl.2.4.2 文件夹中搜索了很多次,但我自己无法找到该文件。这个文件在哪里?我是否错过了构建/安装 Cyassl.2.4.2 的步骤?谢谢!
android - 将 CyaSSL 与当前的 Android 内核 (KitKat) 集成
我需要在 Android 上为我正在处理的项目使用 CyaSSL。我一直在尝试按照 CyaSSL 的说明将其构建到内核中,但没有取得多大成功。主要问题是构建结构似乎从编写说明的 Android 版本到当前版本发生了显着变化。
我将列出这些步骤和相关的问题。
1)将provider的“src/external/cyassl”中的“cyassl”目录复制到Android平台的“/external”目录下。此文件夹现在应位于:/external/cyassl
这一步很好。
2) 打开 /build/core/prelink-linux-map.map 并在“#特定应用程序或临时库的库”标题下为 libcyassl.so 添加一个新条目。它应该类似于以下内容:ibcyassl.so
对于最新版本的 Android,此步骤似乎是不必要的,因为预链接已被删除。
3) 打开文件 /dalvik/libnativehelper/Android.mk 并将 libcyassl.so 添加到 shared_libraries 列表中。
这个文件看起来已经移动了,我在 WORKING_DIRECTORY/libnativehelper/Android.mk 下找到了我认为正确的文件并进行了相应的编辑。
4)将provider源的“src/libcore/yassl”中的“yassl”目录复制到Android平台的“/libcore”目录下。此文件夹现在应位于:/libcore/yassl
这里没问题。
5) SSL Provider初始化方法必须在Android平台注册。打开文件 /dalvik/libnativehelper/Register.c。在现有提供者的条目下添加“register_com_yassl_xnet_provider_jsse_NativeCrypto”方法。添加后,它应如下所示:
这个文件,Register.c 不存在,我不知道如何处理第 5 步。
6)provider初始化方法也必须添加到/dalvik/libnativehelper/include/nativehelper/AndroidSystemNatives.h的头文件中。将以下方法声明添加到此文件中现有 SSL 提供程序的声明下。添加后,它应如下所示:
这个文件,AndroidSystemNatives.h 似乎也不存在,所以再次,不知道在这里做什么。
7) 打开“security.properties”文件(位于/libcore/securit/src/main/java/java/security/security.properties)。进行以下更改以配置 CyaSSL 提供程序:
a) 将以下行添加到提供者列表中。此行需要高于默认的“org.apache.harmony.xnet.provider.jsse.JSSEProvider”提供程序。请注意每个提供者旁边的数字。插入新提供者后,可能需要重新编号此列表。
b) 将“ssl.SocketFactory.provider”条目更改为新的 CyaSSL Provider。修改后应如下所示:
该文件现在似乎位于 /libcore/luni/src/main/java/java/security 中,我对其进行了相应编辑。但是,由于缺少我不知道如何处理的步骤,它不会构建。我做了很多搜索,但没有找到任何有用的东西。我的选择似乎是在这一点上 -
1)让上述工作。
2) 恢复构建旧版本的 Android(以及随之而来的所有相关麻烦,降级 Java、Gcc、pyhton 等)
3)找到一种方法来使用 CyaSSL Android 库而不将其烘焙到内核中(我不确定这是否可能)
任何建议或方向将不胜感激。
c - 使用带有 uclinux 和外部库的加密加速单元
我目前正在尝试找到最佳方法来集成我的 MCU 上的加密加速单元,以利用我的自定义应用程序以及我需要使用的外部 SSL/TLS 库中的性能提升。
我的平台运行带有 uCLinux 发行版的 Freescale Kinetis (ARM Cortex-M4) 设备。我目前已设法在用户空间中运行 mbed-TLS (Polar SSL)。我也可以从 WolfSSL 运行 CyASSL。我现在正在寻找在处理器上与我的应用程序一起运行“内存映射加密加速单元”(MMCAU)外围设备的最佳策略。代码本身应该不会太难集成,因为飞思卡尔提供了一个库,其中包含围绕汇编优化代码的 C 包装。棘手的一点是允许在用户应用程序和库中使用加密单元的中间件。
一种可能性是重写 linux 加密内核模块 (cryptodev),以便在我的用户应用程序中使用 MMCAU(这将有利于从多个用户应用程序访问 MMCAU,而我的平台不支持共享库)。但是我不确定这是最好的策略。此外,mbed-TLS 似乎不提供对本机 linux 加密驱动程序的支持。
这里提出了其他替代方案(http://cryptodev-linux.org/),但是,由于我不是真正的 linux 专家,我不确定在我的情况下什么是最好的解决方案。
欢迎就此处采用最佳策略以获得最灵活的解决方案同时仍受益于硬件加密的改进性能提出建议。
c - 使用 CyaSSL Keygen 时出现分段错误
我正在尝试使用此处第 7.7 节中的示例使 CyaSSL 的 Keygen 功能工作:http ://www.yassl.com/yaSSL/Docs-cyassl-manual-7-keys-and-certificates.html
我正在使用带有 --enable-keygen 选项的 CyaSSL 3.2.0,但也无法使其与 3.1.0 一起使用。
这是代码:
我在 InitRsaKey 行中遇到分段错误,大概是由于无效写入或其他原因。
有人知道我的问题可能出在哪里吗?任何帮助表示赞赏
java - 如何使用 Java 8 向/从 X9.63 编码导入/导出 Java EC 密钥
我正在考虑编写一个 Java 8 程序,以使用只能导出/导入 X9.63 格式的 ECC 公钥(它们的wc_ecc_export_x963()
功能)的库(wolfSSL/wolfCrypt)与另一款软件进行 ECDH 交换。我非常喜欢使用 Java 附带的提供程序来执行此操作。
因此,我需要了解如何让 Java 从一个PublicKey
X9.63 编码中创建一个对象,并创建一个对象的 X9.63 编码字节PublicKey
。
我编写了一些测试代码来尝试找出 Java 使用的格式:
这会产生输出:
然后我可以使用 openssl 来调查公钥结构:
但这对我来说是不透明的(我不知道 ASN.1),我不知道那是什么编码格式,甚至不知道如何找出它是什么编码格式。
这是该 Java 表示的 hexdump:
更新
这是我从中得到的 hexdump wc_ecc_export_x963()
。我也会将 C 源代码包含到我的测试程序中。 openssl asn1parse
文件阻塞,FWIW。
作为参考,这里是生成该wolf.x963
文件的程序(注意——我已经很多年没有用 C 编程了):
及其输出:
ssl - wolfSSL 和 StellarisWare 示例
我想将作为 StellarisWare /TivaWare 一部分的 freertos_demo 与 wolfSSL 库结合使用,但我发现很难阅读 Makefile(实际上是 makedefs 文件)。
我根据手册下载并编译了wolfSSL。现在在 /usr/local/lib 中有以下文件:
- /usr/local/lib//libwolfssl.la
- /usr/local/lib//libwolfssl.so
- /usr/local/lib//libwolfssl.so.3
- /usr/local/lib//libwolfssl.so.3.1.0
现在我从 StellarisWare 根目录打开 makedefs 并将以下代码添加到第 160 行:
LIBS=-lwolfssl
此外,我修改了第246和252行,它们现在声明如下(两行相同;基本上我只添加了 '${LIBS}'
):
'${LIBM}' '${LIBC}' '${LIBGCC}' '${LIBS}';
但是,当我转到 blinky 子目录并执行“make clean; make”时,我收到以下错误:
arm-none-eabi-ld: cannot find -lwolfssl
我错过了什么?
最好的
ssl - clientHello 之后的 SSL handshake_failure
我正在尝试使用带有 WolfSSL 的 tls1.2 将嵌入式设备连接到 smtp.gmail.com:465。库创建并发送以下 clientHello 消息并收到握手失败。
这是收到的消息;
从wireshark截图中可以看出,客户端支持以下密码套件;
...并且客户端支持以下签名算法(请参见屏幕截图底部的十六进制部分,wireshark 不解码签名算法)
另一方面,smtp.gmail.com 支持以下密码套件;(这是通过在此处运行脚本获得的:“superuser.com/questions/109213/how-do-i-list-the-ssl-tls-cipher-suites-a-particular-website-offers”)
如上所示,这两个套件匹配。
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_RC4_128_SHA
而且,我检查了“www.digicert.com/help/”中的证书(使用“smtp.gmail.com:465”)并得到了这个:Digicert Screenshot
- 签名算法 = SHA256 + RSA(优秀)
这也匹配
根据“tools.ietf.org/html/rfc5246#section-7.2.2”
据我了解,除了密码套件和签名算法不匹配之外,还有其他原因导致 handshake_failure 或者我遗漏了一些非常大的东西。我正在寻找失败的原因,但我找不到。我将不胜感激任何帮助或任何想法。握手失败的原因是什么?
对于无法点击的链接,我感到非常抱歉。stackoverflow 不允许我添加超过 2 个链接。当有 10 个声誉时,我将用常规链接替换它们 :)