* Version ?.?.? (released ????-??-??)
+** libgnutls: Removed 3DES from FIPS approved algorithms (#1353).
+ According to the section 2 of SP800-131A Rev.2, 3DES algorithm
+ will be disallowed for encryption after December 31, 2023:
+ https://csrc.nist.gov/publications/detail/sp/800-131a/rev-2/final
+
** The configure arguments for Brotli and Zstandard (zstd) support
have changed to reflect the previous help text: they are now
--with-brotli/--with-zstd respectively (#1342).
CASE(GNUTLS_CIPHER_AES_256_CBC, test_cipher,
aes256_cbc_vectors);
FALLTHROUGH;
- CASE(GNUTLS_CIPHER_3DES_CBC, test_cipher,
+ NON_FIPS_CASE(GNUTLS_CIPHER_3DES_CBC, test_cipher,
tdes_cbc_vectors);
FALLTHROUGH;
NON_FIPS_CASE(GNUTLS_CIPHER_ARCFOUR_128, test_cipher,
case GNUTLS_CIPHER_AES_192_CBC:
case GNUTLS_CIPHER_AES_128_CCM:
case GNUTLS_CIPHER_AES_256_CCM:
- case GNUTLS_CIPHER_3DES_CBC:
case GNUTLS_CIPHER_AES_128_CCM_8:
case GNUTLS_CIPHER_AES_256_CCM_8:
case GNUTLS_CIPHER_AES_128_CFB8:
dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1536", "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", 1536, 1483);
dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA256", "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA256", 1500, 1423);
- dtls_mtu_try("DTLS 1.2 with 3DES-CBC-HMAC-SHA1", "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", 1500, 1451);
+ if (!gnutls_fips140_mode_enabled())
+ dtls_mtu_try("DTLS 1.2 with 3DES-CBC-HMAC-SHA1", "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", 1500, 1451);
/* check non-CBC ciphers */
dtls_mtu_try("DTLS 1.2 with AES-128-GCM", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-GCM", 1500, 1463);
dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1518", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", 1518, 1455);
dtls_mtu_try("DTLS 1.2/EtM with AES-128-CBC-HMAC-SHA256", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA256", 1500, 1423);
- dtls_mtu_try("DTLS 1.2/EtM with 3DES-CBC-HMAC-SHA1", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", 1500, 1455);
+ if (!gnutls_fips140_mode_enabled())
+ dtls_mtu_try("DTLS 1.2/EtM with 3DES-CBC-HMAC-SHA1", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", 1500, 1455);
gnutls_global_deinit();
}
int ret;
gnutls_datum_t key;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
ret = global_init();
if (ret < 0)
fail("global_init: %d\n", ret);
65);
/* 13 + 20(sha1) + 8(iv) + 8(max pad) */
- start
- ("NONE:+VERS-DTLS1.0:+3DES-CBC:%NO_ETM:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA",
- 49);
+ if (!gnutls_fips140_mode_enabled())
+ start
+ ("NONE:+VERS-DTLS1.0:+3DES-CBC:%NO_ETM:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA",
+ 49);
+
/* 13 + 16(tag) + 4(iv) */
start
("NONE:+VERS-DTLS1.2:+AES-128-GCM:%NO_ETM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA",
unsigned int pcerts_size;
char file[TMPNAME_SIZE];
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
track_temp_files();
bin = softhsm_bin();
gnutls_x509_crt_t *crts;
unsigned int crts_size, i;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
bin = softhsm_bin();
lib = softhsm_lib();
gnutls_typed_vdata_st vdata[2];
char buf[128];
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
/* The overloading of time() seems to work in linux (ELF?)
* systems only. Disable it on windows.
*/
unsigned verify_status = 0;
gnutls_datum_t tmp;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
/* The overloading of time() seems to work in linux (ELF?)
* systems only. Disable it on windows.
*/
gnutls_pubkey_t pubkey4;
unsigned i;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
bin = softhsm_bin();
lib = softhsm_lib();
gnutls_datum_t tmp;
int idx = -1;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
/* The overloading of time() seems to work in linux (ELF?)
* systems only. Disable it on windows.
*/
gnutls_privkey_t pkey;
char file[TMPNAME_SIZE];
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
bin = softhsm_bin();
lib = softhsm_lib();
gnutls_x509_crt_t intermediate, same_dn, same_issuer;
gnutls_datum_t tmp;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
/* The overloading of time() seems to work in linux (ELF?)
* systems only. Disable it on windows.
*/
gnutls_datum_t tmp, tmp2;
size_t buf_size;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
bin = softhsm_bin();
lib = softhsm_lib();
unsigned flags;
gnutls_pkcs11_obj_t obj;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
ret = global_init();
if (ret != 0) {
fail("%d: %s\n", ret, gnutls_strerror(ret));
gnutls_certificate_credentials_t cred;
gnutls_datum_t tmp;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
/* The overloading of time() seems to work in linux (ELF?)
* systems only. Disable it on windows.
*/
gnutls_pubkey_t pubkey;
gnutls_pubkey_t pubkey2;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
bin = softhsm_bin();
lib = softhsm_lib();
gnutls_pubkey_t pubkey2;
unsigned i, sigalgo;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
bin = softhsm_bin();
lib = softhsm_lib();
unsigned int i, have_eddsa;
int ret;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
#ifdef _WIN32
exit(77);
#endif
pid_t child;
int status = 0;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
/* check if softhsm module is loadable */
(void) softhsm_lib();
int bag_encrypt_expected;
} tests[2];
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
ret = global_init();
if (ret < 0) {
fprintf(stderr, "global_init %d", ret);
size_t i;
int ret;
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
global_init();
for (i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) {
void doit(void)
{
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
#if NETTLE_VERSION_MAJOR < 3 || (NETTLE_VERSION_MAJOR == 3 && NETTLE_VERSION_MINOR <= 2)
/* These checks are enforced only on new versions of nettle */
exit(77);
start("aes128-cbc", GNUTLS_CIPHER_AES_128_CBC, 0);
start("aes192-cbc", GNUTLS_CIPHER_AES_192_CBC, 0);
start("aes256-cbc", GNUTLS_CIPHER_AES_256_CBC, 0);
- start("3des-cbc", GNUTLS_CIPHER_3DES_CBC, 0);
if (!gnutls_fips140_mode_enabled()) {
+ start("3des-cbc", GNUTLS_CIPHER_3DES_CBC, 0);
start("camellia128-gcm", GNUTLS_CIPHER_CAMELLIA_128_GCM, 1);
start("camellia256-gcm", GNUTLS_CIPHER_CAMELLIA_256_GCM, 1);
start("chacha20-poly1305", GNUTLS_CIPHER_CHACHA20_POLY1305, 1);
: ${CLI=../../src/gnutls-cli${EXEEXT}}
unset RETCODE
+if test "${GNUTLS_FORCE_FIPS_MODE}" = 1;then
+ echo "Cannot run in FIPS140-2 mode"
+ exit 77
+fi
+
if ! test -x "${CLI}"; then
exit 77
fi
: ${srcdir=.}
+if test "${GNUTLS_FORCE_FIPS_MODE}" = 1;then
+ echo "Cannot run in FIPS140-2 mode"
+ exit 77
+fi
+
tls_fuzzer_prepare() {
PRIORITY="NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+AES-128-CCM:+AES-256-CCM:+AES-128-CCM-8"
: ${srcdir=.}
+if test "${GNUTLS_FORCE_FIPS_MODE}" = 1;then
+ echo "Cannot run in FIPS140-2 mode"
+ exit 77
+fi
+
tls_fuzzer_prepare() {
VERSIONS="-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0"
PRIORITY="NORMAL:%VERIFY_ALLOW_SIGN_WITH_SHA1:+ARCFOUR-128:+3DES-CBC:+DHE-DSS:+SIGN-DSA-SHA256:+SIGN-DSA-SHA1:-CURVE-SECP192R1:${VERSIONS}:+SHA256:+SHA384:+AES-128-CCM:+AES-256-CCM:+AES-128-CCM-8:+AES-256-CCM-8"
{
.name = "server TLS 1.0: 3DES-CBC (server)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE",
.client_prio = "NORMAL:+3DES-CBC"
},
{
.name = "both TLS 1.0: 3DES-CBC (server)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE",
.client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.0"
},
{
.name = "client TLS 1.0: 3DES-CBC (client)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:+3DES-CBC",
.client_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"
},
{
.name = "both TLS 1.0: 3DES-CBC (client)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.0",
.client_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"
},
{
.name = "server TLS 1.1: 3DES-CBC (server)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE",
.client_prio = "NORMAL:+3DES-CBC"
},
{
.name = "both TLS 1.1: 3DES-CBC (server)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE",
.client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.1"
},
{
.name = "client TLS 1.1: 3DES-CBC (client)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:+3DES-CBC",
.client_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"
},
{
.name = "both TLS 1.1: 3DES-CBC (client)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.1",
.client_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"
},
{
.name = "server TLS 1.2: 3DES-CBC (server)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE",
.client_prio = "NORMAL:+3DES-CBC",
.desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"
{
.name = "both TLS 1.2: 3DES-CBC (server)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE",
.client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.2",
.desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"
{
.name = "client TLS 1.2: 3DES-CBC (client)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:+3DES-CBC",
.client_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2",
.desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"
{
.name = "both TLS 1.2: 3DES-CBC (client)",
.cipher = GNUTLS_CIPHER_3DES_CBC,
+ .not_on_fips = 1,
.server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.2",
.client_prio = "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2",
.desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"
const char *bin;
char buf[128];
+ if (gnutls_fips140_mode_enabled())
+ exit(77);
+
/* check if softhsm module is loadable */
(void) softhsm_lib();