Intel Mac で正常に動作する NIST-800-90Ar1 CTR-DRBG ランダム ビット ジェネレーターの C 実装がありますが、Apple Silicon Mac でテストすると、SIGKILL 信号を受信しました。
私はすでに解決策を見つけました。私は情報を共有しているだけです。問題が解決しない場合は、新しい人に尋ねてください.
Intel Mac で正常に動作する NIST-800-90Ar1 CTR-DRBG ランダム ビット ジェネレーターの C 実装がありますが、Apple Silicon Mac でテストすると、SIGKILL 信号を受信しました。
私はすでに解決策を見つけました。私は情報を共有しているだけです。問題が解決しない場合は、新しい人に尋ねてください.
原因は、 でポインター演算を行っているuintptr_t
ため、ポインター認証が失敗することです。
たとえば、次のコード フラグメントがコードに含まれていました。
uint8_t *seed = (void *)((uintptr_t)ctx + ctx->seed_offset);
算術オンuintptr_t
は、ポインターの認証情報を破棄します。それはあったはずです:
uint8_t *seed = ((uint8_t *)ctx + ctx->seed_offset);
ポインター認証は、ARM プロセッサに存在するセキュリティ機能であり、これは WWDC 2020 トークで紹介されました。