查看源代码 加密发布说明

本文档描述了对 Crypto 应用程序所做的更改。

Crypto 5.5.2

已修复的错误和故障

  • crypto:strong_rand_bytes/2 修复后可在安装了 FIPS 支持的 Ubuntu Pro 上运行。

    自有 ID:OTP-19223 辅助 ID:PR-8800GH-8769

  • 修复了在使用 OpenSSL 3.4 或更高版本时,摘要类型为 shake128shake256crypto:hash_final/1 的问题。

    自有 ID:OTP-19329 辅助 ID:GH-8997PR-9002

Crypto 5.5.1

已修复的错误和故障

  • 使用 --enable-fips 构建的 crypto 现在将接受没有 fips 提供程序的 OpenSSL 3 库,只要不启用 fips 模式。

    自有 ID:OTP-19212 辅助 ID:GH-8562

改进和新功能

  • 在文档中添加了一条警告,以避免调用 crypto:start/0,因为它不适用于 FIPS 模式。请改用 application:start(crypto)

    自有 ID:OTP-19143

  • 已撤销对 RSA 加密函数的弃用,因为仍然存在 PKCS-1 以外的其他填充模式的合法用例。

    虽然在某些版本的加密库中使用 PCKS-1 填充可以认为是安全的,但我们仍然建议使用其他对 oracle 攻击不那么敏感的算法。

    自有 ID:OTP-19163

  • 一些已删除函数的编译器警告已更正,以指出正确的替换函数。

    自有 ID:OTP-19186 辅助 ID:PR-8709

Crypto 5.5

改进和新功能

  • 文档已迁移为使用 Markdown 和 ExDoc。

    自有 ID:OTP-18955 辅助 ID:PR-8026

  • 删除了自 OTP 25 起标记为已弃用的函数 crypto_dyn_iv_init/3crypto_dyn_iv_update/3

    自有 ID:OTP-18973

  • 添加了对 sm3 哈希和 hmac 的支持。

    自有 ID:OTP-18975 辅助 ID:PR-6658

  • 当清除 crypto 时,会调用 OPENSSL_thread_stop 以防止泄露线程特定数据。

    自有 ID:OTP-18978 辅助 ID:PR-7809

  • 根据 GB/T 32907-2016 添加了 SM4 分组密码实现。

    自有 ID:OTP-19005 辅助 ID:PR-8168

  • 现有函数 ssl:key_exporter_materials/4 现在已记录并受支持。

    潜在的不兼容性

    自有 ID:OTP-19016 辅助 ID:PR-8233

  • 由于对 PKCS #1 v1.5 填充的另一次攻击,称为 Marvin 攻击,我们收到了来自 Red Hat 的 Hubert Kario 的警报。您可以在 https://people.redhat.com/~hkario/marvin/ 找到有关此攻击的更多详细信息。现在不建议使用可能容易受到攻击的函数。

    请注意,您可以使用适当版本的 OpenSSL 和我们的软件来缓解此问题,但我们建议根本不要使用它们。

    还要避免使用 TLS-1.2 之前的 TLS 版本(默认情况下不受支持),并且不要启用 RSA 密钥交换密码套件(默认情况下不受支持)。

    潜在的不兼容性

    自有 ID:OTP-19075

Crypto 5.4.2.3

已修复的错误和故障

  • 修复了如果多个 Erlang 进程第一次调用 crypto:supports(curves) 时可能导致阻塞调度程序线程的错误。此错误仅存在于 OTP-26.2.5.4 中。

    自有 ID:OTP-19316 辅助 ID:GH-8971, PR-8979

  • 修复了在使用 OpenSSL 3.4 或更高版本时,摘要类型为 shake128shake256crypto:hash_final/1 的问题。

    自有 ID:OTP-19329 辅助 ID:GH-8997, PR-9002

Crypto 5.4.2.2

已修复的错误和故障

  • 使用 --enable-fips 构建的 crypto 现在将接受没有 fips 提供程序的 OpenSSL 3 库,只要不启用 fips 模式。

    自有 ID:OTP-19212 辅助 ID:GH-8562, PR-8762

  • crypto:strong_rand_bytes/2 修复后可在安装了 FIPS 支持的 Ubuntu Pro 上运行。

    自有 ID:OTP-19223 辅助 ID:PR-8800, GH-8769

Crypto 5.4.2.1

改进和新功能

  • 在文档中添加警告以避免使用 crypto:start/0,因为它不适用于 FIPS 模式。请改用 application:start(crypto)

    自有 ID:OTP-19143

Crypto 5.4.2

已修复的错误和故障

  • 修复了在 MacOS 上使用 OpenSSL 3 和 --enable-fips 构建的问题。

    自有 ID:OTP-19038 辅助 ID:GH-8271, PR-8277

Crypto 5.4.1

已修复的错误和故障

  • 修复了定义 OPENSSL_NO_DES 时的编译错误。

    自有 ID:OTP-18921

  • 函数 crypto:pbkdf2_hmac 将不再阻塞主调度程序。如果迭代计数或块大小参数导致该函数可能需要很长时间才能执行,则该函数将被调度在脏 CPU 调度程序上运行。

    自有 ID:OTP-18996 辅助 ID:PR-8173, PR-8174

Crypto 5.4

已修复的错误和故障

  • 修复了 Windows 上的一些良性编译警告。

    自有 ID:OTP-18895

改进和新功能

  • 为 OpenSSL 3 版本启用引擎支持。

    自有 ID:OTP-18832 辅助 ID:PR-7763

Crypto 5.3

已修复的错误和故障

  • 修复了在具有 musl libc 的操作系统(例如 Alpine linux)上,由于 crypto being 被清除并重新加载(例如通过 init:restart)而导致的 VM 崩溃。

    自有 ID:OTP-18670 辅助 ID:GH-7436, PR-7450

  • 改进了对 LibreSSL 版本的理解。支持 LibreSSL 3.7 的 chacha20 和 chacha20_poly1305。反映了 LibreSSL 2.6.1 中完成的对 DSS/DSA 算法的支持的删除。

    自有 ID:OTP-18758 辅助 ID:PR-7209

改进和新功能

  • crypto 支持 OpenSSL 3.0.* 和 3.1.* 的 FIPS。

    自有 ID:OTP-18666 辅助 ID:PR-7392

Crypto 5.2

已修复的错误和故障

  • 修复了 LibreSSL 的 cmac_update aes_128_cbc。

    自有 ID:OTP-18571

改进和新功能

  • 添加了对 SHAKE128 和 SHAKE256 的支持。

    自有 ID:OTP-18204 辅助 ID:PR-6203

  • 使 -DOPENSSL_API_COMPAT 标志在没有警告的情况下工作。

    自有 ID:OTP-18206 辅助 ID:PR-6167

  • 将 size/1 替换为 tuple_size/1 或 byte_size/1

    size/1 BIF 没有被 JIT 优化,它的使用可能会导致 Dialyzer 的类型更差。

    当已知被测试的值必须是元组时,应始终首选 tuple_size/1

    当已知被测试的值必须是二进制时,应首选 byte_size/1。但是,byte_size/1 也接受位字符串(将大小向上舍入为整数个字节),因此必须确保在调用 byte_size/ 之前调用 is_binary/1,以确保位字符串被拒绝。请注意,编译器会删除对 is_binary/1 的冗余调用,因此如果不确定之前的代码是否已确保参数是二进制的,则在调用 byte_size/1 之前添加 is_binary/1 测试不会造成任何损害。

    自有 ID:OTP-18405 辅助 ID:GH-6672,PR-6702,PR-6768,PR-6700,PR-6769,PR-6812,PR-6814

  • 通过在嵌入模式的引导顺序中添加一个额外的步骤来改进引导期间 on_load 模块的处理,该步骤运行所有 on_load 处理程序,而不是依赖于稍后在内核监督树启动时显式调用它们。

    这主要是一个代码改进和 OTP 内部简化,以避免未来的错误并简化代码维护。

    自有 ID:OTP-18447

Crypto 5.1.4.3

已修复的错误和故障

  • 修复了在 MacOS 上使用 OpenSSL 3 和 --enable-fips 构建的问题。

    自有 ID:OTP-19038 辅助 ID:GH-8271, PR-8277

Crypto 5.1.4.2

已修复的错误和故障

  • 函数 crypto:pbkdf2_hmac 将不再阻塞主调度程序。如果迭代计数或块大小参数导致该函数可能需要很长时间才能执行,则该函数将被调度在脏 CPU 调度程序上运行。

    自有 ID:OTP-18996 辅助 ID:PR-8173, PR-8174

Crypto 5.1.4.1

已修复的错误和故障

  • 修复了在具有 musl libc 的操作系统(例如 Alpine linux)上,由于 crypto being 被清除并重新加载(例如通过 init:restart)而导致的 VM 崩溃。

    自有 ID:OTP-18670 辅助 ID:GH-7436, PR-7450

Crypto 5.1.4

修复的错误和故障

  • 通过此更改,修复了使用 OpenSSL 3 的 crypto:generate_key 调用中的随机错误。

    内部 ID:OTP-18555

Crypto 5.1.3

修复的错误和故障

  • 使用 --with-ssl-rpath=<PATHS> 配置的用户定义的运行时库路径可能无法启用。

    内部 ID:OTP-18384 辅助 ID:PR-6596

  • 确保如果用户已传递用户定义的运行时库路径但无法设置,则 configure 会失败。

    内部 ID:OTP-18408

Crypto 5.1.2

修复的错误和故障

  • 修复 Windows 上使用 --with-ssl--disable-dynamic-ssl-lib 的配置。

    内部 ID:OTP-18147 辅助 ID:GH-6024, PR-6056

  • 如果引擎句柄未显式卸载,则在垃圾回收中正确删除所有引用。

    内部 ID:OTP-18152

  • 更改了引擎加载/卸载函数的行为

    引擎加载/卸载函数已更改语义,以获得更一致的行为并在变量被垃圾回收时正确工作。

    现在,加载函数不会注册要替换的引擎的方法。如果需要,现在将使用新的函数 engine_register/engine_unregister 来处理。

    一些函数已从文档中删除,因此也从 API 中删除,但为了兼容性,它们保留在代码中。

    • engine_load/4:现在与 engine_load/3 相同
    • engine_unload/2:现在与 engine_unload/1 相同
    • ensure_engine_loaded/3:现在与 ensure_engine_loaded/2 相同
    • ensure_engine_unloaded/1, ensure_engine_unloaded/2:现在与 engine_unload/1 相同

    * 可能的不兼容性 *

    内部 ID:OTP-18172 辅助 ID:ERIERL-826

  • 修复了与 OpenSSL 3.0 cryptolib 链接时 AES-CFB 和 Blowfish-CFB/OFB 的命名错误。

    内部 ID:OTP-18200

  • 对于 eddsa,签名/验证现在的行为与 OTP-24 及更早版本相同。

    内部 ID:OTP-18205 辅助 ID:GH-6219

改进和新特性

  • 将椭圆曲线名称从 crypto.erl 传递到 crypto 的 nif。

    内部 ID:OTP-18037

  • 删除了配置选项 --disable-deprecated-warnings。在 OpenSSL 3.0 的支持未完成的一些版本中使用过它。在 OTP 25 中不需要它。

    内部 ID:OTP-18133

  • 现在认为 Crypto 可以与 OpenSSL 3.0 cryptolib 一起用于生产代码。

    ENGINE 和 FIPS 尚未完全正常工作。

    内部 ID:OTP-18153

  • 如果 libcrypto 3.0 中缺少旧版提供程序,则不退出。

    内部 ID:OTP-18217

Crypto 5.1.1

修复的错误和故障

  • 在文档中注明,如果调用 crypto:generate_key/2 指定的密钥长度太小,则 MODP (rfc3526) 组和 OpenSSL 3.0 可能会产生错误。

    内部 ID:OTP-18046

改进和新特性

  • cmac 现在仅使用 3.0 API

    内部 ID:OTP-18010

  • 文档现在已更新,其中包含当前测试 OTP 的 OpenSSL cryptolib 版本。

    内部 ID:OTP-18132

Crypto 5.1

修复的错误和故障

  • 修复 ensure_engine_loaded 中的定时错误

    当并行完成两个 ensure_engine_loaded() 调用时,可能会发生以下情况:一个加密库函数被两者而不是其中一个调用,从而导致错误。通过将实现从 erlang 移到 NIF 函数中来解决此问题,该函数使用互斥锁来保护敏感部分。

    内部 ID:OTP-17858 辅助 ID:ERIERL-728

  • 删除错误的类型 run_time_error()descriptive_error()

    内部 ID:OTP-17984

改进和新特性

  • 针对 autoconf 2.71 调整了 configure 脚本的输入。

    内部 ID:OTP-17414 辅助 ID:PR-4967

  • 添加 crypto:hash_equals/2

    内部 ID:OTP-17471 辅助 ID:PR-4750

  • 将 /opt/homebrew/opt/openssl 添加到搜索 OpenSSL cryptolib 的标准位置。

    内部 ID:OTP-17561

  • crypto_dyn_iv_init/3crypto_dyn_iv_update/3 已弃用。

    内部 ID:OTP-17870

  • 错误消息中的信息已增加。

    以前,错误是用错误类异常 badargnotsuperror 以及其他一些方式(如其他异常或非标准化格式的返回值)发出信号。

    现在它是错误类异常 {notsup|badarg|error, InfoFromCfile, Description::string()}

    InfoFromCfile 是一个术语,其中包含发现错误的 C 文件名称和行号。这主要供加密维护人员或高级用户查找复杂错误的原因(可能在加密本身中)。该术语的内容可能会在将来更改。

    Description 是一个描述错误的纯文本字符串。对于 badargnotsup,其目的是帮助用户查找原因(例如“密钥大小错误”)。特别是对于一些不太可能的 error,如果不深入了解底层加密库,则可能无法理解该字符串。此类消息旨在供加密维护人员使用。

    调用堆栈上的第一个元素(try ... catch error:E:S .... end 中的 S)提供了更多信息,例如在加密调用中的实际参数列表以及在加密内部调用 NIF 中的参数编号(如果可能)。

    受此更改影响的加密函数包括

    sign/4, sign/5, verify/5, verify/6,

    generate_key/2, generate_key/3, compute_key/4,

    hash/2, hash/4, hash_init/1, hash_update/4, hash_final/1,

    mac/3,4, mac_init/3, mac_update/2, mac_final/2,

    pbkdf2_hmac/5,

    public_encrypt/4, private_decrypt/4, private_encrypt/4, public_decrypt/4

    此模式在早期已引入

    crypto_init/3, crypto_init/4, crypto_update/2, crypto_final/1, crypto_get_data/1,

    crypto_one_time/4, crypto_one_time/5, crypto_one_time_aead/6, crypto_one_time_aead/7

    * 可能的不兼容性 *

    内部 ID:OTP-17965

  • 添加了对密钥大小为 128、192 和 256 位的 AES 加密/解密的输出反馈模式 (OFB) 支持。

    内部 ID:OTP-18067 辅助 ID:PR-5866

  • OpenSSL 3.0 中弃用的加密库 API 现在不再使用,以下列出一些例外情况。

    虽然 OpenSSL 3.0.x 本身是稳定的,但它在 OTP/crypto 中的使用仍不应被认为适合生产代码。

    使用 3.0 时,默认情况下仍禁用 ENGINE 的使用。

    弃用的函数仍在 otp_test_engine.c(仅在测试中使用)、mac.c (EVP_PKEY_new_CMAC_key) 和 ec.c 中五个函数调用(EVP_PKEY_assign、EC_KEY_get_conv_form、EVP_PKEY_get1_EC_KEY、EC_KEY_get0_group 和 EC_KEY_set_public_key)中调用。

    内部 ID:OTP-18086 辅助 ID:OTP-16282、OTP-16643、OTP-16644、OTP-17701、OTP-17702、OTP-17704

Crypto 5.0.6.5

修复的错误和故障

  • 函数 crypto:pbkdf2_hmac 将不再阻塞主调度程序。如果迭代计数或块大小参数导致该函数可能需要很长时间才能执行,则该函数将被调度在脏 CPU 调度程序上运行。

    自有 ID:OTP-18996 辅助 ID:PR-8173, PR-8174

Crypto 5.0.6.4

修复的错误和故障

  • 修复了在具有 musl libc 的操作系统(例如 Alpine linux)上,由于 crypto being 被清除并重新加载(例如通过 init:restart)而导致的 VM 崩溃。

    自有 ID:OTP-18670 辅助 ID:GH-7436, PR-7450

Crypto 5.0.6.3

修复的错误和故障

  • 更改了引擎加载/卸载函数的行为

    引擎加载/卸载函数已更改语义,以获得更一致的行为并在变量被垃圾回收时正确工作。

    现在,加载函数不会注册要替换的引擎的方法。如果需要,现在将使用新的函数 engine_register/engine_unregister 来处理。

    一些函数已从文档中删除,因此也从 API 中删除,但为了兼容性,它们保留在代码中。

    • engine_load/4:现在与 engine_load/3 相同
    • engine_unload/2:现在与 engine_unload/1 相同
    • ensure_engine_loaded/3:现在与 ensure_engine_loaded/2 相同
    • ensure_engine_unloaded/1, ensure_engine_unloaded/2:现在与 engine_unload/1 相同

    * 可能的不兼容性 *

    内部 ID:OTP-18172 辅助 ID:ERIERL-826

Crypto 5.0.6.2

修复的错误和故障

  • 修复 Windows 上使用 --with-ssl--disable-dynamic-ssl-lib 的配置。

    内部 ID:OTP-18147 辅助 ID:GH-6024, PR-6056

Crypto 5.0.6.1

修复的错误和故障

  • 修复 ensure_engine_loaded 中的定时错误

    当并行完成两个 ensure_engine_loaded() 调用时,可能会发生以下情况:一个加密库函数被两者而不是其中一个调用,从而导致错误。通过将实现从 erlang 移到 NIF 函数中来解决此问题,该函数使用互斥锁来保护敏感部分。

    内部 ID:OTP-17858 辅助 ID:ERIERL-728

Crypto 5.0.6

改进和新特性

  • 自 OTP-24.2 起,OTP 中的 crypto 应用程序可以使用新的 OpenSSL 3.0 加密库进行编译、链接和使用。

    crypto 应用程序的 3.0 支持已得到改进,但**仍然不建议**用于实验和 alpha 测试以外的其他用途。目前无法保证它能够正常工作,甚至无法与其他 OTP 应用程序(例如 SSL 和 SSH)一起使用,尽管没有已知错误。

    自上一个版本 OTP-24.2 以来,已完成以下改进

    - 它几乎在 OTP 实验室的每次夜间测试中都进行了测试

    - 使用 OpenSSL 3.0 启用了哈希算法 md4ripemd160

    - OpenSSL 3.0 已启用 blowfish_cbcblowfish_ecbdes_cbcdes_cfbdes_ecbrc2_cbcrc4 密码。

    OpenSSL 3.0 仍然禁用或不支持以下功能:

    - ENGINE 支持

    - FIPS 模式

    - 除了内置提供程序之外的其他提供程序

    - 在兼容模式下(例如,表现得像 1.1.1)使用 OpenSSL 3.0 加密库进行编译和链接

    此外,不支持 blowfish_cfb64blowfish_ofb64 密码,并且将来也不会支持。

    OpenSSL 3.0 加密库中已弃用的函数不得禁用,因为 OTP/crypto 仍使用一些已弃用的 API 函数。设置 gcc 标志 -Wno-deprecated-declarations 是为了防止在编译时打印弃用警告。

    自有 ID:OTP-17812 辅助 ID:OTP-16646,OTP-16282

  • Crypto 已在 OpenBSD 上适配 LibreSSL 3.5.0。

    自有 ID:OTP-17941 辅助 ID:OTP-17942

  • 新的配置选项(--disable-otp-test-engine)用于禁止构建某些测试套件中使用的 OTP 测试引擎。

    原因是测试引擎在 LibreSSL 3.5.0 上可能难以编译。对于该特定的加密库版本(或更高版本),此配置选项会自动设置。

    自有 ID:OTP-17942 辅助 ID:OTP-17941

Crypto 5.0.5

修复的错误和故障

  • 修复了使用早期 LibreSSL 版本编译时出现的 C 警告“隐式声明函数 'OpenSSL_version_num'”。

    自有 ID:OTP-17637

  • 未正确检查 AEAD 密码的 FIPS 可用性。

    自有 ID:OTP-17740

  • 修复了即使缺少别名密码(如 aes_128_cbc、aes_256_cbc 等),也可能存在密码别名(如 aes_cbc 等)的问题。

    自有 ID:OTP-17741

改进和新功能

  • OTP 中的 crypto 应用现在可以使用新的 OpenSSL 3.0 加密库进行编译、链接和使用。

    它尚未经过广泛测试,因此在此版本中**不建议**用于实验和 alpha 测试之外的用途。目前无法保证它可以工作,即使与其他 OTP 应用程序(例如 SSL 和 SSH)一起使用,尽管没有已知错误。

    未测试在兼容模式下(例如,表现得像 1.1.1)使用 OpenSSL 3.0 加密库进行编译和链接。未测试外部提供程序。

    FIPS 模式的支持尚未工作,在用 OpenSSL 3.0 编译时禁用。

    OpenSSL 3.0 加密库中已弃用的函数不得禁用,因为 OTP/crypto 仍使用一些已弃用的 API 函数。设置 gcc 标志 -Wno-deprecated-declarations 是为了防止在编译时打印弃用警告。

    使用 OpenSSL 3.0 编译时,哈希算法 md4ripemd160 暂时禁用。

    使用 OpenSSL 3.0 编译时,密码 blowfish_cbcblowfish_cfb64blowfish_ecbblowfish_ofb64des_cbcdes_cfbdes_ecbrc2_cbcrc4 暂时禁用。

    自有 ID:OTP-16646 辅助 ID:OTP-16282

  • crypto 中的错误处理部分已使用新的错误报告支持进行重构。之前像异常一样传播的错误仍然如此,但是当从终端调用失败的函数(例如在故障查找期间)时,会生成更具描述性的文本。

    自有 ID:OTP-17241

  • 添加了一个新函数 crypto:info/0,用于显示有关 crypto NIF 的编译和链接的一些数据。

    自有 ID:OTP-17603

  • pbkdf2_hmac/5 函数添加到 crypto 模块。

    它调用 PKCS5_PBKDF2_HMAC 函数,该函数以高效的方式实现带有 HMAC 的 PBKD2。

    自有 ID:OTP-17808 辅助 ID:PR-5421

Crypto 5.0.4

修复的错误和故障

  • 修复了 crypto 模块清除时的轻微内存泄漏。

    自有 ID:OTP-17668 辅助 ID:PR-5245

  • 修复了在链接某些加密库时,FIPS 模式中可能出现的不一致问题。

    自有 ID:OTP-17672

Crypto 5.0.3

修复的错误和故障

  • 修复了 crypto:ensure_engine_unloaded 中的错误。还修复了与引擎卸载相关的轻微内存泄漏。

    自有 ID:OTP-17593 辅助 ID:ERIERL-679

  • 修复了在 Windows 上启用和禁用(或反之)FIPS 有时会导致进程退出时出现核心转储的问题。

    自有 ID:OTP-17618 辅助 ID:PR-5126,GH-4920

改进和新功能

  • 如果 cryptolib < 1.0.1 且 OTP/crypto 配置为 --enable-fips,则禁用 fips

    否则,旧的 OpenSSL 版本可能会出现编译或加载问题。

    自有 ID:OTP-17389

Crypto 5.0.2

修复的错误和故障

  • 现在,如果需要,EC 密钥将零填充到预期长度。

    自有 ID:OTP-17442 辅助 ID:GH-4861

Crypto 5.0.1

修复的错误和故障

  • 消除核心转储的风险。

    自有 ID:OTP-17391 辅助 ID:GH-4810

  • 修复并记录了 $ERL_TOP/HOWTO/INSTALL.md 中的 DED_LDFLAGS_CONFTEST 配置变量。

    自有 ID:OTP-17419 辅助 ID:GH-4821

  • 提交生成的 configure 脚本。

    自有 ID:OTP-17420 辅助 ID:OTP-17398,GH-4821

Crypto 5.0

修复的错误和故障

  • /usr/local/opt/openssl 添加到 openssl 配置搜索路径。此路径是 OS X 上某些工具放置 openssl 的位置。

    自有 ID:OTP-16882

  • 修复了 clang 编译器产生的编译器警告。

    自有 ID:OTP-17105 辅助 ID:PR-2872

  • 如果无法启用请求的功能,则 cryptoerts 中的 configure 脚本现在将失败。

    cryptoconfigure 脚本的大部分已重写,进行了各种改进和错误修复。它现在可以更好地找到可用的 OpenSSL 库,但在以下情况下,它将无法检测到 OpenSSL 库,而在以前,它有时会偶然检测到这些库

    • include 目录和 lib 目录部分安装在不同基本目录中的 OpenSSL 安装。为了在此更改后检测此类安装,用户必须使用 --with-ssl=<path>--with-ssl-incl=<path> configure 命令行参数显式指定位置。
    • 在 Debian 衍生产品上使用旧的 gcc 编译器或其他编译器在 lib 目录下构建具有多架构目录时。为了在此更改后检测此类安装,用户必须使用 --with-ssl-lib-subdir=lib/<multiarch-dir> configure 命令行参数显式指定多架构目录名称。

    自有 ID:OTP-17254 辅助 ID:ERIERL-618,GH-4230

  • 在 crypto:sign/4 和 crypto:verify/6 的规范中缺少值“none”。

    自有 ID:OTP-17312 辅助 ID:PR-4723

改进和新功能

  • 现在已删除 OTP-23.0 中已弃用的函数和密码名称。

    * 可能的不兼容性 *

    自有 ID:OTP-16656

  • 删除了包含多余目标文件的已安装目录 priv/obj/。

    自有 ID:OTP-17001 辅助 ID:PR-2852

  • TLS 连接现在支持 EdDSA 证书。

    自有 ID:OTP-17142 辅助 ID:PR-4756,GH-4637,GH-4650

  • 添加 prop_aead 属性以从 crypto:cipher_info/1 映射。

    自有 ID:OTP-17313 辅助 ID:PR-4686

Crypto 4.9.0.4

修复的错误和故障

  • 更改了引擎加载/卸载函数的行为

    引擎加载/卸载函数已更改语义,以获得更一致的行为并在变量被垃圾回收时正确工作。

    现在,加载函数不会注册要替换的引擎的方法。如果需要,现在将使用新的函数 engine_register/engine_unregister 来处理。

    一些函数已从文档中删除,因此也从 API 中删除,但为了兼容性,它们保留在代码中。

    • engine_load/4:现在与 engine_load/3 相同
    • engine_unload/2:现在与 engine_unload/1 相同
    • ensure_engine_loaded/3:现在与 ensure_engine_loaded/2 相同
    • ensure_engine_unloaded/1, ensure_engine_unloaded/2:现在与 engine_unload/1 相同

    * 可能的不兼容性 *

    内部 ID:OTP-18172 辅助 ID:ERIERL-826

Crypto 4.9.0.3

修复的错误和故障

  • 修复 ensure_engine_loaded 中的定时错误

    当并行完成两个 ensure_engine_loaded() 调用时,可能会发生以下情况:一个加密库函数被两者而不是其中一个调用,从而导致错误。通过将实现从 erlang 移到 NIF 函数中来解决此问题,该函数使用互斥锁来保护敏感部分。

    内部 ID:OTP-17858 辅助 ID:ERIERL-728

  • 如果引擎句柄未显式卸载,则在垃圾回收中正确删除所有引用。

    内部 ID:OTP-18152

Crypto 4.9.0.2

修复的错误和故障

  • 现在,如果需要,EC 密钥将零填充到预期长度。

    自有 ID:OTP-17442 辅助 ID:GH-4861

Crypto 4.9.0.1

修复的错误和故障

  • 消除核心转储的风险。

    自有 ID:OTP-17391 辅助 ID:GH-4810

  • 提交生成的 configure 脚本。

    自有 ID:OTP-17420 辅助 ID:OTP-17398,GH-4821

Crypto 4.9

修复的错误和故障

  • 修复了 crypto ENGINE 中的轻微内存泄漏,并增强了代码的健壮性。

    自有 ID:OTP-17212

  • 如果在 OpenSSL 配置中设置了 NO_EC*,则 otp_test_engine 不再失败。

    自有 ID:OTP-17256 辅助 ID:PR-4580,GH-4573

改进和新功能

  • 各种地址消毒器支持。

    自有 ID:OTP-16959 辅助 ID:PR-2965

  • 现在,对于 1.0.2 及更早版本的 OpenSSL 加密库版本,已禁用 EVP。

    自有 ID:OTP-17116 辅助 ID:PR-2972

  • 删除了未使用 C 函数的警告

    自有 ID:OTP-17145 辅助 ID:OTP-17105,PR-2872

Crypto 4.8.3

修复的错误和故障

  • 在 SRP 中的 BN 调用中添加了缺失的标志。

    自有 ID:OTP-17107

Crypto 4.8.2

修复的错误和故障

  • 修复了 configure 脚本源中 AC_CONFIG_AUX_DIRS() 宏的使用。

    自有 ID:OTP-17093 辅助 ID:ERL-1447,PR-2948

Crypto 4.8.1

修复的错误和故障

  • 无论如何加载 crypto,都在加载 crypto 时在 NIF 中构建支持的曲线缓存。

    这可以防止不同的进程同时启动 crypto 应用程序时可能出现的问题。

    自有 ID:OTP-16819 辅助 ID:PR-2720

  • 现在可以使用 crypto 和 openssl 构建并启用 gprof,并将它们静态链接到 VM 中。

    自身 ID: OTP-17029

改进和新特性

  • 修复了由于互斥锁问题,在使用较旧的 OpenSSL 时 HMAC 性能下降的问题。

    实现了一个变通方法,允许从使用 EVP API 进行 HMAC 操作时回退。在某些架构上,这可能会提高性能,特别是对于旧版本的 OpenSSL。对于 1.0.2 之前的 openssl 版本,始终启用此回退到低级函数的功能。

    自身 ID: OTP-17025 辅助 ID: ERL-1400, PR-2877

Crypto 4.8

修复的 Bug 和故障

  • 修复了 crypto 中 crypto_init 和 crypto:one_time 的类型规范错误

    自身 ID: OTP-16658 辅助 ID: OTP-15884, ERL-1257

  • crypto:rand_uniform/2 的弃用消息指示了一个不存在的函数。现在建议使用正确的函数 (rand:uniform/1)。

    自身 ID: OTP-16846 辅助 ID: PR-2741

改进和新特性

  • 实现了一个变通方法,允许从使用 EVP API 进行 Diffie-Hellman 密钥生成时回退

    自身 ID: OTP-16771 辅助 ID: ERIERL-509

  • 用于密钥生成的内部 Diffie-Hellman 高级 API 在旧的且现在不受 OpenSSL 支持的加密库版本(1.0.1 及更早版本)中速度很慢。

    如果无论如何使用了这样的加密库,则会在 crypto 应用程序内部使用低级 API。

    自身 ID: OTP-16774

Crypto 4.7

修复的 Bug 和故障

  • Crypto 报告了不支持的椭圆曲线,例如在 Fedora 发行版上作为受支持的曲线。

    自身 ID: OTP-16579 辅助 ID: ERL-825

改进和新特性

  • 添加了对 ed25519 和 ed448 的支持到 crypto:generate_key

    自身 ID: OTP-15967 辅助 ID: PR-2329

  • 新的 crypto 函数 API(crypto_init、crypto_update 和 crypto_one_time)已更新。

    现在有一个函数 crypto_final/1,并且可以在 crypto_init/3crypto_init/4 中设置选项。有关详细信息,请参阅手册。

    自身 ID: OTP-16160

  • 正如在 OTP 22.0 中宣布的那样,在 CRYPTO 中引入了新的 API。有关更多信息和建议的替换函数,请参阅 CRYPTO 用户指南中的 新旧 API 章节。

    旧 API 现在已在 OTP-23.0 中弃用,并将会在 OTP-24.0 中移除。

    此弃用包括密码名称。请参阅 crypto 用户指南中已弃用的密码名称部分,该部分位于旧 API章节。

    自身 ID: OTP-16232

  • 修复了在没有已弃用的 OpenSSL 加密库 API 的情况下进行 C 编译的问题

    自身 ID: OTP-16369 辅助 ID: PR-2474

  • 重构了对已弃用和已删除函数的内部处理。

    自身 ID: OTP-16469

  • 将缺少的 'eddh' 添加到 crypto:supports(public_keys)

    自身 ID: OTP-16583

Crypto 4.6.5.4

修复的 Bug 和故障

  • 现在,如果需要,EC 密钥将零填充到预期长度。

    自有 ID:OTP-17442 辅助 ID:GH-4861

Crypto 4.6.5.3

修复的 Bug 和故障

  • 消除核心转储的风险。

    自有 ID:OTP-17391 辅助 ID:GH-4810

  • 提交生成的 configure 脚本。

    自有 ID:OTP-17420 辅助 ID:OTP-17398,GH-4821

Crypto 4.6.5.2

修复的 Bug 和故障

  • 在 SRP 中的 BN 调用中添加了缺失的标志。

    自有 ID:OTP-17107

Crypto 4.6.5.1

改进和新特性

  • 实现了一个变通方法,允许从使用 EVP API 进行 Diffie-Hellman 密钥生成时回退

    自身 ID: OTP-16771 辅助 ID: ERIERL-509

Crypto 4.6.5

修复的 Bug 和故障

  • 修复了涉及调用 crypto ng_api 的潜在内存泄漏。

    自身 ID: OTP-16428 辅助 ID: PR-2511

Crypto 4.6.4

修复的 Bug 和故障

  • 添加了常数时间比较。

    自身 ID: OTP-16376

Crypto 4.6.3

改进和新特性

  • 密码 aes_cfb8 和 aes_cfb128 现在使用 EVP 接口。支持的密钥长度为 128、192 和 256 位。

    自身 ID: OTP-16133 辅助 ID: PR-2407

  • 密码 aes_cfb8 和 aes_cfb128 现在在启用 FIPS 模式下可用。

    自身 ID: OTP-16134 辅助 ID: PR-2407

Crypto 4.6.2

修复的 Bug 和故障

  • 以前在解密 chacha20_poly1305 时未检查 AEAD 标记

    自身 ID: OTP-16242 辅助 ID: ERL-1078

Crypto 4.6.1

修复的 Bug 和故障

  • 修复了如果 erlang 模拟器链接了非常旧的加密库版本(1.0.1 或更早版本)时的错误。

    如果 crypto 函数中使用了未知的密码名称,则现在修复的 bug 可能会触发核心转储。

    自身 ID: OTP-16202

Crypto 4.6

修复的 Bug 和故障

  • crypto_one_time/4 的实现已调整为与类型规范匹配。该函数的规范和黑盒行为保持不变。

    一些细节:规范和实现分别来看都是正确的。但是,当两者同时与 crypto_one_time/5(由 crypto_one_time/4 的实现调用)结合使用时,Dialyzer 检测到了一个(明显的)错误,其检查比平常更彻底。

    自身 ID: OTP-15884 辅助 ID: ERL-974

  • 当启用 FIPS 模式使用 crypto 时,摘要未被正确处理。

    自身 ID: OTP-15911

  • 修复了 ng_crypto_init_nif 中错误处理代码中的内存泄漏。

    自身 ID: OTP-15924

  • 修复了 crypto nif 的静态构建损坏的问题

    自身 ID: OTP-15928 辅助 ID: PR-2296

改进和新特性

  • 消息验证码 (MAC) CMAC、HMAC 和 Poly1305 在新的 Crypto API 中统一为通用函数。请参阅 CRYPTO 手册。

    自身 ID: OTP-13872

Crypto 4.5.1

修复的 Bug 和故障

  • 在 crypto:supports 中,对于 1.0.1 之前的加密库,密码 aes-ctr 被错误地禁用。但是,它在加密和解密函数中有效。

    自身 ID: OTP-15829

Crypto 4.5

修复的 Bug 和故障

  • 修复了 crypto:poly1305/2 错误返回中的一个 bug。它返回原子 notsup 而不是异常 notsup

    * 可能的不兼容性 *

    自身 ID: OTP-15677

  • 密码 chacha20 是在 OpenSSL 1.1.0 中引入的。但是,在非常奇怪的情况下,它可能会在低于 OpenSSL 1.1.0d 的版本上失败。因此,它对于这些版本被禁用。

    * 可能的不兼容性 *

    自身 ID: OTP-15678

改进和新特性

  • 实现了一种新的 rand 模块算法 exro928ss (Xoroshiro928**)。它具有非常长的周期和良好的所有输出位的统计质量,同时仍然仅比默认算法慢约 50%。

    相同的生成器也用作新的 crypto 插件中用于 rand 模块的长周期计数器,该插件的算法为 crypto_aes。此插件使用 AES-256 对计数器进行加扰,从而掩盖任何可检测到的统计伪影。加扰以块为单位完成,这些块被缓存以获得良好的摊销速度(约为默认算法的一半)。

    自身 ID: OTP-14461 辅助 ID: PR-1857

  • Crypto 的单个 C 文件被拆分为多个文件。不同部分中的不同编码风格被统一为单一风格。

    自身 ID: OTP-14732 辅助 ID: PR-2068, PR-2095

  • crypto 应用程序的构建配置已从 erts 应用程序移动到 crypto 应用程序中。

    自身 ID: OTP-15129

  • 添加了两个哈希函数 blake2bblake2s (分别为 64 位哈希和 32 位哈希)。这些是现代且标准的哈希函数,用于区块链和加密通信协议。自 1.1.1 版本以来,这些哈希函数在 OpenSSL 中可用。

    自身 ID: OTP-15564 辅助 ID: PR-2129

  • 在 crypto 中实现了一个新的 API。有关更多信息,请参阅 CRYPTO 用户指南,新旧 API 章节。

    带有 crypto:block_*crypto:stream_* 接口的旧 API 为了兼容性而保留,但是使用新 API 实现。请注意,由于错误检查更加彻底,因此可能存在参数(例如错误的长度)不再被接受的情况。

    * 可能的不兼容性 *

    自身 ID: OTP-15644 辅助 ID: OTP-14732, OTP-15451, PR-1857, PR-2068, PR-2095

  • 新的 hash_info/1 和 cipher_info/1 函数返回带有关于参数中哈希或密码信息的 map。

    自身 ID: OTP-15655 辅助 ID: PR-2173, ERL-864, PR-2186

  • 在编译 CRYPTO 应用程序的 C 部分时,遵守额外的 OpenSSL 配置标志: no-bfno-blake2no-chachano-cmacno-dhno-dsano-md4no-poly1305no-rc2no-rc4no-rmd160

    自身 ID: OTP-15683

  • 引入了一个新函数 crypto:supports/1。单个参数采用一个原子作为参数: hashespublic_keysciphersmacscurvesrsa_opts。返回值是支持的算法列表。

    除了参数和返回值外,与现有的 crypto:supports/0 的区别在于,旧函数报告旧 api 支持的内容,而新函数报告新 api 中的算法。

    自身 ID: OTP-15771

Crypto 4.4.2.3

修复的错误和故障

  • 在 SRP 中的 BN 调用中添加了缺失的标志。

    自有 ID:OTP-17107

Crypto 4.4.2.2

修复的错误和故障

  • 添加了常数时间比较。

    自身 ID: OTP-16376

Crypto 4.4.2.1

改进和新特性

  • 密码 aes_cfb8 和 aes_cfb128 现在使用 EVP 接口。支持的密钥长度为 128、192 和 256 位。

    自身 ID: OTP-16133 辅助 ID: PR-2407

  • 密码 aes_cfb8 和 aes_cfb128 现在在启用 FIPS 模式下可用。

    自身 ID: OTP-16134 辅助 ID: PR-2407

Crypto 4.4.2

修复的错误和故障

  • 修复了 Windows 上的构建链接错误。未解析的符号 'bcmp'。

    自有 ID:OTP-15750 辅助 ID:ERL-905

Crypto 4.4.1

修复的错误和故障

  • 修复了一个导致 crypto:signcrypto:verify 在一种情况下返回错误消息 badarg 而不是 notsup 的错误。这种情况是在使用 eddsa 密钥(即 ed15519 或 ed448)进行签名或验证时,但仅当 FIPS 受支持且启用时。

    自有 ID:OTP-15634

改进和新特性

  • 添加了一个加密基准测试套件。

    自有 ID:OTP-15447

Crypto 4.4

修复的错误和故障

  • 更新了加密应用程序的 C 代码、文档和测试中的 RSA 选项部分。

    自有 ID:OTP-15302

改进和新特性

  • 添加了 ed25519 和 ed448 签名/验证。

    需要 OpenSSL 1.1.1 或更高版本作为 OTP 应用程序 crypto 下的加密库。

    自有 ID:OTP-15419 辅助 ID:OTP-15094

  • 修复了 valgrind 警告。

    自有 ID:OTP-15467

Crypto 4.3.3

修复的错误和故障

  • RSA 选项 rsa_mgf1_mdrsa_oaep_mdrsa_oaep_label 始终处于禁用状态。现在,当使用合适的加密库时,它们将被启用。

    它们仍然是实验性的,可能会在没有事先通知的情况下更改。

    自有 ID:OTP-15212 辅助 ID:ERL-675、PR1899、PR838

  • 密码 aes_ige256blowfish_cbccrypto:next_iv/2 中存在命名问题。

    自有 ID:OTP-15283

  • 如果使用 LibreSSL 作为加密库,则 RSA_SSLV23_PADDING 将被禁用。这是由于编译问题。

    将来将对此进行进一步调查。

    自有 ID:OTP-15303

改进和新特性

  • 现在,在 crypto:supports/0 中,支持的命名椭圆曲线在一个新的条目中,以 'curves' 标记。

    函数 crypto:ec_curves/0 为了兼容性而保留。

    自有 ID:OTP-14717 辅助 ID:OTP-15244

  • CRYPTO 和 PUBLIC_KEY 应用程序中的类型已重做,并纠正了一些错误。

    文档现在从类型生成,并进行了一些澄清。

    CRYPTO 用户指南中添加了一个关于算法细节(如密钥大小和可用性)的新章节。

    自有 ID:OTP-15134

  • 如果使用 OpenSSL 1.1.1 或更高版本作为加密库,则现在可以使用 SHA3 作为单独的哈希和 HMAC。

    可用长度在 crypto:supports/0 中的 'hashs' 条目中报告为 sha3_*

    自有 ID:OTP-15153

  • 如果使用 OpenSSL 1.1.1 或更高版本作为加密库,则现在支持 mac 算法 poly1305 和密码算法 chacha20

    自有 ID:OTP-15164 辅助 ID:OTP-15209

  • 如果使用 OpenSSL 1.1.1 或更高版本作为加密库,则现在支持密钥交换 Edward 曲线 x25519x448

    自有 ID:OTP-15240 辅助 ID:OTP-15133

  • 现在,在 crypto:supports/0 中,签名/验证和加密/解密的支持 RSA 选项在一个以 'rsa_opts' 标记的新条目中报告。

    确切的集合仍然是实验性的,可能会在没有事先通知的情况下更改。

    自有 ID:OTP-15260

  • 添加了密码 aes_ccm

    自有 ID:OTP-15286

Crypto 4.3.2

修复的错误和故障

  • 更新了加密引擎函数以处理引擎的多次加载。

    engine_load/3/4 已更新,因此它不会将引擎 ID 添加到 OpenSSL 的内部引擎列表中,这使得如果引擎不包含全局数据,则可以多次运行 engine_load。

    添加了 ensure_engine_loaded/2/3,以保证引擎只加载一次,并且后续调用只返回对其的引用。这是通过将 ID 添加到内部 OpenSSL 列表,并在调用函数时检查它是否已注册来完成的。

    添加了 ensure_engine_unloaded/1/2 以卸载使用 ensure_engine_loaded 加载的引擎。

    然后添加了一些更多实用程序函数。

    engine_add/1,将引擎添加到 OpenSSL 内部列表

    engine_remove/1,从 OpenSSL 内部列表删除引擎

    engine_get_id/1,获取引擎的 ID

    engine_get_name/1,获取引擎名称

    自有 ID:OTP-15233

Crypto 4.3.1

修复的错误和故障

  • 修复了在传递错误类型的 Others 参数时,crypto:compute_key(ecdh, ...) 中发生的节点崩溃。

    自有 ID:OTP-15194 辅助 ID:ERL-673

Crypto 4.3

修复的错误和故障

  • 删除了两个未记录且错误的函数(crypto:dh_generate_parameters/2crypto:dh_check/1)。

    自有 ID:OTP-14956 辅助 ID:ERL-579

  • 修复了如果针对早于 0.9.8h 的 OpenSSL 构建的加密模块进行运行时升级而导致 VM 崩溃的错误。该错误自 OTP-20.2 以来存在。

    自有 ID:OTP-15088

改进和新特性

  • crypto 中实现了一个新的 rand 插件算法:crypto_cache。它使用强大的随机字节作为随机源并缓存它们以获得良好的速度。请参阅 crypto:rand_seed_alg/1

    自有 ID:OTP-13370 辅助 ID:PR-1573

  • Diffie-Hellman 密钥函数使用 EVP_PKEY api 重写。

    自有 ID:OTP-14864

Crypto 4.2.2.4

修复的错误和故障

  • 添加了常数时间比较。

    自身 ID: OTP-16376

Crypto 4.2.2.3

改进和新特性

  • 密码 aes_cfb8 和 aes_cfb128 现在使用 EVP 接口。支持的密钥长度为 128、192 和 256 位。

    自身 ID: OTP-16133 辅助 ID: PR-2407

Crypto 4.2.2.1

修复的错误和故障

  • 修复了在传递错误类型的 Others 参数时,crypto:compute_key(ecdh, ...) 中发生的节点崩溃。

    自有 ID:OTP-15194 辅助 ID:ERL-673

Crypto 4.2.2

修复的错误和故障

  • 如果设置了 OPENSSL_NO_EC,则加密 nif 的编译失败。

    自有 ID:OTP-15073

  • 修复了 LibreSSL 2.7.0 - 2.7.2 的 C 编译错误

    自有 ID:OTP-15074 辅助 ID:ERL-618

Crypto 4.2.1

修复的错误和故障

  • 修复了由 LibreSSL >= 2.6.1 中删除的 RSA 填充函数引起的构建错误

    自有 ID:OTP-14873

Crypto 4.2

修复的错误和故障

  • 兼容性函数 crypto.c 中的 void HMAC_CTX_free 错误地尝试返回一个值。

    自有 ID:OTP-14720

改进和新特性

  • 使用 EVP API 重写公钥和私钥的编码/解码。添加了新的 RSA 填充选项。这是 PR-838 的修改过的一半。

    自有 ID:OTP-14446

  • 扩展了加密 API,以使用存储在引擎中的私钥/公钥进行签名/验证或加密/解密操作。

    ssl 应用程序提供了一个 API,用于在 TLS 中使用这个新的引擎概念。

    自有 ID:OTP-14448

  • 添加了对插入 OpenSSL 引擎 API 支持的某些或所有加密操作的替代实现的支持。当配置正确时,OpenSSL 会调用引擎的这些操作实现,而不是调用自己的实现。

    自有 ID:OTP-14567

  • 替换了 crypto.c 中对 OpenSSL 弃用函数 DH_generate_parameters 的调用。

    自有 ID:OTP-14639

  • 添加了关于如何使用存储在引擎中的密钥的文档。

    自有 ID:OTP-14735 辅助 ID:OTP-14448

  • 在加密中添加了 engine_ctrl_cmd_string/3,4 OpenSSL 引擎支持。

    自有 ID:OTP-14801

Crypto 4.1

修复的错误和故障

  • 在 macOS 上,如果 observercrypto 之前启动,crypto 会崩溃。在 macOS 10.13 (High Sierra) 的 beta 版本上,crypto 会崩溃。这两个错误都已修复。

    自有 Id: OTP-14499 辅助 Id: ERL-251 ERL-439

改进和新功能

  • 扩展 crypto:sign、crypto:verify、public_key:sign 和 public_key:verify,增加:

    * 支持 RSASSA-PS 填充签名和 saltlength 设置
    * X9.31 RSA 填充。
    * NIST SP 800-57 第 1 部分中提到的用于 dss 签名的 sha、sha224、sha256、sha384 和 sha512。
    * 用于 rsa 签名的 ripemd160。

    这是手动合并 potatosalad 在 2015 年 9 月的 pull request 838 的一半。

    自有 Id: OTP-13704 辅助 Id: PR838

  • crypto:supports/0 中的新元组报告支持的 MAC 算法。

    自有 Id: OTP-14504

Crypto 4.0

修复的错误和故障

  • 现在,现代化的 crypto 应用可以使用 LibreSSL。

    自有 Id: OTP-14247

  • 在带有 on_load 指令的模块中添加编译选项 -compile(no_native),该指令 HiPE 尚不支持。

    自有 Id: OTP-14316 辅助 Id: PR-1390

  • 修复了 GitHub pull request #1393 中引入的 aes cfb128 函数中的一个错误。

    自有 Id: OTP-14435 辅助 Id: PR-1462, PR-1393, OTP-14313

改进和新功能

  • 添加对 CMAC 的基本支持

    自有 Id: OTP-13779 辅助 Id: ERL-82 PR-1138

  • 移除 crypto-3.0 中已弃用的函数,该版本首次在 OTP-R16B01 中发布

    * 可能的不兼容性 *

    自有 Id: OTP-13873

  • crypto 应用现在支持 OpenSSL 1.1。

    自有 Id: OTP-13900

  • 允许 Erlang/OTP 在 FIPS-140 模式下使用 OpenSSL,以满足特定的安全要求(主要来自美国联邦政府的不同部门)。

    请参阅新的 crypto 用户指南“FIPS 模式”章节,了解有关构建和使用默认禁用的 FIPS 支持的信息。

    (感谢 dszoboszlay 和 legoscia)

    自有 Id: OTP-13921 辅助 Id: PR-1180

  • 为 OpenSSL >= 1.1 启用了 RFC 7539 中的 Crypto chacha20-poly1305。

    感谢 mururu。

    自有 Id: OTP-14092 辅助 Id: PR-1291

  • RSA 密钥生成已添加到 crypto:generate_key/2。感谢 wiml。

    接口也已添加到 public_key:generate_key/1

    自有 Id: OTP-14140 辅助 Id: ERL-165, PR-1299

  • 将 OpenSSL 版本的最低要求提高到 OpenSSL-0.9.8.c,尽管我们建议使用更高的版本,即 OpenSSL 项目仍然官方维护的版本。请注意,使用如此旧的版本可能会限制支持的加密算法。

    * 可能的不兼容性 *

    自有 Id: OTP-14171

  • 弃用 crypto:rand_uniform/2,因为它在密码学上不强

    自有 Id: OTP-14274

  • Crypto 应用程序现在支持生成密码学上强大的随机数(浮点数 < 1.0 和整数任意范围),作为 'rand' 模块的插件。

    自有 Id: OTP-14317 辅助 Id: PR-1372

  • 这会将 AES、CMAC 和 GCM 密码的硬编码测试值替换为 NIST 的 CAVP 程序的完整验证集。

    自有 Id: OTP-14436 辅助 Id: PR-1396

Crypto 3.7.4

修复的错误和故障

  • 修复了 192 位和 256 位密钥的 AES CFB 128 中的一个错误。感谢 kellymclaughlin!

    自有 Id: OTP-14313 辅助 Id: PR-1393

Crypto 3.7.3

改进和新功能

  • 对密钥交换算法 diffie-hellman-group-exchange-sha* 进行了优化,最慢(=最大和最安全)的组大小的性能提高了 11 倍。

    自有 Id: OTP-14169 辅助 Id: seq-13261

Crypto 3.7.2

修复的错误和故障

  • crypto 应用程序已修复,不会针对禁用 RC2 构建的 OpenSSL 使用 RC2。

    自有 Id: OTP-13895 辅助 Id: PR-1163

  • crypto 应用程序已修复,不会针对禁用 RC4 构建的 OpenSSL 使用 RC4。

    自有 Id: OTP-13896 辅助 Id: PR-1169

改进和新功能

  • 为了便于故障排除,erlang:load_nif/2 现在在错误元组的文本部分包含加载/重新加载/升级失败调用的返回值。crypto NIF 通过返回初始化失败的源行(如果存在)来利用此功能。

    自有 Id: OTP-13951

Crypto 3.7.1

修复的错误和故障

  • Crypto 已修复,可针对禁用 DES 密码的 OpenSSL 版本工作。引入了密码算法 'des3_cfb' 的正确拼写;之前的拼写错误仍然有效。

    自有 Id: OTP-13783 辅助 Id: ERL-203

  • crypto 中内部数组的大小已修复,当拥有所有可能的密码时不会出现段错误。 Duncan Overbruck 的错误修复。

    自有 Id: OTP-13789 辅助 Id: PR-1140

Crypto 3.7

改进和新功能

  • 重构 crypto 以使用 OpenSSL 的 EVP 接口,这是推荐的接口,也可以访问某些操作的硬件加速。

    自有 Id: OTP-12217

  • aes_cbc 密码添加对 192 位密钥的支持。

    自有 Id: OTP-13206 辅助 Id: pr 832

  • aes_ecb 添加对 192 位密钥的支持。

    自有 Id: OTP-13207 辅助 Id: pr829

  • 弃用函数 crypto:rand_bytes 并确保在所有密码学上重要的位置都使用 crypto:strong_rand_bytes

    自有 Id: OTP-13214

  • 启用 AES-GCM 加密/解密以更改 1 到 16 个字节之间的标签长度。

    自有 Id: OTP-13483 辅助 Id: PR-998

Crypto 3.6.3

修复的错误和故障

  • 修复了数据大于 16 个字节时 aes_ecb 块密码的错误。

    自有 Id: OTP-13249

  • 提高 Crypto 和 SSL 中 ECC 测试对于“异构”OpenSSL 版本的可移植性。

    自有 Id: OTP-13311

Crypto 3.6.2

修复的错误和故障

  • 小的文档修复

    自有 Id: OTP-13017

Crypto 3.6.1

修复的错误和故障

  • 如果根本不支持椭圆曲线,则使 crypto:ec_curves/0 返回空列表。

    自有 Id: OTP-12944

Crypto 3.6

修复的错误和故障

  • 增强 crypto:generate_key 以从私钥计算 ECC 公钥。

    自有 Id: OTP-12394

  • 修复了 crypto:generate_keyecdh 的一个错误,该错误可能导致 VM 因错误的输入而崩溃。

    自有 Id: OTP-12733

改进和新功能

  • 将 EVP API 用于 AES-CBC 加密,以在较新的 Intel CPU (AES-NI) 和其他平台上启用 AES-CBC 加密的硬件加速。

    自有 Id: OTP-12380

  • 添加 AES ECB 块加密。

    自有 Id: OTP-12403

Crypto 3.5

改进和新功能

  • 扩展 aes_cfb8 和 aes_cfb128 的 block_encrypt/decrypt 以接受长度为 128、192 和 256 位的密钥。之前只接受 128 位密钥。

    自有 Id: OTP-12467

Crypto 3.4.2

改进和新功能

  • 添加配置选项 --with-ssl-incl=PATH 以支持标头和库位于不同位置的 OpenSSL 安装。

    自有 Id: OTP-12215 辅助 Id: seq12700

  • 添加配置选项 --with-ssl-rpath 来控制用于 OpenSSL 动态链接的运行时库路径。

    内部 ID:OTP-12316 辅助 ID:seq12753

Crypto 3.4.1

已修复的错误和故障

  • 使 crypto 验证 OpenSSL 头文件和运行时库的主版本号。如果版本不匹配,则 crypto 的加载将会失败。

    内部 ID:OTP-12146 辅助 ID:seq12700

Crypto 3.4

已修复的错误和故障

  • 修复了 crypto:hmac_init/upgrade/final 函数在所有数据情况下的内存泄漏,以及 crypto:hmac/3/4 函数在数据大于 20000 字节时的内存泄漏。此错误自 OTP 17.0 版本起存在。

    内部 ID:OTP-11953

  • 修复了 crypto 模块中椭圆曲线的内存泄漏问题。

    内部 ID:OTP-11999

改进和新特性

  • crypto:block_encryptblock_decrypt 中添加 aes_cfb8 密码。

    内部 ID:OTP-11911

Crypto 3.3

已修复的错误和故障

  • 修复了在传递错误参数时 mod_powmod_expgenerate_key(srp,...) 中的内存泄漏和无效的内存释放问题。(感谢 Florian Zumbiehi)

    内部 ID:OTP-11550

  • 更正了整个文档中 “ChipherText” 一词的拼写错误(感谢 Andrew Tunnell-Jones)

    内部 ID:OTP-11609

  • 修复了在多次调用 hmac_updatehmac_final 时使用相同的 hmac 上下文变量会导致的严重错误。重用 hmac 上下文一直不起作用,因为底层的 OpenSSL 实现不支持此操作。现在已将其记录为具有未定义的行为,但它不会再导致崩溃或破坏 VM。

    内部 ID:OTP-11724

  • Crypto 现在可以通过控制的终止来处理内存不足的情况,而不是崩溃/破坏。(感谢 Florian Zumbiehi)

    内部 ID:OTP-11725

  • 以下应用程序的应用程序升级 (appup) 文件已更正:

    asn1、common_test、compiler、crypto、debugger、dialyzer、edoc、eldap、erl_docgen、et、eunit、gs、hipe、inets、observer、odbc、os_mon、otp_mibs、parsetools、percept、public_key、reltool、runtime_tools、ssh、syntax_tools、test_server、tools、typer、webtool、wx、xmerl

    向 test_server 添加了一个新的用于测试 appup 文件的测试实用程序。现在 OTP 中的大多数应用程序都使用此实用程序。

    (感谢 Tobias Schlager)

    内部 ID:OTP-11744

改进和新特性

  • 通过在配置时添加 --enable-static-{nifs,drivers} 选项,现在可以将 nifs 和驱动程序静态链接到主 Erlang VM 二进制文件中。目前,只有 Erlang/OTP 的 asn1 和 crypto nifs 已经准备好进行静态链接。有关更多详细信息,请参阅系统文档中的安装指南。

    内部 ID:OTP-11258

  • 在 crypto 中添加 AES 密码的 IGE 模式(感谢 Yura Beznos)。

    内部 ID:OTP-11522

  • 将椭圆曲线定义从 crypto NIF/OpenSSL 移到 Erlang 代码中,添加了 RFC-5639 brainpool 曲线,并使 TLS 使用它们 (RFC-7027)。

    感谢 Andreas Schultz

    内部 ID:OTP-11578

  • 从 crypto 中删除所有过时的应用程序进程,并将其变成一个纯库应用程序。

    内部 ID:OTP-11619

Crypto 3.2

已修复的错误和故障

  • 修复了 crypto 中的未初始化指针问题(感谢 Anthony Ramine)

    内部 ID:OTP-11510

Crypto 3.1

改进和新特性

  • 重构 ecdsa 密码,以简化代码并提高性能。

    内部 ID:OTP-11320

Crypto 3.0

改进和新特性

  • 整合 Andreas Schultz 的椭圆曲线贡献

    为了能够在 SSL/TLS 中支持椭圆曲线密码套件,已向 public_key 和 crypto 添加了处理椭圆曲线基础结构的功能。

    这也导致了 crypto API 的重写,以获得一致性并消除不必要的开销。所有使用 crypto 的 OTP 应用程序都已更新以使用新的 API。

    影响:椭圆曲线密码学 (ECC) 提供了与较小密钥大小相当的安全级别,而其他公钥算法则需要更大的密钥大小。较小的密钥大小可以节省功耗、内存、带宽和计算成本,这使得 ECC 对于受限环境特别有吸引力。

    内部 ID:OTP-11009

  • 修复了 crypto 文档中的拼写错误。感谢 Klaus Trainer

    内部 ID:OTP-11058

已知错误和问题

  • 通过在输入非常大时进行分块并在 nifs 中增加约简次数,使 crypto 函数可中断。

    尚未为 block_encrypt|decrypt/4 实现

    影响:对 crypto 函数的单个调用可能需要更长的时间,但整体系统性能应该会提高,因为 crypto 调用不会成为吞吐量瓶颈。

    内部 ID:OTP-11142

Crypto 2.3

改进和新特性

  • 支持 crypto 的运行时升级,包括 crypto 使用的 OpenSSL 库。

    内部 ID:OTP-10596

  • 改进了 crypto 中 hmac 函数的文档和测试。感谢 Daniel White

    内部 ID:OTP-10640

  • 为 crypto 添加了 ripemd160 支持。感谢 Michael Loftis

    内部 ID:OTP-10667

Crypto 2.2

已修复的错误和故障

  • 从 crypto NIF 库中删除对 libssl 的不必要依赖项。此依赖项是 R14B04 中意外引入的。

    内部 ID:OTP-10064

改进和新特性

  • 为哈希函数 SHA224、SHA256、SHA384 和 SHA512 以及使用这些哈希函数的 hmac 和 rsa_sign/verify 添加了 crypto 和 public_key 支持。感谢 Andreas Schultz 制作原型。

    内部 ID:OTP-9908

  • 优化了 cryptopublic_key 中的 RSA 私钥处理。

    内部 ID:OTP-10065

  • 使 crypto:aes_cfb_128_encryptcrypto:aes_cfb_128_decrypt 可以处理任意长度的数据和密码。(感谢 Stefan Zegenhagen)

    内部 ID:OTP-10136

Crypto 2.1

改进和新特性

  • public_key、ssl 和 crypto 现在支持 PKCS-8

    内部 ID:OTP-9312

  • 现在,如果您限制作业数量(例如使用“make -j6”或“make -j10”),则可以使用并行 make 构建 Erlang/OTP。“make -j”目前不起作用,因为缺少一些依赖项。

    内部 ID:OTP-9451

  • crypto 添加了 DES 和三重 DES 密码反馈 (CFB) 模式函数。(感谢 Paul Guyot)

    内部 ID:OTP-9640

  • crypto:rsa_verify 添加了 sha256、sha384 和 sha512 支持。

    内部 ID:OTP-9778

Crypto 2.0.4

已修复的错误和故障

  • crypto:rand_uniform 可以正确处理负整数。对于无效范围(当 Hi =< Lo 时)会抛出 badarg 异常,而不是返回不正确的输出。

    内部 ID:OTP-9526

  • 修复了 win32 OpenSSL 静态链接问题(感谢 Dave Cottlehuber)

    内部 ID:OTP-9532

Crypto 2.0.3

已修复的错误和故障

  • 各种小文档修复(感谢 Bernard Duggan)

    内部 ID:OTP-9172

改进和新特性

  • 新的 crypto 支持 AES CTR 和 HMAC 流。(感谢 Travis Jensen)

    内部 ID:OTP-9275

  • 由于 OpenSSL 和 Erlang/OTP 版本之间的标准库 DLL 不匹配,OpenSSL 现在静态链接到 Windows 上的 crypto 驱动程序。这修复了在所有 Windows 版本上将 Erlang 作为服务运行时启动 crypto 时出现的问题。

    内部 ID:OTP-9280

Crypto 2.0.2.2

改进和新特性

  • 加强了随机数生成。(感谢 Geoff Cant)

    内部 ID:OTP-9225

Crypto 2.0.2.1

改进和新特性

  • 杂项更新。

    内部 ID:OTP-9132

Crypto 2.0.2

改进和新特性

  • crypto 中支持 AES CTR 加密。

    内部 ID:OTP-8752 辅助 ID:seq11642

Crypto 2.0.1

已修复的错误和故障

  • md5_mac 和 sha_mac 中的 Crypto dialyzer 类型错误。

    内部 ID:OTP-8718

  • RC4 流密码不起作用。这是因为 crypto-2.0 中引入的 crypto:rc4_encrypt_with_state/2 的新 NIF 实现没有返回更新的状态。(感谢 Paul Guyot)

    内部 ID:OTP-8781

  • 修复了 crypto NIF 库中的一些内存泄漏。

    内部 ID:OTP-8810

改进和新功能

  • 添加了 erlang:system_info(build_type),可以更容易地根据运行时系统的构建类型选择驱动程序、NIF 库等。

    现在可以为 valgrind 和/或 debug 构建单独的 crypto NIF 库,如果运行时系统已使用匹配的构建类型构建,则会自动加载这些库。

    自有 ID:OTP-8760

Crypto 2.0

改进和新功能

  • crypto 应用程序已更改为使用 NIF 而不是驱动程序。

    自有 ID:OTP-8333

  • crypto 模块中已添加 des_ecb_encrypt/2 和 des_ecb_decrypt/2。 crypto:md4/1 函数已加入文档。

    自有 ID:OTP-8551

  • 已删除未记录、不支持和已弃用的函数 lists:flat_length/1

    自有 ID:OTP-8584

  • crypto:dss_signcrypto:dss_verify 的新变体,带有额外的参数来控制摘要的计算方式。

    自有 ID:OTP-8700

Crypto 1.6.4

改进和新功能

  • 交叉编译改进和其他构建系统改进。

    最值得注意的是

    • 大量的交叉编译改进。旧的交叉编译支持或多或少是不存在的,并且是损坏的。请注意,交叉编译支持仍应被视为实验性的。另请注意,旧的交叉编译配置在不进行修改的情况下无法使用。有关交叉编译 Erlang/OTP 的更多信息,请参阅 $ERL_TOP/INSTALL-CROSS.md 文件。
    • 支持使用 DESTDIR 的分阶段安装。旧的损坏的 INSTALL_PREFIX 也已修复。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • 顶层 Makefilerelease 目标的文档。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • 现在默认情况下,make install 创建相对符号链接而不是绝对符号链接。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • $ERL_TOP/configure --help=recursive 现在可以工作,并打印所有带有 configure 脚本的应用程序的帮助信息。
    • 直接在 make all 之后执行 make installmake release 不再触发其他重新构建。
    • 在没有预先执行 make all 的情况下执行 make installmake release 时,现在使用现有的引导系统。
    • 当动态链接到 libssl.solibcrypto.so 时,cryptossl 应用程序使用相同的运行时库路径。运行时库搜索路径也已扩展。
    • erl_interfaceodbcconfigure 脚本现在以与 ERTS 相同的方式搜索线程库和线程库怪癖。
    • 现在,当在 64 位系统上构建时,odbc 应用程序的 configure 脚本还在 lib64lib/64 目录中查找 odbc 库。
    • erl_interface 应用程序中的 config.h.in 文件现在是自动生成的,而不是静态更新的,这降低了 configure 测试无效的风险。

    (感谢 Henrik Riomar 的建议和测试)

    (感谢 Winston Smith 的 AVR32-Linux 交叉配置和测试)

    * 可能的不兼容性 *

    自有 ID:OTP-8323

  • 现在,crypto 模块支持 ECB、CBC 和 OFB 模式下的 Blowfish。(感谢 Paul Oliver。)

    自有 ID:OTP-8331

  • 在修复了一些错误并在文档构建过程中添加了一些功能后,现在可以在开源环境中构建文档。

    - 更新了 arity 计算。

    - 在生成的链接中删除了 bif 函数名称中使用的模块前缀,因此链接将类似于“https://erlang.ac.cn/doc/man/erlang.html#append_element-2” 而不是 “https://erlang.ac.cn/doc/man/erlang.html#erlang:append_element-2”。

    - 加强了加载新页面时 html 文档中的菜单定位。

    - 对 man 页面的生成进行了一些更正(感谢 Sergei Golovan)

    - 法律声明取自 xml 书籍文件,因此 OTP 的构建过程可用于非 OTP 应用程序。

    自有 ID:OTP-8343

Crypto 1.6.3

修复的错误和故障

  • 抑制了由 libcrypto 使用未初始化数据作为熵引起的错误的 valgrind 错误。

    自有 ID:OTP-8200

改进和新功能

  • 现在,文档是使用大多数平台上都存在的开源工具(xsltproc 和 fop)构建的。一个明显的变化是删除了框架。

    自有 ID:OTP-8201

  • 当 crypto 应用程序无法加载 OpenSSL/LibEAY 共享对象时,错误指示很稀少。现在,更具体的错误消息会发送到错误记录器。

    自有 ID:OTP-8281

Crypto 1.6.2

修复的错误和故障

  • 修复了 crypto 使用无法处理大文件描述符的旧 openssl 版本导致的仿真器崩溃问题。

    自有 ID:OTP-8261 辅助 ID:seq11434

Crypto 1.6.1

修复的错误和故障

  • 已更新 Makefile.in 以使用 LDFLAGS 环境变量(如果设置)。(感谢 Davide Pesavento。)

    自有 ID:OTP-8157

改进和新功能

  • crypto 添加了对 Blowfish cfb64 的支持。

    自有 ID:OTP-8096

  • 新函数 crypto:aes_cbc_ivec

    自有 ID:OTP-8141

Crypto 1.6

修复的错误和故障

  • dh_compute_key 有时会返回大小不正确的 SharedSecret。

    自有 ID:OTP-7674

改进和新功能

  • 通过直接在进程堆上创建小型二进制文件来优化驱动程序。

    自有 ID:OTP-7762

Crypto 1.5.3

改进和新功能

  • 添加了新函数:dss_verify/3、rsa_verify/3、rsa_verify/4、dss_sign/2、rsa_sign/2、rsa_sign/3、rsa_public_encrypt、rsa_private_decrypt/3、rsa_private_encrypt/3、rsa_public_decrypt/3、dh_generate_key/1、dh_generate_key/2、dh_compute_key/3。

    自有 ID:OTP-7545

Crypto 1.5.2.1

改进和新功能

  • 次要的性能优化。

    自有 ID:OTP-7521

Crypto 1.5.2

修复的错误和故障

  • 改进了 ./configure 以查找 64 位 OpenSSL 库。

    自有 ID:OTP-7270

改进和新功能

  • 改进了 crypto 和 zlib 驱动程序以允许并发 smp 访问。

    自有 ID:OTP-7262

Crypto 1.5.1.1

改进和新功能

  • 现在,crypto 应用程序的链接驱动程序是静态链接到 OpenSSL 库的,以避免与 OpenSSL 库位置相关的安装和运行时问题。

    自有 ID:OTP-6680

  • 次要的 Makefile 更改。

    自有 ID:OTP-6689

Crypto 1.5

改进和新功能

  • 现在,在启动时会显式检查是否已正确加载 crypto 驱动程序(感谢 Claes Wikstrom)。

    自有 ID:OTP-6109

Crypto 1.4

改进和新功能

  • 已更新并记录了以前未记录和不受支持的 ssh 应用程序。 此版本的 ssh 应用程序仍被视为测试版,并且(如有必要)在达到 1.0 版本之前,其 API 仍可能会发生更改。

    此外,crypto 应用程序中添加了更多加密算法。

    * 可能的不兼容性 *

    自有 ID:OTP-5631

Crypto 1.3

改进和新功能

  • 在 SNMP 基于用户的安全模型中添加了对 RFC 3826 - 高级加密标准 (AES) 密码算法的支持。
    Martin Björklund

Crypto 1.2.3

修复的错误和故障

  • 当模拟器启用线程支持时,在 Unix 上,crypto 和 asn1 应用中链接的驱动程序现在使用 -D_THREAD_SAFE 和 -D_REENTRANT 开关进行编译。

    在 MacOSX 上链接的驱动程序不再使用未公开的 -lbundle1.o 开关进行编译。感谢 Sean Hinde 发送的补丁。

    现在,crypto 中链接的驱动程序和 ssl 中的 port 程序可以在 OSF1 上编译。

    runtime_tools 中的次要 makefile 改进。

    自有 ID:OTP-5346

Crypto 1.2.2

改进和新功能

  • 纠正了错误处理。如果 crypto 使用的端口意外关闭(这在 crypto 的正常操作期间不应发生),crypto 将立即终止(而不是在下次使用 crypto 时崩溃)。 还纠正了 Mac OS X 上的构建问题。

    自有 ID:OTP-5279

Crypto 1.2.1

修复的错误和故障

  • 在 R9 中,无法重新链接 crypto 驱动程序。缺少对象文件以及示例 makefile。crypto 驱动程序对象文件现在随应用程序一起发布(安装在 priv/obj 中)。示例 makefile 也已添加到 priv/obj 目录中。该 makefile 作为如何在 Unix (crypto_drv.so) 或 Windows (crypto_drv.dll) 上重新链接驱动程序的示例。

    自有 ID:OTP-4828 辅助 ID:seq8193

Crypto 1.2

改进和新功能

  • 以前版本的 Crypto 都是基于 SSLeay 的静态链接二进制文件交付的。现在情况不再如此。当前版本的 Crypto 需要用户安装动态链接的 OpenSSL 库。所需的库是 libcrypto.so (Unix) 或 libeay32.[lib|dll] (Win32)。有关详细信息,请参阅 crypto(6) 应用程序手册页。
  • 此版本的 Crypto 使用 OpenSSL 0.9.7 的新 DES 接口,该接口与早期版本的 OpenSSL 不向后兼容。
  • 函数 des_ede3_cbc_encrypt/5des_ede3_cbc_decrypt/5 已分别重命名为 des3_cbc_encrypt/5des3_cbc_decrypt/5。旧函数已保留(它们已弃用,并且未在 crypto(3) 手册页中列出)。

报告的已修复错误和故障

  • 由于错误地添加了 DES3 算法,导致 crypto 在 Windows 上启动失败。

    自有 ID:OTP-4684
    辅助 ID:seq7864

Crypto 1.1.3

报告的已修复错误和故障

  • 为了与旧的 SSLeay 包以及早期版本的 OpenSSL 兼容,宏 OPENSSL_DES_LIBDES_COMPATIBILITY 已添加到 crypto_drv.c。这仅对开源版本的 Crypto 具有重要意义。

Crypto 1.1.2

报告的已修复错误和故障

  • 在手册页 crypto 中,函数名 md5_finishsha_finish 已更改为 md5_finalsha_final,以正确记录实现。

    自有 ID:OTP-3409

Crypto 1.1.1

支持运行时代码替换。可以从 1.1 版升级,也可以降级到 1.1 版。

改进和新功能

  • Crypto 应用程序的驱动程序部分已更新为使用 erl_driver 头文件。1.1.1 版本需要 4.9.1 或更高版本的模拟器。

Crypto 1.1

报告的已修复错误和故障

  • 在 Windows 上,crypto_drv 错误地链接到静态运行时库,而不是动态运行时库。

    自有 ID:OTP-3240

Crypto 1.0

新应用程序。