查看源代码 Public_Key 发行说明

Public_Key 1.17

改进和新功能

  • public_key:cacerts_load/1 现在可以通过应用程序环境进行配置。

    自有 ID:OTP-19321 辅助 ID:PR-8920

  • 在 MacOS 上,CA 证书现在也从系统钥匙串加载。

    自有 ID:OTP-19375 辅助 ID:PR-8844

Public_Key 1.16.4

修复的错误和故障

  • 如果一个证书同时定义了 ext-key-usagekey-usage,则应检查这些用法是否彼此一致。这将导致这样的影响:如果 ext-key-usages 被标记为关键,并且用法与 key-use 一致,则可以认为该证书有效,而无需对 ext-key-useage 扩展进行强制性的应用程序特定检查。

    自有 ID:OTP-19240 辅助 ID:PR-8840, OTP-19532

  • 在解码仅包含公共 EDDSA 密钥的 PEM 文件时,正确处理 EDDSA 密钥的解码。

    自有 ID:OTP-19350 辅助 ID:GH-9009, PR-9053

Public_Key 1.16.3

修复的错误和故障

  • 引入 verify_fun/4 不幸地为某些特定的路径验证错误引入了参数切换,因此在这种情况下,verify_fun/3 可能会使用 DER 证书而不是解码的证书进行调用,而且在这种情况下,verify_fun/4 中的证书顺序会颠倒。

    自有 ID:OTP-19245 辅助 ID:Gh-8832

改进和新功能

  • 不要隐藏 crypto badarg 原因,这种错误处理增强功能有助于调试。这些类型的运行时错误没有文档记录,不应依赖它们进行匹配,它们旨在尽早捕获输入错误。

    自有 ID:OTP-19238

Public_Key 1.16.2

修复的错误和故障

  • 为了完整起见,处理 rsa_pss 隐式默认值,尽管这可能不会常用,因为它提供的安全性非常弱。

    自有 ID:OTP-19179

  • 在某些错误情况下,public_key:cacerts_load() 函数可能会返回 undefined 而不是 {error, Reason}

    自有 ID:OTP-19183 辅助 ID:GH-8604

  • 添加了对 DragonFly 的支持。

    自有 ID:OTP-19191 辅助 ID:PR-8703

改进和新功能

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

    虽然将 PCKS-1 填充与某些版本的 cryptolib 一起使用可以认为是安全的,但我们仍然建议使用其他对 oracle 攻击不太敏感的算法。

    自有 ID:OTP-19163

  • 现在可以使用 arity 为 4 的验证函数,让用户可以访问证书的编码版本和解码版本。这对于解决因编码错误而导致重新编码不可靠的问题是可取的。如果需要编码版本,这也可以节省一些工作量。

    请注意,由于解码的解决方法,不建议仅使用解码的证书调用 public_key:pkix_path_validation/3,尽管只要不需要这些解决方法,它就可以工作。

    如果在调用 public_key 之前需要解码版本,建议使用 combined_cert 类型以避免双重解码。请注意,路径验证算法本身始终需要证书的编码版本和解码版本。

    ssl 实现现在将受益于使用此函数而不是模拟 verify_fun/4。

    自有 ID:OTP-19169

Public_Key 1.16.1

修复的错误和故障

  • 修复 dnsName 约束检查中的错误,可能导致在路径验证期间将有效证书视为无效。

    自有 ID:OTP-19100 辅助 ID:GH-8482, PR-8508

Public_Key 1.16

改进和新功能

  • ssl 客户端可以协商和处理证书状态请求(客户端的 OCSP 装订支持)。

    感谢 voltone 提供的互操作测试和相关讨论。

    自有 ID:OTP-18606 辅助 ID:OTP-16875,OTP-16448

  • 改进了当 public_key:cacerts_get/0 失败时的异常原因。

    自有 ID:OTP-18609 辅助 ID:GH-7295, PR-7302

  • 密钥自定义支持已得到扩展,从而为硬件安全模块 (HSM) 或可信平台模块 (TPM) 等的实施者提供了灵活性。

    自有 ID:OTP-18876 辅助 ID:PR-7898, PR-7475

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

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

  • 现在记录并支持现有的函数 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

Public_Key 1.15.1.4

修复的错误和故障

  • 如果一个证书同时定义了 ext-key-usagekey-usage,则应检查这些用法是否彼此一致。这将导致这样的影响:如果 ext-key-usages 被标记为关键,并且用法与 key-use 一致,则可以认为该证书有效,而无需对 ext-key-useage 扩展进行强制性的应用程序特定检查。

    自有 ID:OTP-19240 辅助 ID:PR-8840, OTP-19532

  • 在解码仅包含公共 EDDSA 密钥的 PEM 文件时,正确处理 EDDSA 密钥的解码。

    自有 ID:OTP-19350 辅助 ID:GH-9009, PR-9053

Public_Key 1.15.1.3

改进和新功能

  • 不要隐藏 crypto badarg 原因,这种错误处理增强功能有助于调试。这些类型的运行时错误没有文档记录,不应依赖它们进行匹配,它们旨在尽早捕获输入错误。

    自有 ID:OTP-19238 辅助 ID:PR-8831

Public_Key 1.15.1.2

修复的错误和故障

  • 为了完整起见,处理 rsa_pss 隐式默认值,尽管这可能不会常用,因为它提供的安全性非常弱。

    自有 ID:OTP-19179

Public_Key 1.15.1.1

修复的错误和故障

  • 修复 dnsName 约束检查中的错误,可能导致在路径验证期间将有效证书视为无效。

    自有 ID:OTP-19100 辅助 ID:GH-8482, PR-8508

Public_Key 1.15.1

修复的错误和故障

  • 不应接受带有 X 个点的主机名前缀。

    自有 ID:OTP-18935 辅助 ID:GH-8021

Public_Key 1.15

修复的错误和故障

  • ssl 应用程序将仅在最终实体证书中验证 id-kp-serverAuth 和 id-kp-clientAuth 扩展密钥用法。 public_key 应用程序将禁止 CA 证书的 “anyExtendedKeyUsage”,该证书包括扩展密钥用法扩展并将其标记为关键。

    自有 ID:OTP-18739

  • 使 ECC 处理现代化,以便 crypto FIPS 支持按预期工作。

    自有 ID:OTP-18854

改进和新功能

  • 支持路径验证中的证书策略 - 如 RFC 5280 中所述。

    自有 ID:OTP-17844 辅助 ID:ERIERL-738

  • 为 Illumos 上的 cacerts 添加更多搜索路径。

    自有 ID:OTP-18814 辅助 ID:PR-7435

  • 可以处理 pkix_path_validation/3 的 verify_fun 中的无效日期格式

    自有 ID:OTP-18867 辅助 ID:GH-7515

Public_Key 1.14.1

修复的错误和故障

  • 国家/地区名称比较应不区分大小写

    自有 ID:OTP-18718 辅助 ID:GH-7546

  • 添加检查以禁止路径中重复的证书

    自有 ID:OTP-18723 辅助 ID:GH-6394

Public_Key 1.14

改进和新功能

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

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

    自有 ID:OTP-18447

Public_Key 1.13.3.5

修复的错误和故障

  • 如果一个证书同时定义了 ext-key-usagekey-usage,则应检查这些用法是否彼此一致。这将导致这样的影响:如果 ext-key-usages 被标记为关键,并且用法与 key-use 一致,则可以认为该证书有效,而无需对 ext-key-useage 扩展进行强制性的应用程序特定检查。

    自有 ID:OTP-19240 辅助 ID:PR-8840, OTP-19532

  • 在解码仅包含公共 EDDSA 密钥的 PEM 文件时,正确处理 EDDSA 密钥的解码。

    自有 ID:OTP-19350 辅助 ID:GH-9009, PR-9053

Public_Key 1.13.3.4

改进和新功能

  • 不要隐藏 crypto badarg 原因,这种错误处理增强功能有助于调试。这些类型的运行时错误没有文档记录,不应依赖它们进行匹配,它们旨在尽早捕获输入错误。

    自有 ID:OTP-19238 辅助 ID:PR-8831

Public_Key 1.13.3.3

修复的错误和故障

  • 为了完整起见,处理 rsa_pss 隐式默认值,尽管这可能不会常用,因为它提供的安全性非常弱。

    自有 ID:OTP-19179

Public_Key 1.13.3.2

修复的错误和故障

  • ssl 应用程序将仅在最终实体证书中验证 id-kp-serverAuth 和 id-kp-clientAuth 扩展密钥用法。 public_key 应用程序将禁止 CA 证书的 “anyExtendedKeyUsage”,该证书包括扩展密钥用法扩展并将其标记为关键。

    自有 ID:OTP-18739

Public_Key 1.13.3.1

修复的错误和故障

  • 国家/地区名称比较应不区分大小写

    自有 ID:OTP-18718 辅助 ID:GH-7546

Public_Key 1.13.3

修复的错误和故障

  • 由于存在不同的证书吊销验证解决方案,因此将“CRLDistributionPoints”的解码移动到仅在实际用于验证过程时才进行解码。这将使与使用具有无效空 CRLDistributionPoints 扩展的证书的系统能够互操作,他们希望忽略该扩展并通过其他方式进行验证。

    自有 ID:OTP-18316 辅助 ID:GH-6402, PR-6883

  • public_key:pkix_path_validation 验证 2050 年后过期的证书

    自有 ID:OTP-18356 辅助 ID:GH-6403

  • 在 MacOS 上调用 cacerts_load() 后,不要在消息队列中留下退出消息。

    自有 ID:OTP-18392 辅助 ID:GH-6656

改进和新功能

  • 将 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-18432 辅助 ID:GH-6672,PR-6793,PR-6784,PR-6787,PR-6785,PR-6682,PR-6800,PR-6797,PR-6798,PR-6799,PR-6796,PR-6813,PR-6671,PR-6673,PR-6684,PR-6694,GH-6677,PR-6696,PR-6670,PR-6674

Public_Key 1.13.2

修复的错误和故障

  • 当预期为 HTTP URI 时,忽略 LDAP URI。

    自有 ID:OTP-18333 辅助 ID:GH-6363

Public_Key 1.13.1

修复的错误和故障

  • 在 cacerts_load/0 中支持更多 Linux 发行版。

    自有 ID:OTP-18154 辅助 ID:PR-6002

  • 更正了类型 pki_asn1_type() 中可用的 asn1 类型名称

    自有 ID:OTP-18189 辅助 ID:ERIERL-829

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

    自有 ID:OTP-18205 辅助 ID:GH-6219

Public_Key 1.13

改进和新功能

  • 添加了检索操作系统提供的 CA 证书的函数。

    自有 ID:OTP-17798 辅助 ID:GH-5760

  • 允许将密钥文件密码作为单个二进制数据输入,也就是说,我们将数据类型更改为更符合逻辑用途的数据类型 iodata() 而不是 string()。

    自有 ID:OTP-17890

  • 已删除已弃用的 public_key 函数 ssh_decode/2、ssh_encode/2、ssh_hostkey_fingerprint/1 和 ssh_hostkey_fingerprint/2。

    它们分别被 ssh_file:decode/2、ssh_file:encode/2、ssh:hostkey_fingerprint/1 和 ssh:hostkey_fingerprint/2 替换。

    请注意,decode/2 和 encode/2 不是完全的替换函数,可能需要进行一些小的更改。有关更多信息,请参阅手册。

    *潜在的不兼容性*

    自有 ID:OTP-17921

Public_Key 1.12.0.2

修复的错误和故障

  • 国家/地区名称比较应不区分大小写

    自有 ID:OTP-18718 辅助 ID:GH-7546

Public_Key 1.12.0.1

修复的错误和故障

  • 更正了类型 pki_asn1_type() 中可用的 asn1 类型名称

    自有 ID:OTP-18189 辅助 ID:ERIERL-829

Public_Key 1.12

改进和新功能

  • 支持 ssl:connect 函数中受保护的密钥文件的密码函数。

    自有 ID:OTP-17816 辅助 ID:PR-5607

Public_Key 1.11.3

修复的错误和故障

  • 避免重新编码已解码的证书。这可能会导致意外失败,因为在解码时可以容忍一些细微的编码错误,但如果重新编码解码后的值,则会创建另一个字节序列。

    自有 ID:OTP-17657

Public_Key 1.11.2

修复的错误和故障

  • public_key:pkix_sign/2 现在遵守所提供的输入参数中的盐长度。如果未使用推荐的默认值,则早期可能会导致签名不正确。

    自有 ID:OTP-17534 辅助 ID:GH-5054, PR-5057

改进和新功能

  • 解码“ECPrivateKey”时,解开私钥。 有关更准确的信息,请参阅 RFC 8410 第 7 节。

    自有 ID:OTP-17609 辅助 ID:GH-5157, GH-5156

Public_Key 1.11.1

修复的错误和故障

  • 处理 GH-4877 中报告的旧根证书过期时交叉签名的根证书。

    自有 ID:OTP-17475 辅助 ID:GH-4877

Public_Key 1.11

改进和新功能

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

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

  • 函数 public_key:ssh_encode/2、public_key:ssh_decode/2、public_key:ssh_hostkey_fingerprint/1 和 public_key:ssh_hostkey_fingerprint/2 已弃用。

    SSH 中提供了替换函数,请参阅 Erlang/OTP 文档中的弃用章节。

    自有 ID:OTP-17352

  • 增强证书处理的文档和日志记录。

    自有 ID:OTP-17384 辅助 ID:GH-4800

Public_Key 1.10.0.1

修复的错误和故障

  • 处理 GH-4877 中报告的旧根证书过期时交叉签名的根证书。

    自有 ID:OTP-17475 辅助 ID:GH-4877

Public_Key 1.10

修复的错误和故障

  • 修复了不区分大小写的主机名检查。

    自有 ID:OTP-17242 辅助 ID:GH-4500

改进和新功能

  • 向 pkix_path_validation/3 添加对受信任锚证书到期时间的健全性检查。 尽管该锚被认为是受信任的输入,但此健全性检查确实为 public_key 应用程序的用户提供了额外的安全性,因为此属性需要在使用时进行检查,并且非常适合此处执行的其他检查。

    自有 ID:OTP-16907

  • 调整测试证书的生成,以符合 RFC 5280 中关于证书有效性格式的规则

    自有 ID:OTP-17111

Public_Key 1.9.2

改进和新功能

  • 更正了 pkix_path_validation/3 的 dialyzer 规范

    自有 ID:OTP-17069

Public_Key 1.9.1

修复的错误和故障

  • 修复了 pem_decode 会因无效输入而崩溃的问题。

    自有 ID:OTP-16902 辅助 ID:ERIERL-534

Public_Key 1.9

修复的错误和故障

  • 修复了在解码 PEM 文件时一个微不足道的空格问题。

    自有 ID:OTP-16801 辅助 ID:ERL-1309

改进和新功能

  • 实验性 OCSP 客户端支持。

    自有 ID:OTP-16448

  • 对自签名证书使用用户返回的路径验证错误。它允许 ssl 应用程序的用户在定义的警报范围内自定义生成的 TLS 警报。

    自有 ID:OTP-16592

  • 添加 API 函数以检索 X509 证书的主题 ID

    自有 ID:OTP-16705

Public_Key 1.8

改进和新功能

  • 添加了对 RSA-PSS 签名方案的支持

    自有 ID:OTP-15247

  • 旧 Crypto API 中已弃用函数的调用将替换为它们的替代项的调用。

    自有 ID:OTP-16346

Public_Key 1.7.2

改进和新功能

  • 在签名验证中添加对 Edward 曲线和 PSS-RSA 填充的密钥交换的支持。

    自有 ID:OTP-16528

Public_Key 1.7.1

修复的错误和故障

  • 更正了可能导致 CRL 验证失败的 CRL 处理。 当 CRL 分发点明确指定 CRL 颁发者时,即不使用回退时,可能会发生这种情况。

    自有 ID:OTP-16156 辅助 ID:ERL-1030

Public_Key 1.7

修复的 Bug 和故障

  • 支持使用 AES 的密码加密

    内部 ID:OTP-15870 辅助 ID:ERL-952

改进和新特性

  • 更改 Dialyzer 规范以避免混淆

    内部 ID:OTP-15843 辅助 ID:ERL-915

Public_Key 1.6.7

修复的 Bug 和故障

  • 传递给 crypto 的 RSA 选项用于使用公钥或私钥加密和解密。

    内部 ID:OTP-15754 辅助 ID:ERL-878

  • 修复了因 digest_type() 的错误类型规范导致的 Dialyzer 警告。

    此更改更新了 digest_type() 和使用此参数类型的函数,以接受 'sha1' 和 'sha' 作为 digest_type()。

    内部 ID:OTP-15776

改进和新特性

  • 添加了读取使用 AES-256 的旧 PEM 加密加密的 PEM 文件的可能性

    内部 ID:OTP-13726

  • 放宽证书的解码,以便可以接受“无害的”第三方编码错误,但 public_key 应用程序不会创建这些错误。这增加了对使用不正确的三个字符国家/地区代码的接受,PKIX 标准使用两个字符的国家/地区代码。还接受国家/地区代码是 utf8 编码的,但规范说它应该是 ASCII。

    内部 ID:OTP-15687 辅助 ID:PR-2162

Public_Key 1.6.6.1

修复的 Bug 和故障

  • 支持使用 AES 的密码加密

    内部 ID:OTP-15870 辅助 ID:ERL-952

Public_Key 1.6.6

改进和新特性

  • 从 OTP-22 反向移植错误修复 ERL-893,并记录增强功能,这将解决 ssl 应用程序用户的 Dialyzer 警告。

    此更改还会影响 public_key、eldap(和 inet 文档)。

    内部 ID:OTP-15785 辅助 ID:ERL-929、ERL-893、PR-2215

Public_Key 1.6.5

改进和新特性

  • 添加 Dialyzer 类型的导出

    内部 ID:OTP-15624

Public_Key 1.6.4

改进和新特性

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

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

    内部 ID:OTP-15419 辅助 ID:OTP-15094

Public_Key 1.6.3

修复的 Bug 和故障

  • 在 public_keys ASN1-spec 和 public_key:pkix_sign_types/1 中添加 DSA SHA2 oids

    内部 ID:OTP-15367

Public_Key 1.6.2

修复的 Bug 和故障

  • 删除了 #DSAPrivateKey{} 作为 public_key:verify/5 的可接受输入。

    内部 ID:OTP-15284

改进和新特性

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

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

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

    内部 ID:OTP-15134

Public_Key 1.6.1

修复的 Bug 和故障

  • public_key 中新生成的模数文件中的某些密钥长度并非普遍支持。这可能会导致 SSH 密钥交换 diffie-hellman-group-exchange-sha* 失败。

    现在已删除这些密钥长度。

    内部 ID:OTP-15151 辅助 ID:OTP-15113

Public_Key 1.6

修复的 Bug 和故障

  • 更新对 base64 模块的调用以符合该模块的类型规范。

    内部 ID:OTP-14788 辅助 ID:OTP-14624

改进和新特性

  • 使用 uri_string 模块而不是 http_uri。

    内部 ID:OTP-14902

  • 一个新函数 - public_key:pkix_verify_hostname_match_fun/1 - 返回一个 fun,作为 public_key:pkix_verify_hostname/3 或通过 ssl 的选项 match_fun 给出。

    该 fun 根据参数中的特定协议规则进行验证主机名匹配。目前仅支持 https

    内部 ID:OTP-14962 辅助 ID:ERL-542、OTP-15102

  • 完整的 PKCS-8 编码支持,并增强了 'PrivateKeyInfo' 的解码,以符合其余的 Erlang public_key API。

    内部 ID:OTP-15093

  • 生成一个新的模数文件。此文件用于 SSH 中推荐的 diffie-hellman-group-exchange-sha256 密钥交换算法。

    内部 ID:OTP-15113

Public_Key 1.5.2

修复的 Bug 和故障

  • 修复了 public_key:ssh_encode/2 中的一个错误,该错误使得可以在生成的二进制文件中错误地使用另一种类型(例如 ECDSA)编码 RSA 密钥。

    内部 ID:OTP-14570 辅助 ID:ERIERL-52、OTP-14676

  • 更正了 public_key:generate_key/1 中参数化 EC 密钥的处理,以便它按预期工作,而不是导致 crypto 中的运行时错误。

    内部 ID:OTP-14620

Public_Key 1.5.1

改进和新特性

  • 主机名验证:在证书的主题备用名称扩展 (subjAltName) 中添加对通用名称 iPAddress 的处理。

    内部 ID:OTP-14653

  • 更正了 pkix_test_data/1 中的密钥处理,并使用通用示例邮件地址而不是现有的邮件地址。

    内部 ID:OTP-14766

Public_Key 1.5

修复的 Bug 和故障

  • public_key 现在以一致的方式处理椭圆曲线参数,以便可以正确重新编码解码的 ECDSA 密钥。

    *潜在的不兼容性*

    内部 ID:OTP-14621 辅助 ID:ERL-480、ERL-481

改进和新特性

  • 使用以下内容扩展 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。
    * ripemd160 用于 RSA 签名。

    这是 2015 年 9 月 potatosalad 的拉取请求 838 的一半的手动合并。

    内部 ID:OTP-13704 辅助 ID:PR838

  • 添加 API 函数 pkix_test_data/1 以方便自动化测试。这对于执行所谓证书链的 X509 证书路径验证(例如 TLS)的应用程序非常有用。

    内部 ID:OTP-14181

  • 改进的错误传播和报告

    内部 ID:OTP-14236

  • RSAPrivateKey 版本设置为“two-prime”,而不是直接使用基础枚举值。

    内部 ID:OTP-14534

  • 已弃用的函数 crypto:rand_uniform/2rand:uniform/1 替换。

    内部 ID:OTP-14608

Public_Key 1.4.1

修复的 Bug 和故障

  • 修复了 public_key:generate_key({namedCurve,OID}) 的 Bug。

    内部 ID:OTP-14258

改进和新特性

  • 通过使用映射来现代化用于 crl 验证的内部表示。

    内部 ID:OTP-14111

  • 支持 pkix_sign/2 中的 EC 密钥

    内部 ID:OTP-14294

Public_Key 1.4

改进和新特性

  • 新函数 pkix_verify_hostname/2,3 实现证书主机名检查。请参阅手册和 RFC 6125。

    内部 ID:OTP-13009

  • 现在,ssh 主机密钥指纹生成也接受算法列表,并返回相应的指纹列表。请参阅 public_key:ssh_hostkey_fingerprint/2ssh:connect 中的 silently_accept_hosts 选项。

    自身 ID:OTP-14223

Public_Key 1.3

改进和新特性

  • 新函数 public_key:ssh_hostkey_fingerprint/1,2 用于计算 SSH 主机密钥指纹字符串。

    自身 ID:OTP-13888 辅助 ID:OTP-13887

Public_Key 1.2

修复的错误和故障

  • ASN-1 类型 GeneralName 可以有比最常见的目录名称更多的值,代码现在可以处理这种情况。

    自身 ID:OTP-13554

改进和新特性

  • 处理 PEM 编码的 EC 公钥

    自身 ID:OTP-13408

Public_Key 1.1.1

修复的错误和故障

  • 封装的 PEM 标头后应跟一个空行

    自身 ID:OTP-13381 辅助 ID:seq13070

Public_Key 1.1

改进和新特性

  • 实现了用于 ssh 的 'ecdsa-sha2-nistp256'、'ecdsa-sha2-nistp384' 和 'ecdsa-sha2-nistp521' 签名算法。请参阅 RFC 5656。

    自身 ID:OTP-12936

  • 现在有一个文件 (public_key/priv/moduli),其中列出了大小-生成器-模数三元组。目的是使服务器能够从预生成的三元组列表中随机选择加密素数。这降低了对 diffie-hellman 协商进行某些攻击的风险。

    请参阅 public_key:dh_gex_group/4 的参考手册,其中描述了此处理。

    ssh 服务器 (ssh:daemon) 使用它。

    自身 ID:OTP-13054 辅助 ID:OTP-13052

  • 根据 PKIX1Explicit88 中的注释建议,为不同的字符串类型添加不同的上限。

    自身 ID:OTP-13132

Public_Key 1.0.1

改进和新特性

  • 文档增强

    自身 ID:OTP-12986

Public_Key 1.0

改进和新特性

  • public_key: 删除旧版开关 compact_bit_string

    例如,位串将不再解码为 {Unused, Binary},它们现在是 Erlang 位串。

    此外,compact_bit_string 意味着 legacy_erlang_types 开关。因此,删除该开关也会使 OCTET STRING 值表示为二进制文件。

    未解码的开放类型现在将包装在 asn1_OPENTYPE 元组中。

    这将更改 public_key API 返回的记录中的一些值,从而使此更改可能不兼容。

    *潜在的不兼容性*

    自身 ID:OTP-12110

Public_Key 0.23

改进和新特性

  • 改进/扩展了对 CRL 处理的支持。

    自身 ID:OTP-12547 辅助 ID:OTP-10362

Public_Key 0.22.1

修复的错误和故障

  • 为 PBES2 添加了缺失的编码支持,并完成了对不完整的 PBES1 的支持。

    自身 ID:OTP-11915

Public_Key 0.22

修复的错误和故障

  • 修复了不正确的 dialyzer 规范和类型,并增强了文档。

    感谢 Ayaz Tuncer。

    自身 ID:OTP-11627

  • 以下应用程序的应用程序升级 (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

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

    (感谢 Tobias Schlager)

    自身 ID:OTP-11744

改进和新特性

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

    感谢 Andreas Schultz

    自身 ID:OTP-11578

  • 处理没有扩展的 v1 CRL,并修复了 CRL 验证期间的 IDP(颁发分发点)比较问题。

    感谢 Andrew Thompson

    自身 ID:OTP-11761

Public_Key 0.21

改进和新特性

  • 修复了 public_key 文档中的一个小错字。感谢 Tomas Morstein。

    自身 ID:OTP-11380

  • public_key:解决错误编码的 utf8 emailAddress 的问题。感谢 Andrew Bennett。

    自身 ID:OTP-11470

Public_Key 0.20

改进和新特性

  • 扩展 PKCS-7 以支持 SCEP(简单证书注册协议)。

    自身 ID:OTP-10874

  • public_key:pem_entry_decode/2 现在可以处理 AES-128-CBC 加密的密钥。感谢 Simon Cornish。

    自身 ID:OTP-11281

Public_Key 0.19

改进和新特性

  • 添加对 ISO oid 1.3.14.3.2.29 和 1.3.14.3.2.27 的支持,这些 oid 有时用于代替 PKCS 定义的 oid 1.2.840.113549.1.1.5 和 1.2.840.10040.4.3。添加函数 pkix_sign_types:/1,该函数将 oid 转换为算法原子,例如

    public_key:pkix_sign_types({1,3,14,3,2,29}). {sha,rsa}

    自身 ID:OTP-10873

  • 集成 Andreas Schultz 的椭圆曲线贡献

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

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

    影响:椭圆曲线密码术 (ECC) 提供与使用其他公钥算法相比,具有更小密钥大小的等效安全性。较小的密钥大小可以节省电力、内存、带宽和计算成本,这使得 ECC 对受限环境特别有吸引力。

    自身 ID:OTP-11009

Public_Key 0.18

修复的错误和故障

  • 修复 public_key 中的 subjectPublicKeyInfo 类型注释。感谢 Ryosuke Nakai。

    自身 ID:OTP-10670

改进和新特性

  • public_key 现在支持 CRL 验证,并记录了函数 public_key:pkix_path_validation/3

    自身 ID:OTP-7045

  • 已更正一些溢出 PDF 页面宽度的示例。

    自身 ID:OTP-10665

  • 修复了 public_key 规范中的错别字。

    自身 ID:OTP-10723

  • 更正了 PKCS-10 文档,并添加了一些 PKCS-9 支持,这些支持相当常见,由 PKCS-10 使用。对 PKCS-9 的全面支持将在以后添加。

    自身 ID:OTP-10767

Public_Key 0.17

修复的错误和故障

  • ssh_decode 现在可以正确处理行尾包含空格的注释

    自身 ID:OTP-9361

  • 添加了对 sha224 和 sha384 的缺失引用

    自身 ID:OTP-9362 辅助 ID:seq12116

改进和新特性

  • public_key 现在支持 PKCS-10,并包括对 PKCS-7 的实验性支持

    自身 ID:OTP-10509 辅助 ID:kunagi-291 [202]

Public_Key 0.16

改进和新特性

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

    自身 ID:OTP-9908

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

    自身 ID:OTP-10065

Public_Key 0.15

改进和新特性

  • 更改了 ssh 实现,以使用 public_key 应用程序进行所有公钥处理。这也是启用回调 API 以提供公钥和处理受密码短语保护的密钥的第一步。

    此外,测试套件得到了改进,使其不会将用户的密钥复制到测试服务器目录,因为这是一种安全隐患。还修复了在此过程中发现的 ipv6 和文件访问问题。

    此更改还解决了 OTP-7677 和 OTP-7235

    此更改还涉及到对 public_keys ssh 函数的一些更新。

    自身 ID:OTP-9911

Public_Key 0.14

改进和新特性

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

    自身 ID:OTP-9312

  • 如果可用,asn1 解码器/编码器现在使用来自 asn1 应用程序的运行时 nif。

    自身 ID:OTP-9414

Public_Key 0.13

修复的错误和故障

  • 将 "a ssl" 替换为 "an ssl" 重新缩进 pkix_path_validation/3 微不足道的文档修复(感谢 Christian von Roques)

    自身 ID:OTP-9464

Public_Key 0.12

改进和新特性

  • public_key 应用程序现在支持 ssh 公钥文件的编码/解码。

    自身 ID:OTP-9144

Public_Key 0.11

改进和新特性

  • 允许 public_key 模块解码和编码使用 SubjectPublicKeyInfo 格式编码的 RSA 和 DSA 密钥。当对 RSA 或 DSA 公钥类型调用 pem_entry_encode 时,该密钥将以 SubjectPublicKeyInfo 格式封装。

    自有 ID:OTP-9061

Public_Key 0.10

改进和新特性

  • 改进了 dialyzer 规范。

    自有 ID:OTP-8964

Public_Key 0.9

改进和新特性

  • 更新了 ssl 以忽略违反证书 asn1 规范的 CA 证书,并更新了公钥 asn1 规范以处理继承的 DSS 参数。

    自有 ID:OTP-7884

  • 更改了 ssl 实现,以保留旧选项 {verify, 0} 的向后兼容性,该选项应等效于 {verify, verify_none},同时还分离了未知 ca 和自签名对等证书的情况,并恢复了已弃用函数 public_key:pem_to_der/1 的返回值。

    自有 ID:OTP-8858

  • 更好地处理 v1 和 v2 证书。V1 和 v2 证书没有任何扩展,因此 validate_extensions 应该只接受没有扩展,而不是最终导致 missing_basic_constraints 子句。

    自有 ID:OTP-8867

  • 更改了验证函数,使其通过使用 valid_peer 或 valid 作为验证函数的第二个参数来区分对等证书和 CA 证书。否则,可能并不总是容易甚至不可能知道何时到达对等证书。

    *潜在的不兼容性*

    自有 ID:OTP-8873

Public_Key 0.8

修复的错误和故障

  • 在 ssl 和 public_key 中更改了对未知 CA 证书的处理,使其按预期工作。

    自有 ID:OTP-8788

改进和新特性

  • 修改了 public_key API - 清理并记录了 public_key API,使其可用于通用用途,还更改了 ssl 以使用新的 API。

    自有 ID:OTP-8722

  • 添加了当路径验证认为证书有效时调用验证函数的功能,以允许访问路径中每个证书到用户应用程序。此外,尝试验证 subject-AltName,如果无法验证,则让应用程序验证它。

    自有 ID:OTP-8825

Public_Key 0.7

修复的错误和故障

  • 没有扩展的证书无法由 public_key 处理。

    自有 ID:OTP-8626

改进和新特性

  • 代码清理和小错误修复。

    自有 ID:OTP-8649

Public_Key 0.6

改进和新特性

  • 支持 Diffie-Hellman。ssl-3.11 需要 public_key-0.6。

    自有 ID:OTP-7046

  • 将 ssl 值的扩展密钥使用测试移动到 ssl。

    自有 ID:OTP-8553 辅助 ID:seq11541,OTP-8554

Public_Key 0.5

改进和新特性

  • 添加了 public_key:pkix_transform/2,以使 ssl 能够在证书请求期间发送 CA 列表。

    注意:SSL (new_ssl) 需要 public_key-0.5。 ssl 用法。

    自有 ID:OTP-8372

Public_Key 0.4

改进和新特性

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

    自有 ID:OTP-8250

Public_Key 0.3

修复的错误和故障

  • 证书中的未知属性被保留编码,而不是崩溃。由 Will "wglozer" 提供的补丁,谢谢。

    自有 ID:OTP-8100

改进和新特性

  • 允许 public_key:pem_to_der/[1,2] 除了文件名之外,还可以使用二进制文件作为参数。由 Geoff Cant 提供的补丁,谢谢。

    自有 ID:OTP-8142

Public_Key 0.2

改进和新特性

  • 由于对 ssl 和 public_key 应用程序进行了更广泛的测试,X509 证书处理得到了扩展和改进。证书处理的更多扩展仍有待实现。

    自有 ID:OTP-7860

Public_Key 0.1

改进和新特性

  • 第一个版本。

    自有 ID:OTP-7637