OpenSSL 1.1.0:现在必须分配HMAC_CTX,为什么?

时间:2019-02-09 20:11:21

标签: c openssl

检查最近的OpenSSL版本中的更改,我现在注意到HMAC_CTX结构必须现在必须分配在堆上。标头仅向前声明它(在ossl_typ.h中)。

我想知道背后的想法是什么。鉴于分配给堆的内存会增加开销,因此必须有充分的理由使库变慢。我只是找不到背后的理由。

这里的任何人都知道是什么使开发人员决定对此进行强制分配吗?

1 个答案:

答案 0 :(得分:0)

我已经看到许多OpenSSL结构都以相同的方式运行。我认为这是因为OpenSSL的实现者希望将实现状态“隐藏”在库用户之外。这样,用户就不会以实现者不希望您使用的方式“弄乱”它。这也意味着实现者可以在不更改用户代码的情况下更改那里的实现。基本上是C++ PIMPL pattern的“ C”版本。