-1

我有一个 NIST-800-90Ar1 CTR-DRBG 随机位生成器的 C 实现,它在 Intel Mac 上运行良好,但是当我在 Apple Silicon Mac 上测试它时,它收到了 SIGKILL 信号。

我已经制定了解决方案,我只是分享信息,如果它不能解决您的问题,请询问新的。

4

1 回答 1

0

原因是我正在对 进行指针运算uintptr_t,导致指针身份验证失败。

例如,我的代码中存在以下代码片段:

uint8_t *seed = (void *)((uintptr_t)ctx + ctx->seed_offset);

算术 onuintptr_t会破坏指针上的身份验证信息。应该是:

uint8_t *seed = ((uint8_t *)ctx + ctx->seed_offset);

指针身份验证是 ARM 处理器中的一项安全功能,这是在 WWDC 2020 演讲中介绍的。

于 2020-12-04T13:50:13.880 回答