我有一个IOT
与DTLS 1.2 protocol
. 我们已经将 WolfSSL 集成到我们的项目中,并且运行良好。我想要实现的是只为我设置一个特定的密码套件,WolfSSL client
以便我确保它使用正确的加密方法。
const char *CIPHER_LIST = "PSK-AES128-CCM-8";
WOLFSSL_CTX *ctx = wolfSSL_CTX_new(wolfDTLSv1_2_client_method());
wolfSSL_CTX_set_cipher_list(ctx, CIPHER_LIST);
WOLFSSL *ssl = wolfSSL_new(ctx)
wolfSSL_set_cipher_list(ssl, CIPHER_LIST);
当我打印密码列表时;
for (int i = 0; i< 50; i++) {
// print cipher list based on priority
NSLog(@"->%s", wolfSSL_get_cipher_list(i));
}
结果将是
DHE-RSA-AES128-SHA
DHE-RSA-AES256-SHA
DHE-PSK-AES256-GCM-SHA384
DHE-PSK-AES128-GCM-SHA256
PSK-AES256-GCM-SHA384
PSK-AES128-GCM-SHA256
DHE-PSK-AES256-CBC-SHA384
DHE-PSK-AES128-CBC-SHA256
PSK-AES256-CBC-SHA384
PSK-AES128-CBC-SHA256
PSK-AES128-CBC-SHA
PSK-AES256-CBC-SHA
DHE-PSK-AES128-CCM
DHE-PSK-AES256-CCM
PSK-AES128-CCM
PSK-AES256-CCM
PSK-AES128-CCM-8
PSK-AES256-CCM-8
DHE-RSA-AES128-SHA256
DHE-RSA-AES256-SHA256
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
EDH-RSA-DES-CBC3-SHA
如果我打电话wolfSSL_get_cipher(ssl)
,我会得到结果“NONE”。
在更新我们的 IOT 设备固件之前,该库一直运行良好,然后我们开始没有收到任何响应。在我回溯响应失败后,我意识到这是一个 SSL 握手问题,我决定设置一个密码列表。我想知道,我有什么遗漏或做错了吗?
此外,我们还有一个 Android 应用程序,它使用“PSK-AES128-CCM-8”加密方法与同一设备通信。这就是为什么我只想设置我的列表这个特定的方法。
此外,这是WolfSSL的 user_settings.h;
/* Configuration */
#define IPHONE /* Needed for Xcode */
#define DEBUG_WOLFSSL
#define HAVE_HASHDRBG
#define HAVE_AESGCM
#define HAVE_AESCCM
#define WOLFSSL_SHA512
#define WOLFSSL_SHA384
#define WOLFSSL_STATIC_PSK
#define WOLFSSL_DTLS
#define NO_WOLFSSL_SERVER
#ifdef HAVE_FIPS
#define NO_MD4
#define NO_HC128
#define NO_RABBIT
#define NO_DSA
#define NO_PWDBASED
#else
#define USE_FAST_MATH
#endif