gpt4 book ai didi

c - Windows CE 6.0 上的 ASN1_TIME 错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:10 26 4
gpt4 key购买 nike

我在 Windows 7 和 Windows Embedded CE6.0(ARMV4I 平台)上使用 OpenSSL。

为此,我最初为 Windows 7 和我的 ARMV4I 平台自己编译了 OpenSSL 版本 0.9.8w。正在执行 openssl.exe在两台机器上都能正常工作。

我编译mkcert.c它使用 libeay32.dll我之前构建的。

在我的 Windows 7 机器上,一切正常,证书颁发正确。但是在 ARMV4I 设备上,我注意到日期(X509_get_notBefore(x)X509_get_notAfter(x))是错误的:

  • Windows 7 - X509_get_notBefore(x)值为 150710093249Z
  • CE 6.0 - X509_get_notBefore(x)39150810093249Z

并且差异始终是值 39000100000000 .这导致 Windows CE 上的有效性差异,现在是 Aug 10 09:32:49 3915 GMT而不是 Jul 10 09:32:49 2015 GMT .

后来我编译了OpenSSL 1.0.2c并执行了相同的代码,但问题仍然存在。

您知道为什么会发生这种情况以及如何解决它吗?

(一种可能的解决方法是在 Windows CE 上手动调整 ASN1_TIME:

#ifdef UNDER_CE
X509_gmtime_adj(notBefore,-39000100000000);
X509_gmtime_adj(notAfter,-39000100000000);
#endif

然后这需要分多个步骤发生 X509_gmtime_adj()仅接受 long 类型的值作为第二个参数:

ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);

我使用 Microsoft Visual Studio 2008 版本 3.5 SP1。

最佳答案

问题可以通过以下修复解决: github commit

关于c - Windows CE 6.0 上的 ASN1_TIME 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com