【问题标题】:ExCrypto on OTP 24OTP 24 上的 ExCrypto
【发布时间】:2021-10-05 23:04:00
【问题描述】:

应用程序已升级为运行 elixir 1.12.2 并使用 OTP 24,我已确认这些是正在运行的版本。

运行一些测试时出现以下错误:

** (UndefinedFunctionError) function :crypto.block_encrypt/4 is undefined or private, use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_(dyn_iv)?_init + crypto:crypto_(dyn_iv)?_update + crypto:crypto_final instead

我所做的大部分谷歌搜索都建议将 plug_crypto 升级到 1.2.2 版本,这已经完成。

这个函数 block_encrypt/4 是底层 Erlang 代码,在我的 Elixir 代码中调用 block_encrypt/4 的行是:

ExCrypto.encrypt(content_key, "", content_json)

我为 ExCrytpo 找到了一个 PR 应该可以解决这个问题:https://github.com/ntrepid8/ex_crypto/pull/40

有人留言询问是否需要将代码推送到 hex.pm,并想知道是否有可能此代码尚未发布到 hex.pm?

【问题讨论】:

    标签: dependencies elixir elixir-mix


    【解决方案1】:

    是的,ExCrypto 似乎还没有发布包含该 PR 对 Hex 的更改的版本。最新版本on hex0.10.0,于2019年2月20日发布。PR于2021年5月27日合并。

    作为一种解决方法,您可以使用 git 存储库作为依赖源,而不是 Hex:

    {:ex_crypto, git: "https://github.com/ntrepid8/ex_crypto.git", branch: "master"}
    

    固定到特定的提交而不是主分支可能是个好主意:

    {:ex_crypto,
     git: "https://github.com/ntrepid8/ex_crypto.git",
     ref: "0915c274503f9fc6d6f5fab8c98467e7414cf8fc"}
    

    另一个(可能更好)的选择是,您可以通过更新代码直接使用 Erlang :crypto 库来消除对 ExCrypto 的依赖。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 2022-01-24
      • 2020-10-04
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多