Content deleted Content added
Guy Harris (talk | contribs) Update some links that now go to learn.microsoft.com. |
Davidghook (talk | contribs) |
||
(48 intermediate revisions by 18 users not shown) | |||
Line 1:
{{Short description|none}}
{{About|TLS libraries comparison|cryptographic libraries comparison|Comparison of cryptography libraries}}
{{redirect|Secure Transport|the transportation of valuables|
The [[Transport Layer Security]] (TLS) protocol provides the ability to secure communications across or inside networks. This '''comparison of TLS implementations''' compares several of the most notable [[software library|libraries]]. There are several TLS implementations which are [[free software]] and [[Open-source software|open source]].
Line 8:
== Overview ==
{{sort-under}}
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 129 ⟶ 130:
| Australia/EU
|-
| [[Rustls]]
| Joe Birr-Pixton, Dirkjan Ochtman, Daniel McCarney, Josh Aas, and open source contributors
| {{yes}}
| {{free|[[Apache License|Apache-2.0]], [[MIT License]] and [[ISC license|ISC]]}}
| Open source contributors
| [[Rust (programming language)|Rust]]
| {{Latest stable software release/Rustls}}
| United Kingdom
|-
| [[s2n]]
| [[Amazon.com|Amazon]]
| {{yes}}
| {{free|[[Apache License]] 2.0, [[GNU General Public License#Version 2|GNU GPLv2]]+}} and commercial license
| Amazon.com, Inc.
| [[C (programming language)|C]]
| Continuous
Line 143 ⟶ 152:
| {{no}}
| {{proprietary}}
| Microsoft
|
| Windows 11, 2021-10-05
Line 160 ⟶ 169:
| wolfSSL<ref name="wolfsslproduct">{{cite web | url=https://www.wolfssl.com/wolfSSL/Products-wolfssl.html | title=wolfSSL product description | accessdate=2016-05-03}}</ref>
| {{yes}}
| {{free|[[GNU General Public License#Version
| wolfSSL Inc.<ref name="wolfsslcompany">{{cite web | url=https://www.wolfssl.com | title=wolfSSL Embedded SSL/TLS | accessdate=2016-05-03}}</ref>
| [[C (programming language)|C]], [[Assembly language|assembly]]
Line 194 ⟶ 203:
TLS 1.2 (2008) introduced a means to identify the hash used for digital signatures. While permitting the use of stronger hash functions for digital signatures in the future (rsa,sha256/sha384/sha512) over the SSL 3.0 conservative choice (rsa,sha1+md5), the TLS 1.2 protocol change inadvertently and substantially weakened the default digital signatures and provides (rsa,sha1) and even (rsa,md5).<ref name="TLSv1.2-changes">{{cite IETF |rfc=5246 |title=The Transport Layer Security (TLS) Protocol Version 1.2 |section=1.2 |sectionname=TLSv1.2's Major Differences from TLSv1.1}}</ref>
[[Datagram Transport Layer Security]] (DTLS or Datagram TLS) 1.0 is a modification of TLS 1.1 for a packet-oriented transport layer, where packet loss and packet reordering have to be tolerated. The revision DTLS 1.2 based on TLS 1.2 was published in January 2012.<ref name="RFC 6347">
TLS 1.3 (2018) specified in RFC 8446 includes major optimizations and security improvements. QUIC (2021) specified in RFC 9000 and DTLS 1.3 (2022) specified in RFC 9147 builds on TLS 1.3. The publishing of TLS 1.3 and DTLS 1.3 obsoleted TLS 1.2 and DTLS 1.2.
Line 200 ⟶ 209:
Note that there are known vulnerabilities in SSL 2.0 and SSL 3.0. In 2021, IETF published RFC 8996 also forbidding negotiation of TLS 1.0, TLS 1.1, and DTLS 1.0 due to known vulnerabilities. NIST SP 800-52 requires support of TLS 1.3 by January 2024. Support of TLS 1.3 means that two compliant nodes will never negotiate TLS 1.2.
{| class="wikitable sortable sort-under mw-collapsible" style="text-align: left; font-size: smaller"
|-
! Implementation
! [[Transport Layer Security|SSL 2.0]] (insecure)<ref name="sslv2">{{cite IETF|draft=draft-hickman-netscape-ssl-00|title=The SSL Protocol|date=19 April 1995|last1=Elgamal|first1=Taher|last2=Hickman|first2=Kipp E. B.}}</ref>
! [[Transport Layer Security|SSL 3.0]] (insecure)<ref name="auto">
! [[Transport Layer Security|TLS 1.0]] (deprecated)<ref name="auto1">
! [[Transport Layer Security|TLS 1.1]] (deprecated)<ref name="auto2">
! [[Transport Layer Security|TLS 1.2]]<ref name="tls" />
! [[Transport Layer Security|TLS 1.3]]
! [[Datagram Transport Layer Security|DTLS 1.0]] (deprecated)<ref name="auto3">
! [[Datagram Transport Layer Security|DTLS 1.2]]<ref name="RFC 6347" />
! [[Datagram Transport Layer Security|DTLS 1.3]]
|-
| [[Botan (programming library)|Botan]]
Line 221 ⟶ 231:
| {{yes|No}}
| {{yes}}
| {{no}}
|-
| [[BoringSSL]]
Line 231 ⟶ 242:
| {{okay|Yes}}
| {{yes}}
| {{no}}
|-
|[[Bouncy Castle (cryptography)|Bouncy Castle]]
Line 238 ⟶ 250:
| {{okay|Yes}}
| {{yes}}
| {{Yes}}
| {{okay|Yes}}
| {{yes}}
| {{no}}
|-
| [[BSAFE]] SSL-J<ref name="RSABSAFETECH">{{cite web| title = RSA BSAFE Technical Specification Comparison Tables| url = http://www.emc.com/collateral/data-sheet/11433-bsafe-tech-table.pdf| access-date = 2015-01-09| archive-url = https://web.archive.org/web/20150924043531/http://www.emc.com/collateral/data-sheet/11433-bsafe-tech-table.pdf| archive-date = 2015-09-24| url-status = dead}}</ref>
Line 250 ⟶ 263:
| {{yes}}
| {{yes|No}}
| {{no}}
| {{no}}
|-
| [[cryptlib]]
| {{yes|No}}
| {{yes|
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{yes}}
| {{yes|No}}
| {{no}}
| {{no}}
|-
Line 271 ⟶ 286:
| {{okay|Yes}}
| {{yes}}
| {{no}}
|-
| [[Java Secure Socket Extension|JSSE]]
Line 281 ⟶ 297:
| {{okay|Yes}}
| {{yes}}
| {{no}}
|-
| [[LibreSSL]]
Line 291 ⟶ 308:
| {{okay|Yes}}
| {{yes}}<ref name="libressl-3.3.3">{{cite web| title = LibreSSL 3.3.3 Released| url = https://marc.info/?l=openbsd-announce&m=162009196519308| date = 2021-05-04| accessdate = 2021-05-04}}</ref>
| {{no}}
|-
| [[MatrixSSL]]
Line 301 ⟶ 319:
| {{okay|Yes}}
| {{yes}}
| {{no}}
|-
| [[Mbed TLS]]
Line 311 ⟶ 330:
| {{okay|Yes}}<ref name="mbed-2.0">{{cite web | title = mbed TLS 2.0.0 released | url = https://tls.mbed.org/tech-updates/releases/mbedtls-2.0.0-released | date = 2015-07-10 | accessdate = 2015-07-14}}</ref>
| {{yes}}<ref name="mbed-2.0"/>
| {{no}}
|-
| [[Network Security Services|NSS]]
Line 321 ⟶ 341:
| {{okay|Yes}}<ref name="NSS-3.14"/>
| {{yes}}<ref name="NSS-3.16.2">{{cite web| url=https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2_release_notes| title=NSS 3.16.2 release notes| date=2014-06-30| work=Mozilla Developer Network| publisher=Mozilla| accessdate=2014-06-30| archive-date=2021-12-07| archive-url=https://web.archive.org/web/20211207015257/https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2_release_notes| url-status=dead}}</ref>
| {{no}}
|-
| [[OpenSSL]]
Line 331 ⟶ 352:
| {{okay|Yes}}
| {{yes}}<ref name="openssl-1.0.2-note">{{cite web|url=https://www.openssl.org/news/openssl-1.0.2-notes.html |title=Major changes between OpenSSL 1.0.1l and OpenSSL 1.0.2 [22 Jan 2015] |accessdate=2015-01-22 |url-status=dead |archiveurl=https://web.archive.org/web/20140904045720/http://www.openssl.org/news/openssl-1.0.2-notes.html |archivedate=September 4, 2014 }}</ref>
| {{no}}
|-
| [[Rustls]]
| {{yes|No}}<ref name="rustls-features">{{cite web|url=https://docs.rs/rustls/0.23.12/rustls/manual/_04_features/index.html |title=rustls implemented and unimplemented features documentation |accessdate=2024-08-28 }}</ref>
| {{yes|No}}<ref name="rustls-features"/>
| {{yes|No}}<ref name="rustls-features"/>
| {{yes|No}}<ref name="rustls-features"/>
| {{yes}}<ref name="rustls-features"/>
| {{yes}}<ref name="rustls-features"/>
| {{yes|No}}
| {{no}}
| {{no}}
|-
|-
| [[s2n]]<ref name="S2NSPEC">{{cite web| title = S2N Readme| website = [[GitHub]]| url = https://github.com/awslabs/s2n/blob/master/README.md| date = 2019-12-21}}</ref>
Line 340 ⟶ 374:
| {{yes}}
| {{yes|No}}
| {{no}}
| {{no}}
|-
Line 350 ⟶ 385:
| {{No}}
| {{yes|No}}
| {{no}}
| {{no}}
|-
Line 360 ⟶ 396:
| {{No}}
| {{yes|No}}
| {{no}}
| {{no}}
|-
Line 371 ⟶ 408:
| {{No}}
| {{yes|No}}
| {{no}}
| {{no}}
|-
Line 382 ⟶ 420:
| {{okay|Yes}}<ref name=MS2574819>{{cite web|title=An update is available that adds support for DTLS in Windows 7 SP1 and Windows Server 2008 R2 SP1|url=http://support.microsoft.com/kb/2574819/en-us|publisher=Microsoft|accessdate=13 November 2012}}</ref>
| {{no}}<ref name=MS2574819 />
| {{no}}
|-
| [[Schannel]] 8, 2012<ref name="Windows7schannel" />
Line 391 ⟶ 430:
| {{No}}
| {{okay|Yes}}
| {{no}}
| {{no}}
|-
| [[Schannel]] 8.1, 2012R2, 10
| {{Yes|Disabled by default}}
| {{partial|Disabled by default in MSIE 11}}
Line 401 ⟶ 441:
| {{No}}
| {{okay|Yes}}
| {{no}}
| {{no}}
|-
Line 412 ⟶ 453:
| {{okay|Yes}}
| {{yes}}
| {{no}}
|-
| [[Schannel]] 11 / 2022<ref>{{cite web |title=Protocols in TLS/SSL (Schannel SSP) |date=25 May 2022 |url=https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp- |access-date=6 November 2022}}</ref>
Line 422 ⟶ 464:
| {{okay|Yes}}
| {{yes}}
| {{no}}
|-
|[[MacOS|Secure Transport]]
Line 432 ⟶ 475:
|
| {{yes|No}}
| {{no}}
| {{no}}
|-
Line 442 ⟶ 486:
|
| {{okay|Yes}}<ref group=lower-alpha name="secure-transport-osx" />
| {{no}}
| {{no}}
|-
Line 453 ⟶ 498:
| {{okay|Yes}}
| {{Unknown}}
| {{no}}
|-
| Secure Transport OS X 10.13, iOS 11
Line 463 ⟶ 509:
| {{okay|Yes}}
| {{Unknown}}
| {{no}}
|-
| [[wolfSSL]]
Line 472 ⟶ 519:
| {{yes}}
| {{okay|Yes}}
| {{yes}}
| {{yes}}
|-
Line 484 ⟶ 532:
| {{yes|Disabled by default}} <ref group=lower-alpha name="otp-22" />
| {{yes}}
| {{no}}
|-
|- class="sortbottom"
Line 495 ⟶ 544:
! [[Datagram Transport Layer Security|DTLS 1.0]] (deprecated)<ref name="auto3" />
! [[Datagram Transport Layer Security|DTLS 1.2]]<ref name="RFC 6347" />
! [[Datagram Transport Layer Security|DTLS 1.3]]
|}
{{Reflist|group=lower-alpha|refs=
Line 512 ⟶ 562:
* [[SHA-2|Secure Hash Algorithm 2]] (SHA-256 and SHA-384) — [[message digest]]
Per CNSSP-15, the 256-bit elliptic curve (specified in FIPS 186-2), SHA-256, and AES with 128-bit keys are sufficient for protecting classified information up to the [[
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 551 ⟶ 601:
| [[OpenSSL]]
| {{yes}}<ref name="openssl-1.0.2-note"/>
|-
| [[Rustls]]
| {{yes}}<ref name="rustls-features"/>
|-
| [[S2n]]
Line 572 ⟶ 625:
Note that certain certifications have received serious negative criticism from people who are actually involved in them.<ref>{{Cite web|url=http://index.html/|archiveurl=https://web.archive.org/web/20131227190128/http://veridicalsystems.com/blog/secure-or-compliant-pick-one/|url-status=dead|title=Speeds and Feeds › Secure or Compliant, Pick One|archivedate=December 27, 2013}}</ref>
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! rowspan="2"|Implementation
! colspan="2"|[[FIPS 140-1]], [[FIPS 140-2]]<ref>{{cite web|url=http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm|title=Search - Cryptographic Module Validation Program - CSRC|website=csrc.nist.gov|access-date=2014-03-18|archive-url=https://web.archive.org/web/20141226152243/http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm|archive-date=2014-12-26|url-status=dead}}</ref>
!
|-
! Level 1
! Level 2{{Disputed inline|FIPS140-2|date=January 2015}}
! Level 1
|-
| [[Botan (programming library)|Botan]]<ref>{{cite web|url=http://botan.randombit.net/faq.html?highlight=fips#is-botan-fips-140-certified|title="Is botan FIPS 140 certified?" Frequently Asked Questions — Botan|access-date=2014-11-16|archive-url=https://web.archive.org/web/20141129042131/http://botan.randombit.net/faq.html?highlight=fips#is-botan-fips-140-certified|archive-date=2014-11-29|url-status=dead}}</ref>
Line 587 ⟶ 641:
|-
|[[Bouncy Castle (cryptography)|Bouncy Castle]]
|{{yes|BC-FJA
|
|
|-
| [[BSAFE]] SSL-J<ref>{{cite web|url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search|title=Search - Cryptographic Module Validation Program - CSRC|website=csrc.nist.gov|date=11 October 2016}}</ref>
| {{yes|Crypto-J 6.0 ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/1785 1785], [https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/1786 1786])<br />Crypto-J 6.1 / 6.1.1.0.1 ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/2057 2057], [https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/2058 2058])<br />Crypto-J 6.2 / 6.2.1.1 ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/2468 2468], [https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/2469 2469])<br />Crypto-J 6.2.4 ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3172 3172], [https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3184 3184])<br />Crypto-J 6.2.5 ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3819 #3819], [https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3820 #3820])<br />Crypto-J 6.3 ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4696 #4696], [https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4697 #4697])}}
|
|{{yes|Crypto-J 7.0 ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4892 4892])}}
|-
| [[cryptlib]]<ref>{{cite web|url=http://www.cs.auckland.ac.nz/~pgut001/cryptlib/faq.html#Q8|archive-url=https://web.archive.org/web/20131011085917/http://www.cs.auckland.ac.nz/~pgut001/cryptlib/faq.html#Q8|url-status=dead|archive-date=11 October 2013|title=cryptlib|date=11 October 2013}}</ref>
Line 635 ⟶ 689:
|
|
|-
|[[Rustls]]
|
|
| {{yes|aws-lc FIPS module<ref>{{cite web|url=https://docs.rs/rustls/0.23.12/rustls/manual/_06_fips/index.html|title=rustls FIPS documentation|accessdate=2024-08-28}} </ref> ([https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4759 #4759])}}
|-
| [[Schannel]]<ref>{{Cite web|url=https://technet.microsoft.com/en-us/library/security/cc750357.aspx#_Microsoft_FIPS_140|title=Microsoft FIPS 140 Validated Cryptographic Modules}}</ref>
Line 649 ⟶ 708:
| {{yes|wolfCrypt FIPS Module: 4.0 (#3389)<br />See details on [https://csrc.nist.gov/Projects/cryptographic-module-validation-program/Certificate/3389 NIST certificate] for validated Operating Environments<br />wolfCrypt FIPS Module: 3.6.0 (#2425)<br />See details on [https://csrc.nist.gov/projects/cryptographic-module-validation-program/Certificate/2425 NIST certificate] for validated Operating Environments}}
|
| {{yes|wolfCrypt FIPS Module (#4178)<br />See details on [https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4718 NIST certificate]}}
|-
|-class="sortbottom"
Line 655 ⟶ 714:
! Level 1
! Level 2
! Level 1
|-
! colspan="2"|FIPS 140-1, FIPS 140-2
! colspan="1"|FIPS 140-3
|}
{{Reflist |group="notes"}}
Line 663 ⟶ 723:
== Key exchange algorithms (certificate-only) ==
This section lists the certificate verification functionality available in the various implementations.
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
! [[RSA (cryptosystem)|RSA]]<ref name="tls">
! [[RSA (cryptosystem)|RSA]]-EXPORT (insecure)<ref name=tls/>
! [[Diffie–Hellman key exchange|DHE]]-[[RSA (cryptosystem)|RSA]] ([[forward secrecy]])<ref name=tls/>
! [[Diffie–Hellman key exchange|DHE]]-[[Digital Signature Algorithm|DSS]] ([[forward secrecy]])<ref name=tls/>
! [[Elliptic curve Diffie–Hellman|ECDH]]-[[Elliptic Curve DSA|ECDSA]]<ref name="rfc4492">
! [[Elliptic curve Diffie–Hellman|ECDHE]]-[[Elliptic Curve DSA|ECDSA]] ([[forward secrecy]])<ref name="rfc4492"/>
! [[Elliptic curve Diffie–Hellman|ECDH]]-[[RSA (cryptosystem)|RSA]]<ref name="rfc4492"/>
Line 703 ⟶ 763:
| {{yes}}
| {{okay|Yes}}
| {{yes}}
| {{yes}}
| {{yes|No}}
| {{yes}}
| {{yes|No}}
|-
Line 785 ⟶ 845:
| {{yes}}
| {{okay|Yes}}<ref name="OpenSSL-GOST">{{Cite web|url=http://cvs.openssl.org/fileview|archiveurl=https://archive.today/20130415122812/http://cvs.openssl.org/fileview?f=openssl%2Fengines%2Fccgost%2FREADME.gost|url-status=dead|title=OpenSSL: CVS Web Interface|archive-date=2013-04-15|access-date=2014-11-12}}</ref>
|-
| [[Rustls]]
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes}}<ref name="rustls-features"/>
| {{yes|No}}
| {{yes}}<ref name="rustls-features"/>
| {{yes|No}}
|-
| [[Schannel|Schannel XP/2003]]
Line 911 ⟶ 982:
== Key exchange algorithms (alternative key-exchanges) ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
! [[Secure Remote Password protocol|SRP]]<ref name="srp">
! [[Secure Remote Password protocol|SRP]]-[[Digital Signature Algorithm|DSS]]<ref name=srp/>
! [[Secure Remote Password protocol|SRP]]-[[RSA (cryptosystem)|RSA]]<ref name=srp/>
! [[Pre-shared key|PSK]]-[[RSA (cryptosystem)|RSA]]<ref name="psk">
! [[Pre-shared key|PSK]]<ref name=psk/>
! [[Diffie–Hellman key exchange|DHE]]-[[Pre-shared key|PSK]] ([[forward secrecy]])<ref name=psk/>
! [[Elliptic curve Diffie–Hellman|ECDHE]]-[[Pre-shared key|PSK]] ([[forward secrecy]])<ref name="ecdhepsk">
! [[Kerberos (protocol)|KRB5]]<ref name="Kerberos">
! [[Diffie–Hellman key exchange|DH]]-ANON<ref name=tls/> (insecure)
! [[Elliptic curve Diffie–Hellman|ECDH]]-ANON<ref name="rfc4492"/> (insecure)
Line 957 ⟶ 1,028:
| {{yes}}
| {{no}}
| {{
| {{Yes|No}}
| {{Yes|No}}
Line 1,025 ⟶ 1,096:
| {{no}}<ref name="nss_srp"/>
| {{no}}<ref name="nss_srp"/>
| {{no}}<ref name="nss_psk">{{cite web |url=https://bugzilla.mozilla.org/show_bug.cgi?
| {{no}}<ref name="nss_psk"/>
| {{no}}<ref name="nss_psk"/>
Line 1,044 ⟶ 1,115:
| {{Yes|Disabled by default}}<ref name="OpenSSL-1.0.0">{{cite web|url=https://www.openssl.org/news/changelog.html#x29|title=Changes between 0.9.8n and 1.0.0 [29 Mar 2010]|accessdate=2016-01-29}}</ref>
| {{Yes|Disabled by default}}<ref name="OpenSSL-1.0.0"/>
|-
| [[Rustls]]
| {{no}}
| {{no}}
| {{no}}
| {{no}}
| {{no}}
| {{no}}
| {{no}}
| {{no}}
| {{yes|No}}
| {{yes|No}}
|-
| [[Schannel]]
Line 1,109 ⟶ 1,192:
== Certificate verification methods ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
! Application-defined
! PKIX path validation<ref>
! [[Revocation list|CRL]]<ref>
! [[Online Certificate Status Protocol|OCSP]]<ref>
! [[DNS-based Authentication of Named Entities|DANE]] (DNSSEC)<ref>
! [[Certificate Transparency|CT]]<ref>{{cite IETF |title=Certificate Transparency |rfc=6962 |idlink=Certificate Transparency |last1=Laurie |authorlink1=Ben Laurie |first1=B. |last2=Langley |first2=A. |last3=Kasper |first3=E. |date=June 2013 |publisher=[[Internet Engineering Task Force|IETF]] |access-date=2020-08-31 |issn=2070-1721}}</ref>
|-
Line 1,125 ⟶ 1,207:
| {{yes}}
| {{yes}}
| {{no}}
| {{unknown}}
Line 1,135 ⟶ 1,216:
| {{yes}}
| {{yes}}
| {{unknown}}
|-
Line 1,143 ⟶ 1,223:
| {{yes}}
| {{yes}}
| {{no}}
| {{unknown}}
Line 1,152 ⟶ 1,231:
| {{yes}}
| {{yes}}
| {{no}}
| {{unknown}}
|-
| [[GnuTLS]]
| {{yes}}
| {{yes}}
Line 1,170 ⟶ 1,247:
| {{yes}}
| {{yes}}
| {{no}}
| {{no}}
Line 1,179 ⟶ 1,255:
| {{yes}}
| {{yes}}
| {{no}}
| {{unknown}}
Line 1,188 ⟶ 1,263:
| {{yes}}
| {{yes}}<ref>{{cite web|url=http://www.matrixssl.org/blog/releases/matrixssl_3_8_3|title=MatrixSSL 3.8.3|accessdate=2017-01-18|archive-url=https://web.archive.org/web/20170119052959/http://www.matrixssl.org/blog/releases/matrixssl_3_8_3|archive-date=2017-01-19|url-status=dead}}</ref>
| {{no}}
| {{unknown}}
Line 1,197 ⟶ 1,271:
| {{yes}}
| {{no}}<ref>{{cite web|url=https://tls.mbed.org/tech-updates/blog/mbedtls-2.0-defaults-best-practices|title=mbed TLS 2.0 defaults implement best practices|accessdate=2017-01-18}}</ref>
| {{no}}
| {{unknown}}
Line 1,207 ⟶ 1,280:
| {{yes}}
| {{no}}<ref>{{cite web|url=https://bugzilla.mozilla.org/show_bug.cgi?id=672600|title=Bug 672600 - Use DNSSEC/DANE chain stapled into TLS handshake in certificate chain validation |publisher=Mozilla|accessdate=2014-06-18}}</ref>
| {{unknown}}
|-
Line 1,216 ⟶ 1,288:
| {{yes}}
| {{yes}}
| {{yes}}
|-
| [[Rustls]]
| {{yes}}
| {{yes}}
| {{yes}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[s2n]]
Line 1,224 ⟶ 1,303:
| {{no}} <ref>{{Cite web |title=CRL Validation · Issue #3499 · aws/s2n-tls |url=https://github.com/aws/s2n-tls/issues/3499 |access-date=2022-11-01 |website=GitHub |language=en}}</ref>
| {{unknown}} <ref>{{Cite web |title=OCSP digest support for SHA-256 · Issue #2854 · aws/s2n-tls · GitHub |url=https://github.com/aws/s2n-tls/issues/2854 |access-date=2022-11-01 |website=GitHub |language=en}}</ref>
|
| {{unknown}} <ref>{{Cite web |title=[RFC 6962] s2n Client can Validate Signed Certificate Timestamp TLS Extension · Issue #457 · aws/s2n-tls · GitHub |url=https://github.com/aws/s2n-tls/issues/457 |access-date=2022-11-01 |website=GitHub |language=en}}</ref>
Line 1,234 ⟶ 1,312:
| {{yes}}<ref name="TechNet">{{cite web |url=https://technet.microsoft.com/en-us/library/ee619754(WS.10).aspx |title=How Certificate Revocation Works |author=<!--Staff writer(s); no by-line.--> |date=March 16, 2012 |website=[[Microsoft TechNet]] |publisher=[[Microsoft]] |accessdate=July 10, 2013}}</ref>
| {{yes}}<ref name="TechNet" />
| {{no}}
| {{unknown}}
Line 1,243 ⟶ 1,320:
| {{yes}}
| {{yes}}
| {{no}}
| {{unknown}}
Line 1,252 ⟶ 1,328:
| {{yes}}
| {{yes}}
| {{no}}
| {{unknown}}
Line 1,260 ⟶ 1,335:
| {{yes}}
| {{yes}}
| {{no}}
| {{no}}
Line 1,272 ⟶ 1,346:
! OCSP
! DANE (DNSSEC)
! CT
|}
== Encryption algorithms ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! rowspan="2"|Implementation !! colspan="10"|[[Block cipher]] with [[Block cipher mode of operation|mode of operation]] !! [[Stream cipher]] !! None
|-
! [[Advanced Encryption Standard|AES]] [[Galois/Counter Mode|GCM]]<br /><ref name="aes-gcm"
* {{cite IETF|rfc=5288}}
* {{cite IETF|rfc=5289}}</ref>
! [[Advanced Encryption Standard|AES]] [[CCM mode|CCM]]<br /><ref name="aes-ccm">RFC 6655, RFC 7251</ref>
! [[Advanced Encryption Standard|AES]] [[Cipher block chaining|CBC]]
! [[Camellia (cipher)|Camellia]] [[Galois/Counter Mode|GCM]]<br /><ref name="camellia-gcm">
! [[Camellia (cipher)|Camellia]] [[Cipher block chaining|CBC]]<br /><ref name="camellia-cbc">
! [[ARIA (cipher)|ARIA]] [[Galois/Counter Mode|GCM]]<br /><ref name=aria/>
! [[ARIA (cipher)|ARIA]] [[Cipher block chaining|CBC]]<br /><ref name="aria">
! [[SEED]] [[Cipher block chaining|CBC]]<br /><ref name="seed-cbc">
! {{nowrap|[[Triple DES|3DES EDE]]}} [[Cipher block chaining|CBC]]<br />(insecure)<ref name="sweet32.info">{{cite web|url=https://sweet32.info/|title=Sweet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN|website=sweet32.info}}</ref>
! {{nowrap|[[GOST 28147-89]]}} [[Block cipher mode of operation#Counter (CTR)|CNT]]<br />(proposed)<br /><ref name=gostlink/><ref group="n" name="draft">This algorithm is not defined yet as TLS cipher suites in RFCs, is proposed in drafts.</ref>
! [[ChaCha20]]-[[Poly1305]]<br /><ref name="chacha20-poly1305">
! Null<br />(insecure)<br /><ref group="n" name="NULL">authentication only, no encryption</ref>
|-
Line 1,447 ⟶ 1,522:
| {{yes}}<ref name="openssl-1.1.0-note"/>
| {{yes|Disabled by default}}
|-
| [[Rustls]]
| {{yes}}<ref name="rustls-features"/>
| {{yes|No}}
| {{yes|No}}
| {{okay|No}}
| {{yes|No}}
| {{okay|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes}}<ref name="rustls-features"/>
| {{yes|Not implemented}}
|-
| [[Schannel|Schannel XP/2003]]
Line 1,567 ⟶ 1,656:
! [[Advanced Encryption Standard|AES]] [[Cipher block chaining|CBC]]
! [[Camellia (cipher)|Camellia]] [[Galois/Counter Mode|GCM]]<br /><ref name="camellia-gcm"/>
! [[Camellia (cipher)|Camellia]] [[Cipher block chaining|CBC]]<br /><ref name="camellia-cbc"/><ref name="camellia-gcm"/>
! [[ARIA (cipher)|ARIA]] [[Galois/Counter Mode|GCM]]<br /><ref name=aria/>
! [[ARIA (cipher)|ARIA]] [[Cipher block chaining|CBC]]<br /><ref name=aria/>
Line 1,581 ⟶ 1,670:
=== Obsolete algorithms ===
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! rowspan="2"|Implementation !! colspan="4"|[[Block cipher]] with [[Block cipher mode of operation|mode of operation]] !! colspan="2"|[[Stream cipher]]
Line 1,679 ⟶ 1,768:
| {{yes|Disabled by default}}
| {{Yes|No}}<ref name="openssl-1.1.0-note"/>
|-
| [[Rustls]]
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
|-
| [[Schannel|Schannel XP/2003]]
Line 1,805 ⟶ 1,902:
=== Defined curves in RFC 8446 (for TLS 1.3) and RFC 8422, 7027 (for TLS 1.2 and earlier) ===
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! applicable TLS version
Line 1,947 ⟶ 2,044:
| {{yes}}<ref name="openssl-1.0.2-note"/>
| {{yes}}<ref name="openssl-1.0.2-note"/>
|-
| [[Rustls]]
| {{yes}}
| {{yes}}
| {{no}}
| {{yes}}
| {{no}}
| {{okay|No}}
| {{okay|No}}
| {{okay|No}}
|-
| [[Schannel|Schannel Vista/2008, 7/2008R2, 8/2012, 8.1/2012R2, 10]]
Line 1,999 ⟶ 2,106:
! [[ECC Brainpool|brainpoolP384r1]]<br />(27)
! [[ECC Brainpool|brainpoolP512r1]]<br />(28)
|}
=== Deprecated curves in RFC 8422 ===
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 2,269 ⟶ 2,192:
|-
| [[Java Secure Socket Extension|JSSE]]
| {{yes|Notes}}{{refn|group=lower-alpha|name="JSSEDisableEC"|These elliptic curves were "Disabled by Default" in current JDK families as part of JDK-8236730.<ref>{{cite web |title=Release Note: Weak Named Curves in TLS, CertPath, and Signed JAR Disabled by Default
| {{yes|Notes}}<ref group=lower-alpha name="JSSEDisableEC"/><ref group=lower-alpha name="JSSERemoveEC"/>
| {{yes|Notes}}<ref group=lower-alpha name="JSSEDisableEC"/><ref group=lower-alpha name="JSSERemoveEC"/>
Line 2,363 ⟶ 2,286:
| {{yes}}
| {{yes}}
|-
| [[Rustls]]
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{okay|No}}
| {{okay|No}}
| {{okay|No}}
| {{okay|No}}
| {{okay|No}}
| {{okay|No}}
|-
| [[Schannel|Schannel Vista/2008, 7/2008R2, 8/2012, 8.1/2012R2, 10]]
Line 2,448 ⟶ 2,387:
|}
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 2,579 ⟶ 2,518:
| {{no|Yes}}
| {{yes}}
| {{yes|No}}
| {{yes|No}}
|-
| [[Rustls]]
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{yes|No}}
| {{okay|No}}
| {{yes|No}}
| {{yes|No}}
Line 2,650 ⟶ 2,601:
== Data integrity ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 2,657 ⟶ 2,608:
! [[HMAC]]-[[SHA-2|SHA256/384]]
! [[Authenticated encryption|AEAD]]
! [[GOST 28147-89|GOST 28147-89 IMIT]]<br/><ref name=gostlink/>
! [[GOST (hash function)|GOST R 34.11-94]]<br/><ref name=gostlink/>
|-
| [[Botan (programming library)|Botan]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[BSAFE]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[cryptlib]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[GnuTLS]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[Java Secure Socket Extension|JSSE]]
Line 2,697 ⟶ 2,648:
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[LibreSSL]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{okay|Yes}}<br/><ref name="libressl-2.1.2"/>
| {{okay|Yes}}<br/><ref name="libressl-2.1.2"/>
|-
| [[MatrixSSL]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[Mbed TLS]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[Network Security Services|NSS]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[OpenSSL]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{okay|Yes}}<br/><ref name="OpenSSL-GOST"/>
| {{okay|Yes}}<br/><ref name="OpenSSL-GOST"/>
|-
| [[Rustls]]
| {{No Y}}
| {{No Y}}
| {{No Y}}
| {{yes}}
| {{No Y}}
| {{No Y}}
|-
| [[Schannel|Schannel XP/2003, Vista/2008]]
| {{
| {{okay|Yes}}
| {{partial|XP SP3, 2003 SP2 via hotfix}}<br/><ref name="SHA2 and Windows">{{cite web|url=https://techcommunity.microsoft.com/
| {{no}}
| {{
| {{
|-
| [[Schannel|Schannel 7/2008R2, 8/2012, 8.1/2012R2]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{partial|except ECDHE_RSA}}<br/><ref name="ms14-066" /><ref name="20141111msblog" /><ref name="win8.1aesgcm"/>
| {{
| {{
|-
| [[Schannel|Schannel 10]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}<br/><ref name=schannel10pre/>
| {{
| {{
|-
| [[MacOS|Secure Transport]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[wolfSSL]]
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
| [[Erlang (programming language)|Erlang]]/OTP SSL application
| {{
| {{okay|Yes}}
| {{okay|Yes}}
| {{yes}}
| {{
| {{
|-
|-class="sortbottom"
Line 2,800 ⟶ 2,759:
== Compression ==
Note the [[CRIME (security exploit)|CRIME security exploit]] takes advantage of TLS compression, so conservative implementations do not enable compression at the TLS level. [[HTTP compression]] is unrelated and unaffected by this exploit, but is exploited by the related [[BREACH (security exploit)|BREACH attack]].
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 2,834 ⟶ 2,793:
| [[OpenSSL]]
| {{Yes|Disabled by default}}
|-
| [[Rustls]]
| {{yes|No}}
|-
| [[Schannel]]
Line 2,855 ⟶ 2,817:
In this section the extensions each implementation supports are listed. Note that the Secure Renegotiation extension is critical for HTTPS client security {{citation needed|date=August 2014}}. TLS clients not implementing it are vulnerable to attacks, irrespective of whether the client implements TLS renegotiation.
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 2,864 ⟶ 2,826:
! [[OpenPGP]]<br /><ref name="openpgp">RFC 6091</ref>
! Supplemental Data<br /><ref name="supdata">RFC 4680</ref>
! Session Ticket<br /><ref name="exporter">
! Keying Material Exporter<br /><ref name="sticket">
! Maximum Fragment Length<br /><ref name=tlsexts/>
!
!
! Extended Master Secret<br /><ref name="extendedmastersecret">RFC 7627</ref>
! ClientHello Padding<br /><ref name="tlspadding">RFC 7685</ref>
Line 2,884 ⟶ 2,845:
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}<ref name="Botan 1.11.10">{{cite web|url=http://botan.randombit.net/relnotes/1_11_10.html|title=Version 1.11.10, 2014-12-10 — Botan|date=2014-12-10|accessdate=2014-12-14}}</ref>
Line 2,901 ⟶ 2,861:
| {{no}}
| {{yes}}
| {{no}}
| {{no}}
Line 2,918 ⟶ 2,877:
| {{no}}
| {{no}}<ref name="cryptlib-maxfrag">Present, but disabled by default due to lack of use by any implementation.</ref>
| {{yes}}
| {{yes}}
Line 2,935 ⟶ 2,893:
| {{yes}}
| {{yes}}
| {{yes}}<ref name="GnuTLS-3.4.0"/>
| {{yes}}<ref name="GnuTLS-3.4.4">{{cite web|url=http://permalink.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/8267|title=gnutls 3.4.4|accessdate=2015-08-25|archive-url=https://web.archive.org/web/20170717020648/http://permalink.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/8267|archive-date=2017-07-17|url-status=dead}}</ref>
Line 2,952 ⟶ 2,909:
| {{no}}
| {{yes}}
| {{no}}
| {{no}}
Line 2,969 ⟶ 2,925:
| {{yes}}?
| {{no}}
| {{no}}
| {{partial|Server side only}}<ref name="libressl-2.1.4">{{cite web| title = LibreSSL 2.1.4 released| url = https://marc.info/?l=openbsd-announce&m=142543818707898| date = 2015-03-04| accessdate = 2015-03-04}}</ref>
Line 2,986 ⟶ 2,941:
| {{no}}
| {{yes}}
| {{no}}
| {{yes}}<ref name="matrixssl_3.8.3"/>
Line 3,003 ⟶ 2,957:
| {{no}}
| {{yes}}
| {{yes}}<ref name="mbedTLS-1.3.10">{{cite web|url=https://polarssl.org/tech-updates/releases/mbedtls-1.3.10-released|title=mbed TLS 1.3.10 released|date=2015-02-08|access-date=2015-02-09|archive-date=2015-02-09|archive-url=https://web.archive.org/web/20150209180352/https://polarssl.org/tech-updates/releases/mbedtls-1.3.10-released|url-status=dead}}</ref>
| {{yes}}<ref name="mbedTLS-1.3.10"/>
Line 3,020 ⟶ 2,973:
| {{yes}}
| {{no}}
| {{no}}<ref>{{cite web|url=https://bugzilla.mozilla.org/show_bug.cgi?id=972145|title=Bug 972145 - Implement the encrypt-then-MAC TLS extension |publisher=Mozilla|accessdate=2014-11-06}}</ref>
| {{yes}}<ref>{{cite web|url=https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.1_release_notes|title=NSS 3.17.1 release notes|accessdate=2014-10-17|archive-date=2019-04-19|archive-url=https://web.archive.org/web/20190419152214/https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.1_release_notes|url-status=dead}}</ref>
Line 3,037 ⟶ 2,989:
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}<ref>{{cite web|url=https://
| {{yes}}<ref name="openssl-1.1.0-note" />
| {{yes}}<ref name="openssl-1.0.1g-note">{{cite web|url=https://www.openssl.org/news/openssl-1.0.1-notes.html |title=Major changes between OpenSSL 1.0.1f and OpenSSL 1.0.1g [7 Apr 2014] |date=2014-04-07 |accessdate=2015-02-10 |url-status=dead |archive-url=https://web.archive.org/web/20150120120428/https://www.openssl.org/news/openssl-1.0.1-notes.html |archive-date=2015-01-20}}</ref>
| {{yes}}<ref name="openssl3.2.0">{{cite web|url=https://
|-
| [[Rustls]]
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{no}}
| {{no}}
| {{yes}}
| {{yes}}
| {{no}}
| {{no}}
| {{no}} <ref>rustls does not implement earlier versions that would warrant protection against insecure downgrade</ref>
| {{yes}}
| {{no}}
| {{unknown}}
|-
| [[Schannel|Schannel XP/2003]]
Line 3,054 ⟶ 3,021:
| {{no}}
| {{no}}
| {{no}}
| {{no}}
Line 3,071 ⟶ 3,037:
| {{no}}
| {{no}}
| {{no}}
| {{no}}
| {{yes}}<ref name="MS15-121">{{cite web|url=https://learn.microsoft.com/en-us/security-updates/SecurityBulletins/2015/ms15-121|title=Microsoft Security Bulletin MS15-121|date=March 2023 |accessdate=2024-04-28}}</ref>
| {{no}}
| {{unknown}}
Line 3,088 ⟶ 3,053:
| {{no}}
| {{no}}
| {{no}}
| {{no}}
Line 3,102 ⟶ 3,066:
| {{no}}
| {{yes}}
| {{partial|Client side only}}<ref name="Schannel_SessionTicket">{{cite web|url=https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831771(v=ws.11)|title=What's New in TLS/SSL (Schannel SSP)|date=31 August 2016 |accessdate=2024-04-28}}</ref>
| {{no}}
| {{no}}
| {{no}}
| {{no}}
Line 3,122 ⟶ 3,085:
| {{no}}
| {{no}}
| {{no}}
| {{no}}
Line 3,139 ⟶ 3,101:
| {{no}}
| {{no}}
| {{no}}
| {{no}}
Line 3,156 ⟶ 3,117:
| {{no}}
| {{yes}}
| {{yes}}<ref name="wolfssl-4.2.0">{{cite web|url=https://www.wolfssl.com/wolfssl-version-4-2-0-now-available/|title=wolfSSL Version 4.2.0 is Now Available!|date=22 October 2019|accessdate=2021-08-13}}</ref>
| {{no}}
| {{yes}}
| {{no}}
| {{yes}}<ref name="wolfssl">{{cite web|url=https://www.wolfssl.com/wolfssl-supports-raw-public-keys/|title=wolfSSL supports Raw Public Keys|date=August 2023 |accessdate=2024-10-25}}</ref>
|-
| Erlang/OTP SSL application
Line 3,173 ⟶ 3,133:
| {{no}}
| {{no}}
| {{no}}
| {{yes}}
Line 3,191 ⟶ 3,150:
! Keying Material Exporter
! Maximum Fragment Length
! Encrypt-then-MAC
! TLS Fallback SCSV
Line 3,201 ⟶ 3,159:
== Assisted cryptography ==
This section lists the known ability of an implementation to take advantage of CPU instruction sets that optimize encryption, or utilize system specific devices that allow access to underlying cryptographic hardware for acceleration or for data separation.
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 3,208 ⟶ 3,166:
! [[VIA PadLock]]
! [[ARM architecture#ARMv8-A|ARMv8-A]]
! [[Intel SHA extensions|Intel SHA]]
! [[NXP CAAM]]
! [[TPM 2.0]]
! [[NXP SE050]]
! [[Microchip ATECC]]
! [[STMicro STSAFE]]
! [[Maxim MAXQ]]
|-
| [[Botan (programming library)|Botan]]
Line 3,218 ⟶ 3,179:
| {{no}}
| {{yes}}
|
| {{no}}
| {{yes}}<ref>{{cite web | url=https://botan.randombit.net/handbook/api_ref/tpm.html | title=Trusted Platform Module (TPM) — Botan }}</ref>
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
|-
| [[BSAFE]] SSL-J {{refn|group=lower-alpha|Pure Java implementations relies on [[Java virtual machine|JVM]] processor optimization capabilities, such as [[OpenJDK]] support for [[AES-NI]]<ref>{{Cite web|url=
| {{okay|Yes}}
| {{okay|Yes}}
| {{no}}
| {{okay|Yes}}
| {{okay|Yes}}
| {{no}}
| {{no}}<ref>{{cite web | url=https://www.dell.com/support/kbdoc/en-my/000204717/comparison-of-bsafe-tls-libraries-micro-edition-suite-vs-ssl-j | title=Comparison of BSAFE TLS libraries: Micro Edition Suite vs SSL-J | Dell Malaysia }}</ref>
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
Line 3,240 ⟶ 3,207:
| {{no}}
|
|
| {{yes}}
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[Crypto++]]
Line 3,249 ⟶ 3,219:
|
|
| {{yes}}
|
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[GnuTLS]]
Line 3,259 ⟶ 3,232:
| {{yes}}
| {{yes}}<ref>{{Cite web|url=https://lists.gnupg.org/pipermail/gnutls-devel/2016-October/008194.html|title=[gnutls-devel] gnutls 3.5.5|first=Nikos|last=Mavrogiannopoulos|date=October 9, 2016}}</ref>
| {{yes}}
|
| {{no}}<ref>{{cite web | url=https://www.gnutls.org/manual/html_node/Trusted-Platform-Module.html | title=Trusted Platform Module (GnuTLS 3.8.4) }}</ref>
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[Java Secure Socket Extension|JSSE]]
Line 3,272 ⟶ 3,248:
| {{no}}
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
Line 3,280 ⟶ 3,259:
| {{no}}
|
|
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[MatrixSSL]]
Line 3,292 ⟶ 3,274:
| {{no}}
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
Line 3,302 ⟶ 3,287:
| {{no}}
|
| {{Partial}}<ref>{{cite web | url=https://github.com/NXP/plug-and-trust/tree/master?tab=readme-ov-file | title=NXP/Plug-and-trust | website=[[GitHub]] }}</ref>
| {{yes}}<ref>{{cite web | url=https://github.com/ARMmbed/mbed-os-atecc608a/ | title=ARMmbed/Mbed-os-atecc608a | website=[[GitHub]] }}</ref>
| {{no}}
| {{no}}
|-
Line 3,312 ⟶ 3,300:
| {{no}}
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[OpenSSL]]
| {{yes}}<ref>{{cite web | url=https://habrahabr.ru/post/134725/
| {{yes}}
| {{yes}}
| {{yes}}<ref>{{cite web|url=http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=ddacb8f27ba4c8a8d51c306c150e1a8703b008f2|title=git.openssl.org Git - openssl.git/commitdiff|website=git.openssl.org}}</ref>
| {{yes}}
| {{Partial}}
| {{Partial}}<ref>{{cite web | url=https://github.com/tpm2-software/tpm2-openssl | title=Tpm2-software/Tpm2-openssl | website=[[GitHub]] }}</ref><ref>{{cite web | url=https://docs.openssl.org/3.0/man7/provider/ | title=Provider - OpenSSL Documentation }}</ref>
| {{Partial}}<ref>{{cite web | url=https://github.com/NXP/plug-and-trust/tree/master?tab=readme-ov-file | title=NXP/Plug-and-trust | website=[[GitHub]] }}</ref>
| {{no}}
| {{Partial}}<ref>{{cite web | url=https://www.st.com/en/embedded-software/stsw-stsa110-ssl.html | title=STSW-STSA110-SSL - STSAFE-A integration within OpenSSL security stack | website=[[STMicroelectronics]]}}</ref>
| {{no}}
|-
| [[Rustls]]
|
| {{yes}}
|
| {{yes}}
| {{yes}}
|
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[Schannel]]
Line 3,332 ⟶ 3,339:
| {{no}}
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
| [[MacOS|Secure Transport]]
| {{no}}
| {{Yes}}<ref>{{GitHub|https://
| {{no}}
| {{Yes}}
Line 3,342 ⟶ 3,352:
| {{no}}
|
| {{no}}
| {{no}}
| {{no}}
| {{no}}
|-
Line 3,349 ⟶ 3,362:
| {{no}}
| {{yes}}
|
| {{yes}}<ref>{{cite web|url=https://community.nxp.com/t5/i-MX-Processors/CAAM-support-in-wolfSSL/m-p/1013736|title=CAAM support in wolfSSL |date=10 March 2020|publisher=}}</ref>
| {{yes}}<ref>{{cite web|url=https://www.wolfssl.com/products/wolftpm/|title=wolfTPM Portable TPM 2.0 Library}}</ref><ref>{{cite web|url=https://www.wolfssl.com/announcing-wolfssl-tpm-support-for-the-espressif-esp32/|title=Announcing wolfSSL TPM support for the Espressif ESP32|date=20 June 2024|publisher=}}</ref>
| {{yes}}<ref>{{cite web | url=https://www.wolfssl.com/wolfssl-ssl-tls-support-for-nxp-se050/ | title=WolfSSL SSL/TLS Support for NXP SE050 – wolfSSL | date=22 February 2024 }}</ref>
| {{yes}}<ref>{{cite web | url=https://www.wolfssl.com/blog-wolfssl-support-atecc608-crypto-coprocessor/ | title=WolfSSL support for the ATECC608 Crypto Coprocessor – wolfSSL | date=13 October 2021 }}</ref>
| {{yes}}<ref>{{cite web | url=https://www.wolfssl.com/wolfssl-support-stsafe-a100-crypto-coprocessor/ | title=WolfSSL support for STSAFE-A100 crypto coprocessor – wolfSSL | date=20 September 2018 }}</ref>
| {{yes}}<ref>{{cite web | url=https://www.wolfssl.com/support-maxq1065-wolfssl/ | title=Support for MAXQ1065 in wolfSSL – wolfSSL | date=29 November 2022 }}</ref>
|-
|-class="sortbottom"
Line 3,360 ⟶ 3,376:
! VIA PadLock
! ARMv8-A
! Intel SHA
! NXP CAAM
! TPM 2.0
! NXP SE050
! Microchip ATECC
! STMicro STSAFE
! Maxim MAXQ
|}
Line 3,370 ⟶ 3,389:
== System-specific backends ==
This section lists the ability of an implementation to take advantage of the available operating system specific backends, or even the backends provided by another implementation.
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
!
! af_alg
! [[Cryptographic Service Provider|Windows CSP]]
! CommonCrypto
! [[OpenSSL|OpenSSL engine]]
|-
Line 3,394 ⟶ 3,413:
|-
| [[cryptlib]]
| {{
| {{no}}
| {{no}}
Line 3,448 ⟶ 3,467:
| {{no}}
| {{yes}}
|-
| [[Rustls]]
| {{no}}
| {{yes}} <ref>{{cite web|title=ktls integration for rustls|website=[[GitHub]] |accessdate=2024-08-29|url=https://github.com/rustls/ktls}}</ref>
| {{no}}
| {{no}}
| {{no}}
|-
| [[Schannel]]
Line 3,487 ⟶ 3,513:
== Cryptographic module/token support ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 3,505 ⟶ 3,531:
|-
| [[cryptlib]]
| {{
| {{yes|[[PKCS 11|PKCS #11]]}}
| User-defined label
Line 3,543 ⟶ 3,569:
| {{partial|[[PKCS 11|PKCS #11]] (via 3rd party module)}}<ref name=libp11>{{cite web|url=https://github.com/OpenSC/libp11|title=libp11: PKCS#11 wrapper library|date=19 January 2018|publisher=|via=GitHub}}</ref>
| RFC 7512 PKCS #11 URLs<ref name=pkcs11urls/>
|-
| [[Rustls]]
| {{no}}
| {{yes|[[Microsoft CryptoAPI]]}} <ref>{{cite web|url=https://github.com/rustls/rustls-cng|title=Windows CNG bridge for rustls|website=[[GitHub]] |accessdate=2024-08-29}}</ref>
| Custom method
|-
| [[Schannel]]
Line 3,567 ⟶ 3,598:
== Code dependencies ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 3,600 ⟶ 3,631:
| libc<br />libnspr4<br />libsoftokn3<br />libplc4<br />libplds4
| zlib (compression)
|-
| [[Rustls]]
| rust {{mono|core}} library
| rust {{mono|std}} library<br />zlib-rs (compression)<br />brotli (compression)<br />''ring'' (cryptography)<br />aws-lc-rs (cryptography)<br />
|-
| [[OpenSSL]]
Line 3,620 ⟶ 3,655:
== Development environment ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 3,650 ⟶ 3,685:
com.rsa.ssl{{cref2|group=dev_env_footnotes|e}}<br />
com.rsa.jsse{{cref2|group=dev_env_footnotes|f}}
| [[Java
| Javadoc, Developer's guide (HTML)
| Included
Line 3,720 ⟶ 3,755:
| Included (monolithic)
| {{N/a}}
|-
| [[Rustls]]
| {{code|rustls::}}
| cargo
| [https://docs.rs/rustls/0.23.12/rustls/ API reference] and [https://docs.rs/rustls/0.23.12/rustls/manual/ design manual]
| Two options included (pluggable)
| {{yes}}<ref>{{cite web|url=https://github.com/rustls/rustls-openssl-compat/|title=rustls-openssl compatibility layer|website=[[GitHub]] |accessdate=2024-08-29}}</ref> (subset)
|-
| [[wolfSSL]]
Line 3,748 ⟶ 3,790:
== Portability concerns ==
{| class="wikitable sortable sort-under" style="text-align: left; font-size: smaller"
|-
! Implementation
Line 3,830 ⟶ 3,872:
| {{no}}
| AIX, Android, FreeBSD, NetBSD, OpenBSD, BeOS, HP-UX, IRIX, Linux, macOS, OS/2, Solaris, OpenVMS, Amiga DE, Windows, WinCE, Sony PlayStation
|-
| [[Rustls]]
| [[Rust (programming language)]]
| None
| {{yes|Thread-safe}}
| Platform dependent
| {{yes}}
| {{yes}}
| All supported by [[Rust (programming language)]]
|-
| [[OpenSSL]]
|