我们在运行ECOS OS的嵌入式系统上运行了 OpenSSL 。我们现在正在将我们的 OpenSSL 升级到 1.0.2 版本。我们已经成功移植和编译了 OpenSSL 库。但是,当我们尝试使用 SSL(通过 https)连接我们的设备时,握手会失败并总是出现错误记录 mac 警报。我们已启用 OpenSSL 调试选项,但无法确定其失败的原因。
有人将最新的 OpenSSL 代码移植到 ECOS 吗?我们是否需要为 ECOS 使用带有最新 OpenSSL 代码的任何特殊编译标志?
作为参考,这里是相关部分ssl3_get_record
:
mac = rr->data + rr->length;
i=s->method->ssl3_enc->mac(s,md,0 /* not send */);
if (i < 0 || CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0)
{
al=SSL_AD_BAD_RECORD_MAC;
SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC);
goto f_err;
}