如何正确使用libsodium以使其在版本之间兼容?

Wan*_*uta 15 c compatibility cryptography libsodium

我打算在文件中存储一堆记录,然后用libsodium签署每条记录.但是,我希望我的程序的未来版本能够检查当前版本的签名,理想情况下反之亦然.

对于当前版本的Sodium,使用Ed25519算法进行签名.我想,默认原语可以在Sodium的新版本中改变(否则libsodium不会暴露出选择特定版本的方法,我认为).

我是不是该...

  1. 始终使用默认原语(即crypto_sign)
  2. 使用特定原语(即crypto_sign_ed25519)
  3. Do(1),但存储sodium_library_version_major()文件中的值(在专用的'钠版本'字段或一般'文件格式修订'字段中)并退出当前运行的版本较低
  4. 做(3),还要存放 crypto_sign_primitive()
  5. 做(4),还有商店crypto_sign_bytes()和朋友

......还是我应该完全做其他事情?

我的程序将用C语言编写.

Fra*_*nis 2

只需使用高级 API。

如果不更新库的主要版本,高级 API 中的函数不会使用不同的算法。

libsodium 1.xy 中唯一可以预期的重大更改是删除已弃用/未记录的函数(在使用该--enable-minimal开关编译的当前版本中甚至不存在这些函数)。其他一切都将保持向后兼容。

新算法可能会在没有高级包装器的 1.xy 版本中引入,并将通过 libsodium 2 中的新高级 API 进行稳定和公开。

因此,不必费心打电话crypto_sign_ed25519()。只需使用crypto_sign().