The tables below compare cryptography libraries that deal with cryptography algorithms and have application programming interface (API) function calls to each of the supported features.
Name of implementation | Initiative | Main implementation language | Open-source software | Software license | Latest release | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Jack Lloyd | C++ | Yes | Simplified BSD | 3.5.0 (July 8, 2024 [1] ) [±] | ||||||||||
Bouncy Castle | Legion of the Bouncy Castle Inc. | Java, C# | Yes | MIT License |
| ||||||||||
BSAFE | Dell, formerly RSA Security | Java, C, Assembly | No | Proprietary | Crypto-C Micro Edition: 4.1.5 (December 17, 2020 [7] ) [±]
| ||||||||||
cryptlib | Peter Gutmann | C | Yes | Sleepycat License or commercial license | 3.4.5 (2019 [12] ) [±] | ||||||||||
Crypto++ | The Crypto++ project | C++ | Yes | Boost (all individual files are public domain) | Jan 10, 2023 (8.9.0) | ||||||||||
GnuTLS | Nikos Mavrogiannopoulos, Simon Josefsson | C | Yes | LGPL-2.1-or-later | 3.8.5 [13] 2024-04-04 | ||||||||||
Java's default JCA/JCE providers | Oracle | Java | Yes | GNU GPL v2 and commercial license | 23.0.1 (October 15, 2024 [14] ) [±] | ||||||||||
LibreSSL | OpenBSD Foundation | C | Yes | Apache 1.0 | 4.0.0 [19] 2024-10-14 | ||||||||||
Libgcrypt | GnuPG community and g10code | C | Yes | GNU LGPL v2.1+ |
| ||||||||||
libsodium | Frank Denis | C | Yes | ISC | Sep 13, 2023 (1.0.19) | ||||||||||
Mbed TLS | Arm Limited | C | Yes | Apache 2.0 | 3.0.0 (July 7, 2021 [22] ) [±] | ||||||||||
NaCl | Daniel J. Bernstein, Tanja Lange, Peter Schwabe | C | Yes | Public domain | February 21, 2011 [23] | ||||||||||
Nettle | C | Yes | GNU GPL v2+ or GNU LGPL v3 | 3.10 [24] 2024-06-16 | |||||||||||
Network Security Services (NSS) | Mozilla | C | Yes | MPL 2.0 |
| ||||||||||
OpenSSL | The OpenSSL Project | C | Yes | Apache 2.0 | 3.4.0 [26] 2024-10-22 | ||||||||||
wolfCrypt | wolfSSL, Inc. | C | Yes | GNU GPL v2 or commercial license | 5.7.4 (October 24, 2024 [27] ) [±] |
This table denotes, if a cryptography library provides the technical requisites for FIPS 140, and the status of their FIPS 140 certification (according to NIST's CMVP search, [28] modules in process list [29] and implementation under test list). [30]
Implementation | FIPS 140-2 mode | FIPS 140-2 validated | FIPS 140-3 validated |
---|---|---|---|
Botan | No | No | No |
Bouncy Castle | Yes | Yes [31] | In process [32] |
BSAFE | Yes | Yes [33] [34] | Yes [35] |
cryptlib | Yes | No | No |
Crypto++ | No | No [a] | No |
GnuTLS | No | Yes [36] [b] | In process [37] |
Java's default JCA/JCE providers | No | No [38] [c] | No |
Libgcrypt | Yes | Yes [39] [d] | In process [37] |
libsodium | No | No | No |
Mbed TLS | No | No | No |
NaCl | No | No | No |
Nettle | No | No | No |
Network Security Services (NSS) | Yes | Yes [40] [e] | In process [37] |
OpenSSL | Yes | Yes [41] [f] | In process [37] |
wolfCrypt | Yes | Yes [42] | Yes [43] |
Key operations include key generation algorithms, key exchange agreements, and public key cryptography standards.
Implementation | RSA | DSA | ECDSA | EdDSA | Ed448 | DH | ECDH | ECIES | ElGamal | NTRU (IEEE P1363.1) | DSS |
---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |
Bouncy Castle | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
BSAFE | Yes | Yes | Yes | No | No | Yes | Yes | Yes | No | No | No |
cryptlib | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | No | Yes |
Crypto++ | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | No | Yes |
GnuTLS | Yes | No | No | No | No | No | No | No | No | No | No |
Java's default JCA/JCE providers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes |
Libgcrypt | Yes | Yes | Yes | Yes | Yes | Yes | Yes [a] | No | Yes | No | Yes |
libsodium | No | No | No | Yes | No | No | No | No | No | No | No |
Mbed TLS | Yes | Yes | Yes | No | No | Yes | Yes | No | No | No | No |
Nettle | Yes | Yes | No | Yes | No | No | No | No | No | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
wolfCrypt | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes |
Implementation | NIST | SECG | ECC Brainpool | Curve25519 | Curve448 | GOST R 34.10 [44] | SM2 |
---|---|---|---|---|---|---|---|
Botan | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Bouncy Castle | Yes | Yes | Yes | Yes | No | Yes | No |
BSAFE | Yes | Yes | No | No | No | No | No |
cryptlib | Yes | Yes | Yes | No | No | No | No |
Crypto++ | Yes | Yes | Yes | Yes | No | No | No |
GnuTLS | Yes | No | No | No | No | No | No |
Java's default JCA/JCE providers | Yes | Yes | No | Yes | Yes | No | No |
Libgcrypt | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
libsodium | Yes | No | No | Yes | Yes | No | No |
Mbed TLS | Yes | Yes | Yes | Yes | No | No | No |
Nettle | Yes | Partial | No | Yes | No | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
wolfCrypt | Yes | Yes | Yes | Yes | Yes | No | Yes |
Implementation | PKCS #1 | PKCS #5, [45] PBKDF2 | PKCS #8 | PKCS #12 | IEEE P1363 | ASN.1 |
---|---|---|---|---|---|---|
Botan | Yes | Yes | Yes | No | Yes | Yes |
Bouncy Castle | Yes | Yes | Yes | Yes | Yes | Yes |
BSAFE Crypto-J | Yes | Yes | Yes | Yes | No | Yes |
cryptlib | Yes | Yes | Yes | Yes | No | Yes |
Crypto++ | Yes | Yes | Yes [a] | No | Yes | Yes |
GnuTLS | ||||||
Java's default JCA/JCE providers | Yes | Yes | Yes | Yes | Yes | Yes |
Libgcrypt | Yes | Yes [b] | Yes [b] | Yes [b] | Yes [b] | Yes [b] |
libsodium | No | No | No | No | No | No |
Mbed TLS | Yes | No | Yes | Yes | No | Yes |
Nettle | Yes | Yes | No | No | No | No |
OpenSSL | Yes | Yes | Yes | Yes | No | Yes |
wolfCrypt | Yes | Yes | Yes | Yes | No | Yes |
Comparison of supported cryptographic hash functions. Here hash functions are defined as taking an arbitrary length message and producing a fixed size output that is virtually impossible to use for recreating the original message.
Implementation | MD5 | SHA-1 | SHA-2 | SHA-3 | RIPEMD-160 | Tiger | Whirlpool | BLAKE2 | GOST R 34.11-94 [46] (aka GOST 34.311-95) | GOST R 34.11-2012 (Stribog) [47] | SM3 |
---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Bouncy Castle | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
BSAFE Crypto-J | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
cryptlib | Yes | Yes | Yes | Yes | Yes | No | Yes | No | No | No | No |
Crypto++ | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |
GnuTLS | |||||||||||
Java's default JCA/JCE providers | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
Libgcrypt | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
libsodium | No | No | Yes | No | No | No | No | Yes | No | No | No |
Mbed TLS | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Nettle | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |
wolfCrypt | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | Yes |
Comparison of implementations of message authentication code (MAC) algorithms. A MAC is a short piece of information used to authenticate a message—in other words, to confirm that the message came from the stated sender (its authenticity) and has not been changed in transit (its integrity).
Implementation | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA2 | Poly1305 | BLAKE2-MAC |
---|---|---|---|---|---|
Botan | Yes | Yes | Yes | Yes | Yes |
Bouncy Castle | Yes | Yes | Yes | Yes | Yes |
BSAFE Crypto-J | Yes | Yes | Yes | Yes | No |
cryptlib | Yes | Yes | Yes | No | No |
Crypto++ | Yes | Yes | Yes | Yes | Yes |
GnuTLS | |||||
Java's default JCA/JCE providers | Yes | Yes | Yes | No | No |
Libgcrypt | Yes | Yes | Yes | Yes | Yes |
libsodium | No | No | Yes | Yes | Yes |
Mbed TLS | Yes | Yes | Yes | No | No |
Nettle | Yes | Yes | Yes | Yes | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes |
wolfCrypt | Yes | Yes | Yes | Yes | Yes |
Table compares implementations of block ciphers. Block ciphers are defined as being deterministic and operating on a set number of bits (termed a block) using a symmetric key. Each block cipher can be broken up into the possible key sizes and block cipher modes it can be run with.
Implementation | AES | 3DES | Camellia | Blowfish | Twofish | IDEA | CAST5 | ARIA | GOST 28147-89 [48] / GOST R 34.12-2015 (Magma [49] & Kuznyechik [50] ) | SM4 |
---|---|---|---|---|---|---|---|---|---|---|
Botan | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Bouncy Castle [51] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
BSAFE Crypto-J | Yes | Yes | No | No | No | No | No | No | No | No |
cryptlib [52] | Yes | Yes | No | Yes | No | Yes | Yes | No | No | No |
Crypto++ | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Partial [a] | Yes |
GnuTLS | Yes | No | Yes | No | No | No | No | No | No | No |
Java's default JCA/JCE providers | Yes | Yes | No | Yes | No | No | No | No | No | No |
Libgcrypt | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
libsodium | Partial [b] | No | No | No | No | No | No | No | No | No |
Mbed TLS | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Nettle | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
OpenSSL | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
wolfCrypt | Yes | Yes | Yes | No | No | Yes | No | Yes | No | Yes |
Implementation | ECB | CBC | OFB | CFB | CTR | CCM | GCM | OCB | XTS | AES-Wrap | Stream | EAX |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Botan | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Bouncy Castle | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes |
BSAFE | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No |
cryptlib | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | No | No |
Crypto++ | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes | Yes |
GnuTLS | ||||||||||||
Java's default JCA/JCE providers | Yes | Yes | Yes | Yes | Yes | No | Yes | No | No | Yes | Yes | No |
Libgcrypt | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
libsodium | No | No | No | No | Yes | No | Yes | No | No | No | No | No |
Mbed TLS | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | No | No | No |
Nettle | Yes | Yes | No | No | Yes | Yes | Yes | No | No | No | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
wolfCrypt | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
The table below shows the support of various stream ciphers. Stream ciphers are defined as using plain text digits that are combined with a pseudorandom cipher digit stream. Stream ciphers are typically faster than block ciphers and may have lower hardware complexity, but may be more susceptible to attacks.
Implementation | RC4 | HC-256 | Rabbit | Salsa20 | ChaCha | SEAL | Panama | WAKE | Grain | VMPC | ISAAC |
---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Yes | No | No | Yes | Yes | No | No | No | No | No | No |
Bouncy Castle | Yes | Yes | No | Yes | Yes | No | No | No | Yes | Yes | Yes |
BSAFE Crypto-J | Yes | No | No | No | Yes | No | No | No | No | No | No |
cryptlib | Yes | No | No | No | No | No | No | No | No | No | No |
Crypto++ | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
GnuTLS | |||||||||||
Java's default JCA/JCE providers | Yes | No | No | No | Yes | No | No | No | No | No | No |
Libgcrypt | Yes | No | No | Yes | Yes | No | No | No | No | No | No |
libsodium | No | No | No | Yes | Yes | No | No | No | No | No | No |
Mbed TLS | Yes | No | No | No | Yes | No | No | No | No | No | No |
Nettle | Yes | No | No | Yes | Yes | No | No | No | No | No | No |
OpenSSL | Yes | No | No | No | Yes | No | No | No | No | No | No |
wolfCrypt | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
These tables compare the ability to use hardware enhanced cryptography. By using the assistance of specific hardware, the library can achieve greater speeds and/or improved security than otherwise.
Implementation | PKCS #11 | PC/SC | CCID |
---|---|---|---|
Botan | Yes | No | No |
Bouncy Castle | Yes [a] | No | No |
BSAFE | Yes [b] | No | No |
cryptlib | Yes | No | No |
Crypto++ | No | No | No |
GnuTLS | Yes | No | No |
Java's default JCA/JCE providers | Yes | No [c] | No [c] |
Libgcrypt | Yes [53] | Yes [54] | Yes [54] |
libsodium | No | No | No |
Mbed TLS | Yes [55] | No | No |
OpenSSL | Yes [55] | No | No |
wolfCrypt | Yes | No | No |
Implementation | AES-NI | SSSE3, SSE4.1 | AVX, AVX2 | AVX-512 | RDRAND | VIA PadLock | Intel QuickAssist | ARMv7-A NEON | ARMv8-A cryptography instructions | Power ISA v2.03 (AltiVec [a] ) | Power ISA v2.07 (e.g., POWER8 and later [a] ) |
---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes |
BSAFE | Yes [b] | Yes [b] | Yes [b] | No | Yes [b] | No | No | No | Yes [b] | No | No |
cryptlib | Yes | Yes | Yes | No | Yes | Yes | No | No | No | No | No |
Crypto++ | Yes | Yes | Yes | No | Yes | Yes [c] | No | Yes | Yes | Yes | Yes |
GnuTLS | Yes | No | No | No | No | Yes | No | No | No | No | No |
Java's default JCA/JCE providers | Yes [d] | Yes [d] | Yes [d] | Yes [d] | Yes [d] | No | No | No | Yes [d] | No | Yes [d] |
Libgcrypt [56] | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | No | Yes |
libsodium | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes [e] | Yes | No | Yes | Yes | Yes | Yes |
wolfCrypt | Yes | Yes | Yes | No | Yes | No | Yes [57] | Yes | Yes [58] | No | No |
Implementation | Source code size (kSLOC = 1000 lines of source code) | Code to comment lines ratio |
---|---|---|
Botan | 133 [59] | 4.55 [59] |
Bouncy Castle | 1359 [60] | 5.26 [60] |
BSAFE Crypto-J | 271 [a] | 1.3 [a] |
cryptlib | 241 | 2.66 |
Crypto++ | 115 [61] | 5.74 [61] |
GnuTLS | 363 [62] | 7.30 [62] |
Java's default JCA/JCE providers | ||
Libgcrypt | 216 [63] | 6.27 [63] |
libsodium | 44 [64] | 21.92 [64] |
Mbed TLS | 105 [65] | 33.9 [65] |
Nettle | 111 [66] | 4.08 [66] |
OpenSSL | 472 [67] | 4.41 [67] |
wolfCrypt | 39 | 5.69 |
Implementation | Supported operating system | Thread safe |
---|---|---|
Botan | Linux, Windows, macOS, Android, iOS, FreeBSD, NetBSD, OpenBSD, DragonflyBSD, Solaris, AIX, QNX, Haiku | Yes |
Bouncy Castle | General Java API: J2ME, Java Runtime Environment 1.1+, Android. Java FIPS API: Java Runtime 1.5+, Android. C# API (General & FIPS): CLR 4. | |
BSAFE Crypto-J | Solaris, Linux, Android, FreeBSD, AIX, 32 and 64-bit Windows, macOS (Darwin) | Yes |
cryptlib | AMX, ARINC 653, BeOS, ChorusOS, CMSIS-RTOS/mbed-rtos, DOS, DOS32, eCOS, embOS, FreeRTOS/OpenRTOS, uItron, MQX, MVS, Nucleus, OS/2, Palm OS, QNX Neutrino, RTEMS, SMX, Tandem NonStop, Telit, ThreadX, uC/OS II, Unix (AIX, FreeBSD, HP-UX, Linux, macOS, Solaris, etc.), VDK, VM/CMS, VxWorks, Win16, Win32, Win64, WinCE/PocketPC/etc, XMK | Yes |
Crypto++ | Unix (AIX, OpenBSD, Linux, MacOS, Solaris, etc.), Win32, Win64, Android, iOS, ARM | Yes [a] |
GnuTLS | Runs on most Unix platforms and Windows [68] | ? |
Libgcrypt | All 32- and 64-bit Unix Systems (Linux, FreeBSD, NetBSD, macOS etc.), Win32, Win64, WinCE, and more | Yes [69] |
libsodium | macOS, Linux, OpenBSD, NetBSD, FreeBSD, DragonflyBSD, Android, iOS, 32 and 64-bit Windows (Visual Studio, MinGW, C++ Builder), NativeClient, QNX, JavaScript, AIX, MINIX, Solaris | Yes |
Mbed TLS | Win32/64, Unix Systems, embedded Linux, Micrium's μC/OS, FreeRTOS | ? |
OpenSSL | Solaris, IRIX, HP-UX, MPE/iX, Tru64, Linux, Android, BSD (OpenBSD, NetBSD, FreeBSD, DragonflyBSD), NextSTEP, QNX, UnixWare, SCO, AIX, 32 and 64-bit Windows (Visual Studio, MinGW, UWIN, CygWin), UEFI, macOS (Darwin), iOS, HURD, VxWorks, uClinux, VMS, DJGPP (DOS), Haiku | Yes |
wolfCrypt | Win32/64, Linux, macOS, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, WinCE, Haiku, OpenWRT, iPhone (iOS), Android, Nintendo Wii and Gamecube through DevKitPro, QNX, MontaVista, NonStop, TRON/ITRON/μITRON, Micrium's μC/OS, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, HP-UX | Yes |
The Advanced Encryption Standard (AES), also known by its original name Rijndael, is a specification for the encryption of electronic data established by the U.S. National Institute of Standards and Technology (NIST) in 2001.
In cryptography, Triple DES, officially the Triple Data Encryption Algorithm, is a symmetric-key block cipher, which applies the DES cipher algorithm three times to each data block. The 56-bit key of the Data Encryption Standard (DES) is no longer considered adequate in the face of modern cryptanalytic techniques and supercomputing power; Triple DES increases the effective security to 112 bits. A CVE released in 2016, CVE-2016-2183, disclosed a major security vulnerability in the DES and 3DES encryption algorithms. This CVE, combined with the inadequate key size of 3DES, led to NIST deprecating 3DES in 2019 and disallowing all uses by the end of 2023. It has been replaced with the more secure, more robust AES.
Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network, such as the Internet. The protocol is widely used in applications such as email, instant messaging, and voice over IP, but its use in securing HTTPS remains the most publicly visible.
OpenSSL is a software library for applications that provide secure communications over computer networks against eavesdropping, and identify the party at the other end. It is widely used by Internet servers, including the majority of HTTPS websites.
The Federal Information Processing Standard Publication 140-2,, is a U.S. government computer security standard used to approve cryptographic modules. The title is Security Requirements for Cryptographic Modules. Initial publication was on May 25, 2001, and was last updated December 3, 2002.
NSA Suite B Cryptography was a set of cryptographic algorithms promulgated by the National Security Agency as part of its Cryptographic Modernization Program. It was to serve as an interoperable cryptographic base for both unclassified information and most classified information.
SHA-2 is a set of cryptographic hash functions designed by the United States National Security Agency (NSA) and first published in 2001. They are built using the Merkle–Damgård construction, from a one-way compression function itself built using the Davies–Meyer structure from a specialized block cipher.
Network Security Services (NSS) is a collection of cryptographic computer libraries designed to support cross-platform development of security-enabled client and server applications with optional support for hardware TLS/SSL acceleration on the server side and hardware smart cards on the client side. NSS provides a complete open-source implementation of cryptographic libraries supporting Transport Layer Security (TLS) / Secure Sockets Layer (SSL) and S/MIME. NSS releases prior to version 3.14 are tri-licensed under the Mozilla Public License 1.1, the GNU General Public License, and the GNU Lesser General Public License. Since release 3.14, NSS releases are licensed under GPL-compatible Mozilla Public License 2.0.
In cryptography, Curve25519 is an elliptic curve used in elliptic-curve cryptography (ECC) offering 128 bits of security and designed for use with the Elliptic-curve Diffie–Hellman (ECDH) key agreement scheme. It is one of the fastest curves in ECC, and is not covered by any known patents. The reference implementation is public domain software.
There are various implementations of the Advanced Encryption Standard, also known as Rijndael.
Mbed TLS is an implementation of the TLS and SSL protocols and the respective cryptographic algorithms and support code required. It is distributed under the Apache License version 2.0. Stated on the website is that Mbed TLS aims to be "easy to understand, use, integrate and expand".
wolfSSL is a small, portable, embedded SSL/TLS library targeted for use by embedded systems developers. It is an open source implementation of TLS written in the C programming language. It includes SSL/TLS client libraries and an SSL/TLS server implementation as well as support for multiple APIs, including those defined by SSL and TLS. wolfSSL also includes an OpenSSL compatibility interface with the most commonly used OpenSSL functions.
Crypto++ is a free and open-source C++ class library of cryptographic algorithms and schemes written by Wei Dai. Crypto++ has been widely used in academia, student projects, open-source, and non-commercial projects, as well as businesses. Released in 1995, the library fully supports 32-bit and 64-bit architectures for many major operating systems and platforms, including Android, Apple, BSD, Cygwin, IBM AIX, Linux, MinGW, Solaris, Windows, Windows Phone and Windows RT. The project also supports compilation using C++03, C++11, C++14, and C++17 runtime libraries; and a variety of compilers and IDEs, including Borland Turbo C++, Borland C++ Builder, Clang, CodeWarrior Pro, GCC, Intel C++ Compiler (ICC), Microsoft Visual C/C++, and Sun Studio.
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 libraries. There are several TLS implementations which are free software and open source.
Libgcrypt is a cryptography library developed as a separated module of GnuPG. It can also be used independently of GnuPG, but depends on its error-reporting library Libgpg-error.
Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension that allows the application layer to negotiate which protocol should be performed over a secure connection in a manner that avoids additional round trips and which is independent of the application-layer protocols. It is used to establish HTTP/2 connections without additional round trips.
In public-key cryptography, Edwards-curve Digital Signature Algorithm (EdDSA) is a digital signature scheme using a variant of Schnorr signature based on twisted Edwards curves. It is designed to be faster than existing digital signature schemes without sacrificing security. It was developed by a team including Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang. The reference implementation is public-domain software.
Dell BSAFE, formerly known as RSA BSAFE, is a FIPS 140-2 validated cryptography library, available in both C and Java. BSAFE was initially created by RSA Security, which was purchased by EMC and then, in turn, by Dell. When Dell sold the RSA business to Symphony Technology Group in 2020, Dell elected to retain the BSAFE product line. BSAFE was one of the most common encryption toolkits before the RSA patent expired in September 2000. It also contained implementations of the RCx ciphers, with the most common one being RC4. From 2004 to 2013 the default random number generator in the library was a NIST-approved RNG standard, widely known to be insecure from at least 2006, containing a kleptographic backdoor from the American National Security Agency (NSA), as part of its secret Bullrun program. In 2013 Reuters revealed that RSA had received a payment of $10 million to set the compromised algorithm as the default option. The RNG standard was subsequently withdrawn in 2014, and the RNG removed from BSAFE beginning in 2015.
FinalCode, Inc. is a multi-national software company that provides data-centric security and information rights management (IRM) to help enterprises mitigate data leakage and meet compliance requirements. FinalCode allows users to securely collaborate and share files using any communication channel, including existing Enterprise Content Management (ECM), Cloud Storage and collaboration applications.
In cryptography, Curve448 or Curve448-Goldilocks is an elliptic curve potentially offering 224 bits of security and designed for use with the elliptic-curve Diffie–Hellman (ECDH) key agreement scheme.