主题中讨论的其他器件:CC3100、 MSP430F5529、 CC3100SDK、 CC31XXEMUBOOST、 UNIFLASH
我正在配置 CC3100 + MSP430F5529 Launch Pad 以支持 TLS/SSL。 为了进行实验、我尝试修改 CC3100 HTTP 客户端示例。 我还有一个 CC31XXEMUBOOST、用于将证书上传到串行闪存。 当前编译器版本为 TI v15.12.1 LTS、CC3100SDK 版本为1.2和 CCS6.1。 文件 httpcli 和 sock 是参考 CC3100SDK、而不是 library_project_ccs 中的 http_lib。 我已经在 e2e.ti.com 上查看了许多有关 CC3100和 TLS 实施的文章、但无法使该计划正常运行。
问题:
- 有人能否描述如何按照 CC3100 HTTP 客户端上的建议、启用 HTTPCL_LIBTYPE_MIN 标志以构建库
- 创建证书文件并将其刷写到 CC3100串行闪存的过程。
下面是我在研究中所做的一些工作。
要设置 HTTPCli_LIBTYPE_MIN 标志、我转到 Project Properties > CCS Build > MSP430 Compiler > Advanced Options > Predefine Symbols、并在 Pre-defined NAME 部分添加了 HTTPCli_LIBTYPE_MIN。 我还注意到、在 Project Properties > C/C++ General > Paths and Symbols >#Symbol tab 下、有一些选项可为 HTTPCli_LIBTYPE_MIN 分配值。 应该在这里分配值1吗?
我遵循 CCS/CC3100:CC3100并 添加了__sl__、_使用_cli_和__ccs__宏。 这些宏的用途是什么。
要生成证书、我参考 了 CC3100 SSL 演示应用 程序和 CC3200 SSL 演示应用程序。 我遵循了使用部分和 来自 CC3200 SSL 演示应用程序的 CA 证书。
下面是 ConnectToHTTPServer 代码。 对 HTTPCLI_CONNECT 的调用返回一个-102错误代码。
静态_i32 ConnectToHTTPServer (HTTPCLI_Handle https 客户端)
{
_i32 RetVal =-1;
struct sockaddr_in 地址;
//开始安全连接
struct HTTPCLI_SecureParams sparams;
//结束安全连接
#ifdef use_proxy
struct sockaddr_in paddr;
paddr.sin 系列= AF_iNet;
paddr.sin 端口= htons (proxy_port);
paddr.sin_addr.s_addr = sl_Htonl (proxy_IP);
HTTPCLI_setProxy ((struct sockaddr *)&paddr);
#endif
//开始安全连接
slDateTime_t dt;
/*设置当前日期以验证证书*/
DT.SL_TM_DAY = 18;
DT.SL_TM_mon = 8;
DT.SL_TM_year = 2017;
DT.SL_TM_Hour = 4;
DT.SL_TM_MIN = 17;
DT.SL_TM_sec = 0;
sl_DevSet (sl_device_General_configuration、sl_device_General_configuration_date_time、sizeof (SlDateTim_t)、(unsigned char *)(&dt));
//结束安全连接
/*解析主机名/IP */
RetVal = sl_NetAppDnsGetHostByName (host_name、PAL_strlen (host_name)、
&g_DestinationIP、sl_AF_iNet);
if (RetVal < 0)
{
cli_Write ("设备无法获取主机名的 IP \r\n);
ASSERT_ON_ERROR (RetVal);
}
//开始安全连接
/*设置安全 TLS 连接*/
/*安全参数*/
sparams.method.secureMethod = SL_SO_SEC_METHOD_TLSv1_2;
sparams.mask.secureMask = SL_SEC_MASK_TLS_RSA_ITH_AES_256_CBC_SHA;//SL_SEC_MASK_SSL_RSA_ITH_RC4_128_SHA;//SL_SEC_MASK_TLS_RSA_ITH_AES_256_CBC_SHA;
strncpy (sparams.cafile、sl_SSL_CA_CERT、sizeof (sl_SSL_CA_CERT));
sparams.privkey[0]= 0;
sparams.cert[0]= 0;
sparams.dhkey[0]= 0;
HTTPCLI_setSecureParams (&sparams);
//结束安全连接
/*设置 HTTP 连接的输入参数*/
Addr.Sin_Family = AF_iNet;
Addr.sin 端口= htons (host_port);
addr.sin addr.s_addr = sl_Htonl (g_DestinationIP);
/* HTTPCli open 调用:句柄,仅限地址参数*/
HTTPCLI_con构(httpClient);
// RetVal = HTTPCLI_connect (https 客户端、(struct sockadr *)&addr、0、NULL);
RetVal = HTTPCLI_CONNECT (httpClient、(struct sockaddr *)&addr、HTTPCL_TYPE_TLS、NULL);
如果(RetVal < 0)
{
cli_Write ("与服务器的连接失败\n\r\n");
ASSERT_ON_ERROR (RetVal);
}
cli_Write (" successfully connected to the server \r\n);
返回成功;
}
在调试过程中、我注意到错误发生在中
RET =连接(skt、sa、slen);
在 httpcli.c 文件中。
总之、我认为这可能是一个简单的配置问题。 感谢您支持解决此问题。
参考文献: